{"version":3,"file":"main.js","mappings":"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AK4sH,YAAL,GAAoBA,YAApB;AACA,cAAKC,KAAL,GAAaA,KAAb;AACA,cAAKzJ,YAAL,GAAoBA,YAApB;AACA,cAAKrjH,QAAL,GAAgBA,QAAhB;AACA;AACR;AACA;;AACQ,cAAK6T,IAAL,GAAY,EAAZ;AACA;AACR;AACA;AACA;;AACQ,cAAK1B,IAAL,GAAY,EAAZ;AACA;AACR;AACA;AACA;;AACQ,cAAK62G,SAAL,GAAiB,EAAjB;AACA;AACR;AACA;;AACQ,cAAKplH,IAAL,GAAY,QAAZ;AACA;AACR;AACA;AACA;;AACQ,cAAKygH,QAAL,GAAgB,EAAhB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAK5gH,IAAL,GAAY,QAAZ;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKohH,UAAL,GAAkB,MAAlB;AACA;AACR;AACA;;AACQ,cAAKzhE,QAAL,GAAgB,CAAhB;AACA;AACR;AACA;AACA;;AACQ,cAAK2pE,eAAL,GAAuB,SAAvB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKC,WAAL,GAAmB,IAAIl/G,uDAAJ,EAAnB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKm/G,SAAL,GAAiB,IAAIn/G,uDAAJ,EAAjB;AACA;AACR;AACA;;AACQ,cAAKo+C,OAAL,GAAe,IAAIp+C,uDAAJ,EAAf;AACA;AACR;AACA;;AACQ,cAAKs+C,MAAL,GAAc,IAAIt+C,uDAAJ,EAAd;AACA;AACR;AACA;AACA;;AACQ,cAAK6B,IAAL,GAAY,IAAI7B,uDAAJ,EAAZ;AACA;AACR;AACA;AACA;;AACQ,cAAKpC,KAAL,GAAa,I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AK5Z,IAAL,GAAYA,IAAZ;AACA,WAAK9L,YAAL,GAAoBA,YAApB;AACA;AACR;AACA;;AACQ,WAAKktB,WAAL,eAAwB9sC,qEAAI,EAA5B;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKptF,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKu0H,aAAL,GAAqB,KAArB;AACA;AACR;AACA;AACA;;AACQ,WAAKxmG,MAAL,GAAc,GAAd;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKsqC,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;;AACQ,WAAKi3D,wBAAL,GAAgC,KAAhC;AACA;AACR;AACA;;AACQ,WAAK4O,YAAL,GAAoB,IAApB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKE,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;;AACQ,WAAK9lI,QAAL,GAAgB,CAAhB;AACA;AACR;AACA;;AACQ,WAAK38B,KAAL,GAAa,EAAb;AACA;AACR;AACA;;AACQ,WAAKk8I,eAAL,GAAuB,IAAvB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKM,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAK6B,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAKwuI,cAAL,GAAsB,IAAtB;AACA,WAAK6V,QAAL,GAAgBpyC,qEAAI,EAApB;AACA,WAAKo2B,eAAL,GAAuBlU,MAAvB;AACA,WAAKmU,gBAAL,GAAwBnU,MAAxB;AACA,WAAKoU,iBAAL,GAAyBpU,MAAzB;AACA,WAAKhhB,eAAL,GAAuBh4G,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAvB;AACA,WAAKw0J,mBAAL,GAA2Bz7B,MAA3B;AACA,WAAK2rB,mBAAL,GAA2B3rB,MAA3B;AACA,WAAKgU,IAAL,GAAYnY,qEAAS,CAACmC,QAAD,CAArB;AACA,WAAK3vD,IAAL,GAAYwtD,qEAAS,CAACoC,QAAD,CAArB;AACA,WAAKtV,cAAL,GAAsB;AAAE9iH,QAAAA,OAAO,EAAE;AAAX,OAAtB;AACA,WAAK0J,KAAL,GAAa,KAAb;AACA,WAAK0qJ,MAAL,GAAc,EAAd;AACA,WAAKnvH,MAAL,GAAc,IAAd;AACA,WAAK49E,OAAL,GAAe,KAAf;AACA,WAAKmjB,SAAL,GAAiB,EAAjB;AACA,WAAKpqB,KAAL,GAAa8P,YAAb;AACA,WAAK7P,QAAL,GAAgB4P,eAAhB;AACA,WAAK3P,SAAL,GAAiBuL,iBAAjB;AACA9O,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAK0xC,mBAAL,GAA2B,KAAKhN,aAAL,CAAmBn5F,OAAnB,CAA2BpxD,SAA3B,CAAqC,KAAKgsJ,WAAL,CAAiB7hJ,IAAjB,CAAsB,IAAtB,CAArC,CAA3B;AACA,WAAKotJ,mBAAL,CAAyBjlH,GAAzB,CAA6B,KAAKi4G,aAAL,CAAmBj5F,MAAnB,CAA0BtxD,SAA1B,CAAoC,KAAKu3E,UAAL,CAAgBptE,IAAhB,CAAqB,IAArB,CAApC,CAA7B;AACA,WAAKotJ,mBAAL,CAAyBjlH,GAAzB,CAA6B,KAAKi4G,aAAL,CAAmBf,sBAAnB,CAA0CxpJ,SAA1C,CAAoD,KAAKy3J,4BAAL,CAAkCttJ,IAAlC,CAAuC,IAAvC,CAApD,CAA7B;AACH;AACD;AACJ;AACA;AACA;;;;;WAII,eAAU;AACN,eAAO,KAAKgxI,IAAZ;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAQryG,GAAR,EAAa;AACT,aAAKqyG,IAAL,GAAYnY,qEAAS,CAACl6F,GAAG,IAAIq8F,QAAR,CAArB;AACH;;;WAWD,eAAU;AACN,eAAO,KAAK3vD,IAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WA1BI,aAAQ3sC,GAAR,EAAa;AACT,aAAK2sC,IAAL,GAAYwtD,qEAAS,CAACn6F,GAAG,IAAIu8F,QAAR,CAArB;AACH;;;WA4BD,eAAY;AACR,eAAO,KAAKg8B,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;WAbI,aAAUrtE,KAAV,EAAiB;AACb,aAAKqtE,MAAL,GAAcrtE,KAAK,IAAI,EAAvB;AACH;;;WAeD,eAAoB;AAChB,eAAO,KAAK+7B,cAAZ;AACH;AACD;AACJ;AACA;;WARI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB;AAAElQ,UAAAA,OAAO,EAAE;AAAX,SAAlB,EAAqCwlH,QAArC,CAAtB;AACH;;;WAUD,eAAe;AACX,eAAO,KAAKt3F,QAAZ;AACH;AACD;AACJ;AACA;;WARI,aAAaotB,QAAb,EAAuB;AACnB,aAAKptB,QAAL,GAAgBotB,QAAhB;AACH;;;WAWD,eAAY;AACR,eAAO,KAAKrW,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAhBI,aAAUvhC,KAAV,EAAiB;AACb,aAAKkrI,WAAL,CAAiBlrI,KAAjB;AACA,aAAKuhC,MAAL,GAAc+wF,qEAAS,CAACtyH,KAAD,CAAvB;AACH;;;WAwBD,eAAW;AACP,eAAO,KAAKk4G,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAvBI,aAASjgH,IAAT,EAAe;AACX,aAAKzD,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAlE;AACA,aAAKzD,QAAL,CAAcc,WAAd,CAA0B,KAAK0xJ,YAAL,CAAkBrlJ,aAA5C,EAA2Dg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAvE;AACA,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAU+vH,YAA9B;;AACA,YAAIhP,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAKxkH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAA/D;AACA,eAAKxkH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDg4H,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAApE;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,aAAK1kH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAArE;AACA,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAa6O,eAAvC;;AACA,YAAI5O,UAAU,KAAK,MAAnB,EAA2B;AACvB,eAAK3kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAACzgB,UAAD,CAAlE;AACH;;AACD,aAAKhB,QAAL,GAAgBgB,UAAhB;AACH;;;WA0BD,eAAe;AACX,eAAO,KAAKf,SAAZ;AACH;AACD;AACJ;AACA;;WAjBI,aAAatB,QAAb,EAAuB;AACnB,aAAKtiH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAtE;AACA,aAAKtiH,QAAL,CAAcc,WAAd,CAA0B,KAAK0xJ,YAAL,CAAkBrlJ,aAA5C,EAA2Dk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAA3E;AACA,aAAKtiH,QAAL,CAAcc,WAAd,CAA0B,KAAK0xJ,YAAL,CAAkBrlJ,aAA5C,qBAAuE,KAAKm1G,QAA5E;AACA,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAc6M,iBAA1C;;AACA,YAAIvK,WAAW,KAAK,MAApB,EAA4B;AACxB,eAAK5kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAUzgB,WAAV,CAAnE;AACA,eAAK5kH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDk4H,gBAAgB,CAAC,QAAD,EAAWzgB,WAAX,CAAxE;AACA,eAAK5kH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,qBAAoEy3G,WAApE;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;WAOD,eAAoB;AAChB,eAAO,KAAKjyF,QAAZ;AACH;AACD;AACJ;AACA;;;;WACI,eAAgB;AACZ,eAAO,KAAKs/H,aAAL,GAAqB,SAArB,GAAiC,YAAxC;AACH;;;WACD,eAAe;AACX,eAAO,KAAKtnC,OAAZ;AACH;WACD,aAAan/G,KAAb,EAAoB;AAChB,aAAKm/G,OAAL,GAAen/G,KAAf;;AACA,YAAI,CAAC,KAAKw/G,OAAV,EAAmB;AACf;AACH;;AACD,YAAMp9G,OAAO,GAAG,KAAKo9G,OAAL,CAAa79G,aAA7B;;AACA,YAAI3B,KAAJ,EAAW;AACP,eAAKxL,QAAL,CAAcK,QAAd,CAAuBuN,OAAvB,EAAgC,SAAhC;AACH,SAFD,MAGK;AACD,eAAK5N,QAAL,CAAcc,WAAd,CAA0B8M,OAA1B,EAAmC,SAAnC;AACH;AACJ;;;WACD,eAAW;AACP,eAAO,KAAK4D,KAAZ;AACH;WACD,aAASC,IAAT,EAAe;AAAA;;AACX,YAAIA,IAAI,KAAK,KAAKkhB,QAAL,IAAiB,KAAK+K,QAA3B,CAAR,EAA8C;AAC1C;AACH;;AACD,YAAM+0H,QAAQ,GAAG,CAAChhJ,IAAD,KAAU,CAAC,KAAKD,KAAN,IAAe,CAACsuG,6EAAY,CAAC,KAAKp0G,KAAN,CAAtC,CAAjB;;AACA,YAAI,CAAC+mJ,QAAL,EAAe;AACX,eAAKrwG,IAAL,CAAUzR,GAAV,CAAc,YAAM;AAChB,mBAAI,CAAC+hH,WAAL,CAAiBjhJ,IAAjB;AACH,WAFD;AAGH,SAJD,MAKK;AACD,eAAKihJ,WAAL,CAAiBjhJ,IAAjB;AACH;AACJ;;;WACD,eAAY;AACR,eAAO,KAAK4zI,aAAL,CAAmB1nI,KAA1B;AACH;;;WACD,eAAmB;AACf,eAAO,KAAK0nI,aAAL,CAAmB8W,YAA1B;AACH;AACD;AACJ;AACA;AACA;;;;aACI,mBAAU;AACN,eAAO,CAAC,KAAK3wJ,KAAN,IAAe,KAAKmS,KAAL,CAAWg1I,OAAX,EAAtB;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW;AAAA;;AACP,aAAK3M,8BAAL,GAAsC,KAAK3iC,YAAL,CACjCv5G,OADiC,CACzBhP,SADyB,CACf;AAAA,iBAAM,OAAI,CAACmF,GAAL,CAASS,YAAT,EAAN;AAAA,SADe,CAAtC;AAEA,aAAKuK,OAAL,GAAe,KAAKsS,QAAL,CAAcrG,GAAd,CAAkBxM,sDAAlB,EAA6B,IAA7B,CAAf;;AACA,YAAI,KAAKsgH,OAAT,EAAkB;AACd,eAAKhrH,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAL,CAAa79G,aAA3C,EAA0D,UAA1D;AACA,eAAKi1C,IAAL,CAAUrS,iBAAV,CAA4B,YAAM;AAC9B,mBAAI,CAACk+F,UAAL;AACH,WAFD;AAGH;AACJ;AACD;AACJ;AACA;;;;aACI,2BAAkB;AACd,aAAK6gB,mBAAL;AACH;AACD;AACJ;AACA;;;;aACI,qBAAYhlJ,OAAZ,EAAqB;AACjB,YAAIA,OAAO,CAAC85B,GAAR,IAAe95B,OAAO,CAAC65B,GAAvB,IAA8B75B,OAAO,CAACyrI,eAAtC,IAAyDzrI,OAAO,CAACkjJ,wBAArE,EAA+F;AAC3F,eAAK0Q,mBAAL,GAA2B,KAAKnoB,eAAL,GAAuB+d,kBAAkB,CAAC,KAAK1vH,GAAN,EAAW,KAAKD,GAAhB,CAAzC,GAAgEs+F,MAA3F;AACA,eAAK2rB,mBAAL,GAA2B,KAAKZ,wBAAL,GAAgC3F,uBAAuB,EAAvD,GAA4DplB,MAAvF;AACA,eAAKoU,iBAAL;AACH;;AACD,YAAIvsI,OAAO,CAAC2hD,MAAZ,EAAoB;AAChB,eAAKkyG,YAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,aAAKnwB,QAAL,GAAgB,KAAhB;AACA,aAAK/7H,IAAL,GAAY,KAAZ;;AACA,YAAI,KAAKu0I,8BAAT,EAAyC;AACrC,eAAKA,8BAAL,CAAoC/qJ,WAApC;AACH;;AACD,YAAI,KAAK23J,sBAAT,EAAiC;AAC7B,eAAKA,sBAAL,CAA4B33J,WAA5B;AACH;;AACD,aAAK6yI,SAAL,CAAe5sI,OAAf,CAAuB,UAAAmlJ,cAAc;AAAA,iBAAIA,cAAc,EAAlB;AAAA,SAArC;AACA,aAAKgM,mBAAL,CAAyBp3J,WAAzB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAcJ,KAAd,EAAqB;AACjB,YAAQsvH,MAAR,GAA4BtvH,KAA5B,CAAQsvH,MAAR;AAAA,YAAgBvxB,OAAhB,GAA4B/9F,KAA5B,CAAgB+9F,OAAhB;;AACA,YAAIA,OAAO,KAAKgnB,wEAAhB,EAA6B;AACzB,eAAKnuG,IAAL,GAAY,KAAZ;AACA;AACH;;AACD,YAAI04G,MAAJ,EAAY;AACR,cAAIvxB,OAAO,KAAKgnB,yEAAhB,EAA8B;AAC1B,iBAAKnuG,IAAL,GAAY,KAAZ;AACH;;AACD,cAAImnF,OAAO,KAAKgnB,2EAAZ,IAA8B,CAAC,KAAKnuG,IAAxC,EAA8C;AAC1C,iBAAKA,IAAL,GAAY,IAAZ;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAWjG,KAAX,EAAkB;AACd,aAAKkrI,WAAL,CAAiBlrI,KAAjB;AACA,aAAKA,KAAL,GAAasyH,qEAAS,CAACtyH,KAAD,CAAtB;AACA,aAAKvL,GAAL,CAASS,YAAT;;AACA,YAAI,CAAC8K,KAAD,IAAU,KAAKmS,KAAnB,EAA0B;AACtB,eAAKA,KAAL,CAAWo4E,WAAX,GAAyB,KAAKA,WAA9B;AACA,eAAKp4E,KAAL,CAAWquB,UAAX,CAAsBxgC,KAAtB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKkqG,eAAL,GAAuBlqG,EAAvB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKmqG,gBAAL,GAAwBnqG,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,UAAjB,EAA6B;AACzB,aAAKvZ,QAAL,GAAgBuZ,UAAhB;AACA,aAAKjsC,GAAL,CAASS,YAAT;AACH;AACD;AACJ;AACA;;;;aACI,kBAASuK,OAAT,EAAkB;AACd,eAAO,KAAKyyJ,mBAAL,CAAyBzyJ,OAAzB,KAAqC,KAAK2iJ,mBAAL,CAAyB3iJ,OAAzB,EAAkC,KAAK0S,KAAL,IAAc,KAAKA,KAAL,CAAW8vI,gBAA3D,CAA5C;AACH;AACD;AACJ;AACA;;;;aACI,mCAA0BxhH,EAA1B,EAA8B;AAC1B,aAAKoqG,iBAAL,GAAyBpqG,EAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAKtuB,KAAL,CAAWy/B,KAAX;AACH;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,SAAC,KAAK++G,YAAL,IAAqB,KAAKx+I,KAA3B,EAAkC,MAAlC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,gBAAOlM,IAAP,EAAa;AAAA;;AACT,YAAI,KAAKkhB,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,aAAKujF,eAAL,CAAqBpoH,IAArB,CAA0B,YAAM;AAC5B,iBAAI,CAAC00H,OAAL,CAAc97G,IAAI,KAAKsX,SAAV,GAAuB,CAAC,OAAI,CAACtX,IAA7B,GAAoCA,IAAjD;AACH,SAFD;AAGH;AACD;AACJ;AACA;;;;WACI,eAAa;AACT,eAAO,KAAKA,IAAZ;AACH;AACD;AACJ;AACA;;;;WACI,eAAe;AACX,YAAQo3E,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;AACD;AACJ;AACA;;;;aACI,sBAAar9E,KAAb,EAAoB;AAAA;;AAChB,YAAIwyH,mEAAO,CAAC,KAAKxyH,KAAN,EAAaA,KAAb,CAAX,EAAgC;AAC5B,eAAKqnJ,UAAL;AACA,eAAKphJ,IAAL,GAAY,KAAZ;AACA;AACH;;AACD,aAAKjG,KAAL,GAAasyH,qEAAS,CAACtyH,KAAD,CAAtB;AACA,aAAK42C,IAAL,CAAUzR,GAAV,CAAc,YAAM;AAChB,iBAAI,CAACkiH,UAAL;;AACA,iBAAI,CAACphJ,IAAL,GAAY,KAAZ;;AACA,iBAAI,CAAC0kI,eAAL,CAAqBrY,qEAAS,CAACtyH,KAAD,CAA9B;;AACA,iBAAI,CAACqqI,WAAL,CAAiBnhI,IAAjB,CAAsBopH,qEAAS,CAACtyH,KAAD,CAA/B;AACH,SALD;AAMH;AACD;AACJ;AACA;;;;aACI,wBAAe;AACX,aAAKiG,IAAL,GAAY,KAAZ;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBjG,KAAlB,EAAyB;AACrB,YAAMk8C,GAAG,GAAG,KAAK/pC,KAAL,CAAW2vI,cAAX,CAA0B3zI,IAA1B,GAAiCnO,KAAjC,GAAyC,KAAKunJ,SAAL,CAAevnJ,KAAf,CAArD;AACA,aAAKsnJ,YAAL,CAAkBprG,GAAlB;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgBiU,IAAhB,EAAsB;AAClBA,QAAAA,IAAI,CAAC5sD,cAAL;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgBlU,KAAhB,EAAuB;AACnB,YAAI,KAAK83B,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD7iC,QAAAA,KAAK,CAACkU,cAAN;AACA,aAAK8jJ,UAAL,GALmB,CAMnB;AACA;;AACA,aAAK/L,WAAL;AACA,aAAKr1I,IAAL,GAAY,CAAC,KAAKA,IAAlB;AACH;AACD;AACJ;AACA;;;;WACI,eAAmB;AACf,eAAO,CACH,SADG,EAEH,SAFG,EAGLqtF,MAHK,CAGE,KAAKmvB,aAAL,CAAmBpD,UAAnB,IAAiC,EAHnC,CAAP;AAIH;AACD;AACJ;AACA;;;;aACI,uBAAclxG,IAAd,EAAoB;AAChB,eAAOinH,OAAO,CAACd,aAAD,EAAgBnmH,IAAhB,CAAd;AACH;AACD;AACJ;AACA;;;;aACI,mBAAUnO,KAAV,EAAiB;AACb,eAAO,KAAKA,KAAL,IAAcA,KAAd,GAAsBo1H,OAAO,CAAC,KAAKp1H,KAAN,EAAaA,KAAb,CAA7B,GAAmDA,KAA1D;AACH;;;aACD,qBAAYiG,IAAZ,EAAkB;AACd,YAAM5W,KAAK,GAAG,IAAIksH,gBAAJ,EAAd;;AACA,YAAI,CAAC,KAAKv1G,KAAN,IAAeC,IAAnB,EAAyB;AACrB,eAAK9B,IAAL,CAAU+E,IAAV,CAAe7Z,KAAf;AACH,SAFD,MAGK,IAAI,KAAK2W,KAAL,IAAc,CAACC,IAAnB,EAAyB;AAC1B,eAAK/F,KAAL,CAAWgJ,IAAX,CAAgB7Z,KAAhB;AACH;;AACD,YAAIA,KAAK,CAACotH,kBAAN,EAAJ,EAAgC;AAC5B;AACH;;AACD,aAAKsF,OAAL,CAAa97G,IAAb;;AACA,aAAKuhJ,WAAL;AACH;;;aACD,iBAAQvhJ,IAAR,EAAc;AAAA;;AACV,YAAIA,IAAI,KAAK,KAAKjD,MAAlB,EAA0B;AACtB;AACH;;AACD,aAAKgD,KAAL,GAAaC,IAAb;AACA,aAAKxR,GAAL,CAASS,YAAT;;AACA,YAAI+Q,IAAJ,EAAU;AACN,cAAMggC,SAAS,GAAG,KAAK4xE,YAAL,CAAkBW,GAAlB,GAAwB,OAAxB,GAAkC,MAApD;AACA,eAAK8J,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,YAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnC2D,YAAAA,WAAW,EAAE;AAAEL,cAAAA,QAAQ,EAAE,QAAZ;AAAsBD,cAAAA,UAAU,EAAE58E;AAAlC,aAFsB;AAGnC3pC,YAAAA,OAAO,EAAE,KAAKmmH,aAAL,CAAmBnmH,OAHO;AAInC+gF,YAAAA,QAAQ,EAAE,KAAKA,QAJoB;AAKnC9pB,YAAAA,OAAO,EAAE,KAAK6vD,aALqB;AAMnCV,YAAAA,UAAU,EAAE;AAAEI,cAAAA,QAAQ,EAAE,KAAZ;AAAmBD,cAAAA,UAAU,EAAE58E;AAA/B,aANuB;AAOnCo5E,YAAAA,UAAU,EAAE,KAAKI,YAPkB;AAQnC2I,YAAAA,YAAY,EAAE;AARqB,WAAvB,CAAhB;AAUA,eAAK9F,QAAL,CAAcK,YAAd,CAA2BrrH,YAA3B,CAAwC,IAAxC,EAA8C,KAAKqvJ,QAAnD;AACA,eAAKrkC,QAAL,CAAce,wBAAd,CAAuC/zH,SAAvC,CAAiD;AAAA,mBAAM,OAAI,CAAC2W,IAAL,GAAY,KAAlB;AAAA,WAAjD;AACH,SAdD,MAeK;AACD,eAAKq8G,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;AACH;AACJ;;;aACD,sBAAa;AACT,YAAI,KAAK6R,YAAT,EAAuB;AACnB;AACH;;AACD,aAAKhiH,KAAL,CAAWy/B,KAAX;AACH;;;aACD,uBAAc;AACV,YAAI,CAAC,KAAKowF,QAAV,EAAoB;AAChB;AACH;;AACD,YAAI,KAAK/7H,IAAT,EAAe;AACX,cAAI,CAAC,KAAK0qJ,YAAV,EAAwB;AACpB,iBAAKl8J,GAAL,CAASoC,aAAT;AACH;;AACD,cAAI,KAAKmrI,QAAT,EAAmB;AACf,iBAAK2uB,YAAL,CAAkB/+G,KAAlB;AACH;AACJ,SAPD,MAQK,IAAI,CAAC,KAAKuiF,YAAV,EAAwB;AACzB,eAAKhiH,KAAL,CAAWy/B,KAAX;AACH,SAFI,MAGA,IAAI,CAAC,KAAKz/B,KAAL,CAAW6vH,QAAhB,EAA0B;AAC3B,eAAKn7D,UAAL;AACH;AACJ;;;aACD,qBAAY7mE,KAAZ,EAAmB;AACf,YAAI,CAACi0G,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAIj0G,KAAK,IAAI,EAAEA,KAAK,YAAYmG,IAAnB,CAAb,EAAuC;AACnC,gBAAM,IAAIsO,KAAJ,yEAA2Eq9I,gBAA3E,+BAAN;AACH;AACJ;;;aACD,wBAAe;AACX,YAAI,CAAC79C,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAMm+C,uBAAuB,GAAG,KAAKnyB,IAAL,CAAUke,eAAV,CAA0B,KAAKl+F,MAA/B,EAAuCr1C,IAAvC,CAA4C,UAAAkkC,IAAI;AAAA,iBAAI,CAACkjH,YAAY,CAAChnJ,IAAb,CAAkB8jC,IAAI,CAAC12C,IAAvB,CAAL;AAAA,SAAhD,CAAhC;;AACA,YAAIg6J,uBAAJ,EAA6B;AACzB,gBAAM,IAAI39I,KAAJ,2FAA6Fs9I,gBAA7F,EAAN;AACH;AACJ;;;aACD,sBAAa;AACT,YAAM3vJ,OAAO,GAAG,KAAKo9G,OAAL,CAAa79G,aAA7B;AACA,aAAK2gI,SAAL,CAAer9H,IAAf,CAAoB,KAAKzQ,QAAL,CAAc0tE,MAAd,CAAqB9/D,OAArB,EAA8B,SAA9B,EAAyC,KAAKo5I,aAAL,CAAmB/hJ,IAAnB,CAAwB,IAAxB,CAAzC,CAApB;;AACA,YAAIi9H,iBAAiB,EAArB,EAAyB;AACrB,eAAK0wB,sBAAL,GAA8BvoJ,gDAAS,CAACtP,MAAD,EAAS,MAAT,CAAT,CAA0BD,SAA1B,CAAoC,KAAKm4J,gBAAL,CAAsBhuJ,IAAtB,CAA2B,IAA3B,CAApC,CAA9B;AACH;AACJ;;;aACD,4BAAmB;AACf,YAAI,CAAC,KAAKuJ,MAAV,EAAkB;AACd;AACH;;AACD,aAAKiD,IAAL,GAAY,KAAZ;AACH;;;aACD,uBAAc;AAAA;;AACV,YAAI,KAAK+7H,QAAT,EAAmB;AACf;AACH;;AACD,aAAKA,QAAL,GAAgB,IAAhB;;AACA,YAAI1tB,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,eAAK9J,IAAL,CAAUzR,GAAV,CAAc,YAAM;AAChB,mBAAI,CAACub,OAAL,CAAax3C,IAAb;AACH,WAFD;AAGH;AACJ;;;aACD,oBAAWinD,IAAX,EAAiB;AAAA;;AACb,YAAMtb,aAAa,GAAGsb,IAAI,IAAI2kE,kBAAkB,CAAC3kE,IAAD,CAAhD;;AACA,YAAItb,aAAa,KAAK,KAAK1iC,KAAL,CAAWu1I,eAAX,CAA2B7yG,aAA3B,KACjB,KAAK87G,YAAL,IAAqB,KAAKA,YAAL,CAAkBjJ,eAAlB,CAAkC7yG,aAAlC,CADT,CAAjB,EAC8E;AAC1E;AACH;;AACD,YAAIy/D,6EAAY,CAAC,KAAK1zD,MAAN,CAAZ,IAA8B,KAAK36C,IAAL,IAAaquG,6EAAY,CAAC,KAAKp0G,KAAN,CAAvD,IAAwE00H,kBAAkB,CAAC,KAAKn1H,OAAN,CAA9F,EAA8G;AAC1G,eAAKm3C,IAAL,CAAUzR,GAAV,CAAc,YAAM;AAChB,mBAAI,CAACwiH,aAAL;;AACA,mBAAI,CAAClzJ,GAAL,CAASS,YAAT;AACH,WAHD;AAIH,SALD,MAMK;AACD,eAAKyyJ,aAAL;AACH;AACJ;;;aACD,yBAAgB;AACZ,aAAK3lB,QAAL,GAAgB,KAAhB,CADY,CACW;;AACvB,aAAK/7H,IAAL,GAAY,KAAZ;AACA,aAAK2kI,gBAAL;AACA,aAAKhqF,MAAL,CAAY13C,IAAZ;AACH;;;aACD,wCAA+B;AAAA;;AAC3B,aAAKzU,GAAL,CAASS,YAAT;AACA,aAAK0hD,IAAL,CAAUzR,GAAV,CAAc;AAAA,iBAAM,OAAI,CAAC0lG,iBAAL,EAAN;AAAA,SAAd;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAK5yI,IAAT,EAAe;AACX,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAA/D;AACA,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDg4H,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAApE;AACH;;AACD,YAAI,KAAKihH,OAAT,EAAkB;AACd,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAAlE;AACH;;AACD,YAAI,KAAKpC,QAAT,EAAmB;AACf,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAnE;AACA,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAAxE;AACA,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,qBAAoE,KAAKm1G,QAAzE;AACH;AACJ;;;;;;AAELm7C,EAAAA,mBAAmB,CAACn4H,IAApB;AAAA,qBAAiHm4H,mBAAjH,EAniWsGviK,gEAmiWtG,CAAsJA,kDAAtJ,GAniWsGA,gEAmiWtG,CAA4K0iI,8EAA5K,GAniWsG1iI,gEAmiWtG,CAAiNA,6DAAjN,GAniWsGA,gEAmiWtG,CAAkPmE,wEAAlP,GAniWsGnE,gEAmiWtG,CAA8QA,sDAA9Q,GAniWsGA,gEAmiWtG,CAAwSA,qDAAxS,GAniWsGA,gEAmiWtG,CAAiUA,oDAAjU,GAniWsGA,gEAmiWtG,CAAyVkpJ,aAAzV,GAniWsGlpJ,gEAmiWtG,CAAmXkE,sEAAnX,GAniWsGlE,gEAmiWtG,CAA8Yk2J,aAA9Y;AAAA;;AACAqM,EAAAA,mBAAmB,CAACz1H,IAApB,kBApiWsG9sC,gEAoiWtG;AAAA,UAAqGuiK,mBAArG;AAAA;AAAA;AAAA;AApiWsGviK,QAAAA,0DAoiWtG,UAUkHkP,4DAVlH;AApiWsGlP,QAAAA,0DAoiWtG;AApiWsGA,QAAAA,0DAoiWtG;AAAA;;AAAA;AAAA;;AApiWsGA,QAAAA,6DAoiWtG,MApiWsGA,0DAoiWtG;AApiWsGA,QAAAA,6DAoiWtG,MApiWsGA,0DAoiWtG;AApiWsGA,QAAAA,6DAoiWtG,MApiWsGA,0DAoiWtG;AAAA;AAAA;AAAA;AAAA;AAAA;AApiWsGA,QAAAA,0DAoiWtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eApiWsGA,iEAoiWtG,CAA28B,CACn8B;AAAEoD,MAAAA,OAAO,EAAEguB,8DAAX;AAA8Bgf,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMsyI,mBAAN;AAAA,OAAD,CAArD;AAAkFj/J,MAAAA,KAAK,EAAE;AAAzF,KADm8B,EAEn8B;AAAEF,MAAAA,OAAO,EAAEiuB,0DAAX;AAA0B+e,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMsyI,mBAAN;AAAA,OAAD,CAAjD;AAA8Ej/J,MAAAA,KAAK,EAAE;AAArF,KAFm8B,EAGn8B;AAAEF,MAAAA,OAAO,EAAEk/H,uEAAX;AAAuBlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMsyI,mBAAN;AAAA,OAAD;AAA9C,KAHm8B,EAIn8Bx9C,8EAJm8B,EAKn8B;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KALm8B,EASn8B2lJ,aATm8B,CAA38B,GApiWsGlpJ,mEAoiWtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AApiWsGA,QAAAA,iEA+iW9F,MAXR;AApiWsGA,QAAAA,6DAskW9F,4BAlCR;AApiWsGA,QAAAA,yDA4lW1F;AAAA,iBAAe,6BAAf;AAAA,UAxDZ;AApiWsGA,QAAAA,2DA6lW7F,EAzDT;AApiWsGA,QAAAA,6DA8lW9F,mBA1DR;AApiWsGA,QAAAA,wDA0mW1F,cAtEZ;AApiWsGA,QAAAA,2DA2mW9F,EAvER;AApiWsGA,QAAAA,yDA4mW9F,+EA5mW8FA,qEA4mW9F,CAxER;AApiWsGA,QAAAA,iEAyoW9F,YArGR;AAAA;;AAAA;AApiWsGA,QAAAA,wDAwkW1F,GApCZ;AApiWsGA,QAAAA,yDAwkW1F,slBApCZ;AApiWsGA,QAAAA,wDAomW1F,GAhEZ;AApiWsGA,QAAAA,yDAomW1F,8BApmW0FA,8DAomW1F,mEAhEZ;AApiWsGA,QAAAA,0DAkmW1F,uFA9DZ;AAAA;AAAA;AAAA,iBAsG4C0xJ,kBAtG5C,EAsG+gB+O,qBAtG/gB,EAsGqwByB,mCAtGrwB,EAsG22BC,oCAtG32B,EAsG28Bj+B,0FAtG38B;AAAA;AAAA;AAAA;SA9vBMq+B;;;AAq2BN;AAAA;AAAA;AAgMA;AACA;AACA;;;IACMnxC;MAAAA;;;;;;;;;;;;IAAiBnM;;AAEvBmM,EAAAA,QAAQ,CAAChnF,IAAT;AAAA;AAAA;AAAA,gEAh1WsGpqC,oEAg1WtG,CAAsGoxH,QAAtG,SAAsGA,QAAtG;AAAA;AAAA;;AACAA,EAAAA,QAAQ,CAACxmF,IAAT,kBAj1WsG5qC,gEAi1WtG;AAAA,UAA0FoxH,QAA1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAj1WsGpxH,yEAi1WtG;AAAA;SAHMoxH;;;AAIN;AAAA;AAAA;AAoCA;AACA;AACA;;;IACMuxC;MAAAA;;;;;AACF,wCAAY74I,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,cAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;IAJoCsnG;;AAMzCuxC,EAAAA,0BAA0B,CAACv4H,IAA3B;AAAA,qBAAwHu4H,0BAAxH,EA/3WsG3iK,gEA+3WtG,CAAoK0iI,8EAApK;AAAA;;AACAigC,EAAAA,0BAA0B,CAAC/3H,IAA3B,kBAh4WsG5qC,gEAg4WtG;AAAA,UAA4G2iK,0BAA5G;AAAA;AAAA,eAh4WsG3iK,iEAg4WtG,CAAuM,CAC/L;AACIoD,MAAAA,OAAO,EAAEguH,QADb;AAEIhhF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM0yI,0BAAN;AAAA,OAAD;AAF3B,KAD+L,CAAvM,GAh4WsG3iK,yEAg4WtG;AAAA;SAPM2iK;;;AAaN;AAAA;AAAA;;AAaA,IAAMC,gBAAgB,GAAG,IAAIvnJ,MAAJ,WAAc68I,SAAS,CAAC3xH,IAAxB,cAAgC2xH,SAAS,CAAC1+E,MAA1C,cAAoD0+E,SAAS,CAAC3yH,MAA9D,cAAwE2yH,SAAS,CAACC,SAAlF,cAAzB;AACA,IAAM0K,cAAc,GAAG,sGAAvB;AACA,IAAMC,gBAAgB,GAAG,iGAAzB;AACA,IAAMC,kBAAkB,GAAG,MAA3B;AACA,IAAMC,wBAAwB,GAAG,GAAjC;AACA,IAAMC,2BAA2B,GAAG,GAApC;AACA,IAAMC,kBAAkB,GAAG,EAA3B;AACA;AACA;AACA;;IACMC;MAAAA;AACF,qCAAYxxC,YAAZ,EAA0B4e,IAA1B,EAAgCxrI,GAAhC,EAAqColJ,aAArC,EAAoD3nE,MAApD,EAA4DstC,OAA5D,EAAqE2U,YAArE,EAAmFtc,YAAnF,EAAiGkqB,oBAAjG,EAAuHvtI,QAAvH,EAAiI;AAAA;;AAC7H,WAAK6sH,YAAL,GAAoBA,YAApB;AACA,WAAK4e,IAAL,GAAYA,IAAZ;AACA,WAAKxrI,GAAL,GAAWA,GAAX;AACA,WAAKolJ,aAAL,GAAqBA,aAArB;AACA,WAAK3nE,MAAL,GAAcA,MAAd;AACA,WAAKstC,OAAL,GAAeA,OAAf;AACA,WAAK2U,YAAL,GAAoBA,YAApB;AACA,WAAKtc,YAAL,GAAoBA,YAApB;AACA,WAAKkqB,oBAAL,GAA4BA,oBAA5B;AACA,WAAKvtI,QAAL,GAAgBA,QAAhB;AACA;AACR;AACA;;AACQ,WAAKs+J,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK3V,eAAL,GAAuByV,kBAAvB;AACA;AACR;AACA;;AACQ,WAAKvR,WAAL,eAAwB9sC,qEAAI,EAA5B;AACA;AACR;AACA;;AACQ,WAAK1mH,KAAL,GAAa,EAAb;AACA;AACR;AACA;AACA;;AACQ,WAAKs5B,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKu0H,aAAL,GAAqB,KAArB;AACA;AACR;AACA;AACA;;AACQ,WAAK2J,YAAL,GAAoB,IAApB;AACA;AACR;AACA;AACA;;AACQ,WAAK/sE,KAAL,GAAa,EAAb;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKq2C,YAAL,GAAoB,UAApB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK8sB,yBAAL,GAAiC,KAAjC;AACA;AACR;AACA;AACA;;AACQ,WAAKn5G,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;AACA;;AACQ,WAAK08F,eAAL,GAAuB,IAAvB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK2c,uBAAL,GAA+B,IAA/B;AACA;AACR;AACA;;AACQ,WAAKlF,wBAAL,GAAgC,KAAhC;AACA;AACR;AACA;AACA;;AACQ,WAAKnX,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK6B,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKimE,SAAL,GAAiBkqF,kBAAjB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKM,kBAAL,GAA0BJ,2BAA1B;AACA;AACR;AACA;;AACQ,WAAKK,eAAL,GAAuB1gC,qEAAS,CAACmC,QAAD,CAAhC;AACA;AACR;AACA;;AACQ,WAAKw+B,eAAL,GAAuB3gC,qEAAS,CAACoC,QAAD,CAAhC;AACA;AACR;AACA;;AACQ,WAAKw+B,aAAL,GAAqB,IAArB;AACA;AACR;AACA;;AACQ,WAAKC,WAAL,GAAmB7gC,qEAAS,CAACiC,QAAD,CAA5B;AACA;AACR;AACA;;AACQ,WAAK6+B,WAAL,GAAmBr6B,qBAAqB,CAACvE,QAAD,CAAxC;AACA,WAAKpV,cAAL,GAAsB;AAAE9iH,QAAAA,OAAO,EAAE;AAAX,OAAtB;AACA,WAAKilC,MAAL,GAAc,IAAd;AACA,WAAK8xH,OAAL,GAAeX,wBAAf;AACA,WAAKY,SAAL,GAAiB,CAAjB;AACA,WAAKC,WAAL,GAAmBd,kBAAnB;AACA,WAAKhoB,IAAL,GAAY3R,gBAAgB,CAACvE,QAAD,EAAWE,QAAX,CAA5B;AACA,WAAK3vD,IAAL,GAAYg0D,gBAAgB,CAACtE,QAAD,EAAWE,QAAX,CAA5B;AACA,WAAK8+B,SAAL,GAAiB,KAAjB;AACA,WAAK5oB,gBAAL,GAAwBnU,MAAxB;AACA,WAAKkU,eAAL,GAAuBlU,MAAvB;AACA,WAAKoU,iBAAL,GAAyBpU,MAAzB;AACA,WAAKqU,aAAL,GAAqBrU,MAArB;AACA,WAAKsU,aAAL,GAAqBtU,MAArB;AACA,WAAKmwB,uBAAL,GAA+BnwB,MAA/B;AACA,WAAK2rB,mBAAL,GAA2B3rB,MAA3B;AACA,WAAKpP,aAAL,GAAqB,IAAIzS,+CAAJ,EAArB;AACA,WAAKsD,KAAL,GAAa8P,YAAb;AACA,WAAK7P,QAAL,GAAgB4P,eAAhB;AACA,WAAK3P,SAAL,GAAiBuL,iBAAjB;AACA9O,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACH;AACD;AACJ;AACA;;;;;WACI,eAAoB;AAChB,eAAO,KAAKhuF,QAAZ;AACH;AACD;AACJ;AACA;;;;WACI,eAAY;AACR,eAAO,KAAK0yH,aAAL,CAAmB1nI,KAA1B;AACH;AACD;AACJ;AACA;;;;WACI,eAAe;AACX,eAAO,KAAK0nI,aAAL,CAAmBtvG,QAA1B;AACH;AACD;AACJ;AACA;;;;WACI,eAAmB;AACf,eAAO,KAAKsvG,aAAL,CAAmB8W,YAA1B;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WAOI,eAAY;AACR,eAAO,KAAKpvH,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAlBI,aAAUvhC,KAAV,EAAiB;AACb,aAAKkrI,WAAL,CAAiBlrI,KAAjB;AACA,aAAKuhC,MAAL,GAAc+wF,qEAAS,CAACtyH,KAAD,CAAvB;AACA,aAAKyzJ,gBAAL,CAAsBzzJ,KAAtB;AACA,aAAKvL,GAAL,CAASS,YAAT;AACH;;;WAmBD,eAAa;AACT,eAAO,KAAKm+J,OAAZ;AACH;AACD;AACJ;AACA;;WAVI,aAAWpzG,MAAX,EAAmB;AACf,aAAKozG,OAAL,GAAepzG,MAAf;AACA,YAAM+iG,aAAa,GAAG,KAAK0Q,gBAAL,CAAsBzzG,MAAtB,CAAtB;AACA,aAAK8yG,kBAAL,GAA0B,KAAKY,qBAAL,CAA2B3Q,aAA3B,CAA1B;AACH;;;WAYD,eAAe;AACX,eAAO,KAAK77H,QAAL,GAAgB,CAAC,CAAjB,GAAqB,KAAKmsI,SAAjC;AACH;AACD;AACJ;AACA;AACA;;WAXI,aAAatzJ,KAAb,EAAoB;AAChB,YAAMwqB,QAAQ,GAAG2uG,MAAM,CAACn5H,KAAD,CAAvB;AACA,YAAMmvC,YAAY,GAAG,CAArB;AACA,aAAKmkH,SAAL,GAAiB,CAAC96H,KAAK,CAAChO,QAAD,CAAN,GAAmBA,QAAnB,GAA8B2kB,YAA/C;AACH;;;WAYD,eAAoB;AAChB,eAAO,KAAKkrG,cAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAfI,aAAkBr6I,KAAlB,EAAyB;AACrB,aAAKq6I,cAAL,GAAsBr6I,KAAtB;AACA,aAAK+hI,oBAAL,CAA0BqJ,UAA1B,CAAqCprI,KAArC;AACH;;;WAgBD,eAAoB;AAChB,eAAO,KAAKo/G,cAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;WAZI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB;AAAElQ,UAAAA,OAAO,EAAE;AAAX,SAAlB,EAAqCwlH,QAArC,CAAtB;AACH;;;WAkBD,eAAU;AACN,eAAO,KAAK2oB,IAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;WAhBI,aAAQzqI,KAAR,EAAe;AACX,YAAI,CAAC01G,SAAS,CAAC11G,KAAD,CAAd,EAAuB;AACnB;AACH;;AACD,aAAKyqI,IAAL,GAAYnY,qEAAS,CAACtyH,KAAD,CAArB;AACA,aAAKmzJ,WAAL,GAAmB/kJ,mEAAO,CAACpO,KAAD,CAA1B;AACH;;;WAkBD,eAAU;AACN,eAAO,KAAK8kE,IAAZ;AACH;AACD;AACJ;AACA;;WAZI,aAAQ9kE,KAAR,EAAe;AACX,YAAI,CAAC01G,SAAS,CAAC11G,KAAD,CAAd,EAAuB;AACnB;AACH;;AACD,aAAK8kE,IAAL,GAAYwtD,qEAAS,CAACtyH,KAAD,CAArB;AACA,aAAKozJ,WAAL,GAAmBr6B,qBAAqB,CAAC/4H,KAAD,CAAxC;AACH;;;WAOD,eAAa;AACT,eAAO01G,SAAS,CAAC,KAAK4M,QAAN,CAAhB;AACH;AACD;AACJ;AACA;;;;WACI,eAAe;AACX,eAAO,KAAKkxC,SAAZ;AACH;WACD,aAAaxzJ,KAAb,EAAoB;AAChB,YAAIA,KAAJ,EAAW;AACP,eAAKxL,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmD,SAAnD;AACH,SAFD,MAGK;AACD,eAAKnN,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsD,SAAtD;AACH;;AACD,aAAK6xJ,SAAL,GAAiBxzJ,KAAjB;AACH;AACD;AACJ;AACA;AACA;;;;WAKI,eAAiB;AACb,eAAO,KAAKuzJ,WAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAhBI,aAAe7qF,GAAf,EAAoB;AAChB,aAAK6qF,WAAL,GAAmB7qF,GAAG,IAAI+pF,kBAA1B;AACA,aAAKlqF,SAAL,GAAiB,KAAKqrF,UAAtB;AACH;;;WAwBD,eAAW;AACP,eAAO,KAAK17C,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAvBI,aAASjgH,IAAT,EAAe;AACX,aAAKzD,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAlE;AACA,aAAKzD,QAAL,CAAcc,WAAd,CAA0B,KAAK0xJ,YAAL,CAAkBrlJ,aAA5C,EAA2Dg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAvE;AACA,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAU+vH,YAA9B;;AACA,YAAIhP,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAKxkH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAA/D;AACA,eAAKxkH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDg4H,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAApE;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,aAAK1kH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAArE;AACA,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAa6O,eAAvC;;AACA,YAAI5O,UAAU,KAAK,MAAnB,EAA2B;AACvB,eAAK3kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAACzgB,UAAD,CAAlE;AACH;;AACD,aAAKhB,QAAL,GAAgBgB,UAAhB;AACH;;;WA0BD,eAAe;AACX,eAAO,KAAKf,SAAZ;AACH;AACD;AACJ;AACA;;WAjBI,aAAatB,QAAb,EAAuB;AACnB,aAAKtiH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAtE;AACA,aAAKtiH,QAAL,CAAcc,WAAd,CAA0B,KAAK0xJ,YAAL,CAAkBrlJ,aAA5C,EAA2Dk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAA3E;AACA,aAAKtiH,QAAL,CAAcc,WAAd,CAA0B,KAAK0xJ,YAAL,CAAkBrlJ,aAA5C,qBAAuE,KAAKm1G,QAA5E;AACA,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAc6M,iBAA1C;;AACA,YAAIvK,WAAW,KAAK,MAApB,EAA4B;AACxB,eAAK5kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAUzgB,WAAV,CAAnE;AACA,eAAK5kH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDk4H,gBAAgB,CAAC,QAAD,EAAWzgB,WAAX,CAAxE;AACA,eAAK5kH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,qBAAoEy3G,WAApE;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;WAOD,eAA0B;AACtB;AACR;AACA;AACA;AACA;AACA;AACQ,eAAO,KAAKp2G,MAAL,GAAc,IAAd,GAAqB,MAA5B;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WACI,eAAsB;AAClB,eAAO,KAAKulE,SAAL,KAAmB,MAAnB,IAA6B,CAAC,KAAKh+B,QAAL,CAAcy3F,QAAnD;AACH;AACD;AACJ;AACA;;;;WACI,eAAgB;AACZ,eAAO,KAAKykB,aAAL,GAAqB,SAArB,GAAiC,YAAxC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WACI,eAA0B;AACtB,eAAO,KAAKl+E,SAAL,KAAmB,MAAnB,IAA6B,CAAC,KAAKooF,YAAL,CAAkB3uB,QAAvD;AACH;;;WACD,eAAyB;AACrB,YAAI,CAAC,KAAKh/H,MAAV,EAAkB;AACd;AACH;;AACD,YAAI,EAAE0yG,SAAS,CAAC,KAAKnrE,QAAN,CAAT,IAA4BmrE,SAAS,CAAC,KAAKi7C,YAAN,CAAvC,CAAJ,EAAiE;AAC7D,eAAKl8J,GAAL,CAASoC,aAAT;AACH;;AACD,eAAO,KAAK0xE,SAAL,KAAmB,MAAnB,GAA4B,KAAKh+B,QAAjC,GAA4C,KAAKomH,YAAxD;AACH;;;WACD,eAAe;AACX,YAAQtzE,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACq4B,SAAS,CAACr4B,QAAD,CAAV,IAAwBA,QAAQ,KAAK,MAAzC,EAAiD;AAC7C,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;;;aACD,oBAAW;AAAA;;AACP,aAAKgqC,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKi4G,aAAL,CAAmBn5F,OAAnB,CACnB;AADmB,SAElBtxD,IAFkB,CAEbmyB,oDAAG,CAAC,KAAKsyI,kBAAL,CAAwBp6J,IAAxB,CAA6B,IAA7B,CAAD,CAFU,EAGlBnK,SAHkB,CAGR,KAAKgsJ,WAAL,CAAiB7hJ,IAAjB,CAAsB,IAAtB,CAHQ,CAAvB;AAIA,aAAK4tH,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKi4G,aAAL,CAAmBj5F,MAAnB,CAA0BtxD,SAA1B,CAAoC,KAAKu3E,UAAL,CAAgBptE,IAAhB,CAAqB,IAArB,CAApC,CAAvB;AACA,aAAK4tH,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKi4G,aAAL,CAAmBhB,gBAAnB,CAAoCvpJ,SAApC,CAA8C,KAAKwkK,yBAAL,CAA+Br6J,IAA/B,CAAoC,IAApC,CAA9C,CAAvB;AACA,aAAK4tH,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKi2E,YAAL,CAAkBv5G,OAAlB,CAA0BhP,SAA1B,CAAoC;AAAA,iBAAM,OAAI,CAACmF,GAAL,CAASS,YAAT,EAAN;AAAA,SAApC,CAAvB;AACA,aAAKmyH,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKi4G,aAAL,CAAmBf,sBAAnB,CAA0CxpJ,SAA1C,CAAoD,KAAKy3J,4BAAL,CAAkCttJ,IAAlC,CAAuC,IAAvC,CAApD,CAAvB;;AACA,YAAIi9H,iBAAiB,EAArB,EAAyB;AACrB,eAAKrP,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKswC,MAAL,CAAY3tC,iBAAZ,CAA8B;AAAA,mBAAM1lC,gDAAS,CAACtP,MAAD,EAAS,MAAT,CAAT,CAA0BD,SAA1B,CAAoC,OAAI,CAACykK,YAAL,CAAkBt6J,IAAlB,CAAuB,OAAvB,CAApC,CAAN;AAAA,WAA9B,CAAvB;AACH;AACJ;;;aACD,2BAAkB;AACd,aAAK6pJ,mBAAL;AACH;;;aACD,qBAAYhlJ,OAAZ,EAAqB;AACjB,YAAIo3G,SAAS,CAACp3G,OAAO,CAAC85B,GAAT,CAAT,IAA0Bs9E,SAAS,CAACp3G,OAAO,CAAC65B,GAAT,CAAvC,EAAsD;AAClD,eAAK67H,iBAAL;AACH;;AACD,YAAI11J,OAAO,CAAC85B,GAAR,IAAe95B,OAAO,CAAC65B,GAAvB,IAA8B75B,OAAO,CAACyrI,eAAtC,IAAyDzrI,OAAO,CAACooJ,uBAAjE,IAA4FpoJ,OAAO,CAACiiI,aAApG,IAAqHjiI,OAAO,CAACkjJ,wBAAjI,EAA2J;AACvJ,eAAK1W,aAAL,GAAqB,KAAKf,eAAL,GAAuBlB,YAAY,CAAC,KAAKzwG,GAAN,CAAnC,GAAgDq+F,MAArE;AACA,eAAKsU,aAAL,GAAqB,KAAKhB,eAAL,GAAuBhB,YAAY,CAAC,KAAK5wG,GAAN,CAAnC,GAAgDs+F,MAArE;AACA,eAAKmwB,uBAAL,GAA+B,KAAKF,uBAAL,GAA+Bb,sBAAsB,CAAC,KAAK9jB,oBAAL,CAA0B9I,cAA3B,CAArD,GAAkGxC,MAAjI;AACA,eAAK2rB,mBAAL,GAA2B,KAAKZ,wBAAL,GAAgC3F,uBAAuB,EAAvD,GAA4DplB,MAAvF;AACA,eAAKoU,iBAAL;AACH;AACJ;;;aACD,uBAAc;AACV,YAAI,KAAK7nI,MAAT,EAAiB;AACb,eAAKinH,UAAL;AACH;;AACD,aAAK5C,aAAL,CAAmB53H,WAAnB;AACH;AACD;AACJ;AACA;AACA;;;;aACI,iBAAQ;AACJ,YAAI,KAAK03B,QAAT,EAAmB;AACf;AACH;;AACD,YAAI,KAAKnkB,MAAT,EAAiB;AACb,eAAKixJ,kBAAL,CAAwBriH,KAAxB;AACH,SAFD,MAGK;AACD,eAAKz/B,KAAL,CAAWy/B,KAAX;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,YAAI,KAAK5uC,MAAL,IAAe,KAAKixJ,kBAAL,CAAwBjyB,QAA3C,EAAqD;AACjD,eAAKiyB,kBAAL,CAAwBvlE,IAAxB;AACH,SAFD,MAGK;AACD,eAAKv8E,KAAL,CAAWu8E,IAAX;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,gBAAOzoF,IAAP,EAAa;AACT,YAAI,KAAKkhB,QAAL,IAAiB,KAAK+K,QAAtB,IAAkCjsB,IAAI,KAAK,KAAKjD,MAApD,EAA4D;AACxD;AACH;;AACD,YAAM+lH,UAAU,GAAGrT,SAAS,CAACzvG,IAAD,CAAT,GAAkBA,IAAlB,GAAyB,CAAC,KAAKjD,MAAlD;;AACA,YAAI+lH,UAAJ,EAAgB;AACZ,eAAKe,SAAL;AACH,SAFD,MAGK;AACD,eAAKG,UAAL,GADC,CAED;;AACA,cAAI,KAAK1hD,SAAL,KAAmB,KAAKqrF,UAA5B,EAAwC;AACpC,iBAAKrrF,SAAL,GAAiB,KAAKqrF,UAAtB;AACA,iBAAKn/J,GAAL,CAASoC,aAAT;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAWmJ,KAAX,EAAkB;AACd,aAAKA,KAAL,GAAaA,KAAb;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKkqG,eAAL,GAAuBlqG,EAAvB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKmqG,gBAAL,GAAwBnqG,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBtZ,QAAjB,EAA2B;AACvB,aAAKA,QAAL,GAAgBA,QAAhB;AACA,aAAK1yB,GAAL,CAASS,YAAT;AACH;AACD;AACJ;AACA;;;;aACI,kBAASuK,OAAT,EAAkB;AACd,eAAO,KAAKqrI,aAAL,CAAmBrrI,OAAnB,KAA+B,KAAKsrI,aAAL,CAAmBtrI,OAAnB,CAA/B,IAA8D,KAAKmnJ,uBAAL,CAA6BnnJ,OAA7B,CAA9D,IAAuG,KAAK2iJ,mBAAL,CAAyB3iJ,OAAzB,EAAkC,KAAK0S,KAAL,IAAc,KAAKA,KAAL,CAAW8vI,gBAA3D,CAA9G;AACH;AACD;AACJ;AACA;;;;aACI,mCAA0BxhH,EAA1B,EAA8B;AAC1B,aAAKoqG,iBAAL,GAAyBpqG,EAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,mBAAU;AACN,eAAO,CAACi1E,SAAS,CAAC,KAAK11G,KAAN,CAAV,IAA0B,KAAKmS,KAAL,CAAWg1I,OAAX,EAAjC;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgB93J,KAAhB,EAAuB;AAAA;;AACnB,YAAI,KAAK83B,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH,SAHkB,CAInB;;;AACA7iC,QAAAA,KAAK,CAACkU,cAAN;AACA,YAAM2wJ,SAAS,GAAG,CAAC,KAAKlxJ,MAAN,IAAgBsxG,6EAAY,CAAC,KAAKp0G,KAAN,CAA9C;AACA,aAAKilC,GAAL,CAAS+uH,SAAT,EAAoB,YAAM;AACtB,cAAMnrC,UAAU,GAAG,CAAC,OAAI,CAAC/lH,MAAzB,CADsB,CAEtB;;AACA,iBAAI,CAACs4I,WAAL;;AACA,iBAAI,CAAC4L,WAAL,CAAiBn+B,UAAjB;;AACA,iBAAI,CAACorC,WAAL;AACH,SAND;AAOH;AACD;AACJ;AACA;;;;aACI,uBAAc;AAAA;;AACV,YAAI,KAAKnyB,QAAT,EAAmB;AACf;AACH;;AACD,aAAKA,QAAL,GAAgB,IAAhB;;AACA,YAAI1tB,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,eAAKwxB,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,mBAAM,OAAI,CAACub,OAAL,CAAax3C,IAAb,EAAN;AAAA,WAAhB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW7Z,KAAX,EAAkB;AAAA;;AACd,YAAI,CAAC,KAAK2yI,QAAN,IAAkB,KAAKoyB,sBAAL,CAA4B/kK,KAA5B,CAAtB,EAA0D;AACtD;AACH;;AACD,aAAK2yI,QAAL,GAAgB,KAAhB;AACA,YAAMqyB,oBAAoB,GAAG,KAAK70C,OAAL,CAAa79G,aAAb,CAA2B1I,SAA3B,CAAqCC,QAArC,CAA8C,cAA9C,CAA7B;AACA,YAAMg7J,SAAS,GAAGG,oBAAoB,IAAI//C,6EAAY,CAAC,KAAK1zD,MAAN,CAApC,IAAsD,KAAK59C,MAAL,IAAesxG,6EAAY,CAAC,KAAKp0G,KAAN,CAAnG;AACA,aAAKilC,GAAL,CAAS+uH,SAAT,EAAoB,YAAM;AACtB,iBAAI,CAACtzG,MAAL,CAAY13C,IAAZ;;AACA,iBAAI,CAAC0hI,gBAAL;;AACA,iBAAI,CAACsc,WAAL,CAAiB,KAAjB;;AACA,iBAAI,CAACzyJ,GAAL,CAASS,YAAT;AACH,SALD;AAMH;AACD;AACJ;AACA;;;;aACI,yBAAgBwzE,GAAhB,EAAqB;AACjB,YAAI,CAAC,KAAK1lE,MAAN,IAAgB,KAAKulE,SAAL,KAAmBG,GAAvC,EAA4C;AACxC;AACH,SAHgB,CAIjB;;;AACA,YAAI,CAAC8pD,mEAAO,CAAC,KAAKm+B,YAAL,CAAkB3wJ,KAAnB,EAA0B,KAAK2wJ,YAAL,CAAkBjsH,OAA5C,CAAZ,EAAkE;AAC9D,eAAKisH,YAAL,CAAkBY,YAAlB;AACH;;AACD,aAAKhpF,SAAL,GAAiBG,GAAjB;AACA,aAAKj0E,GAAL,CAASoC,aAAT;AACA,aAAKg9J,kBAAL;AACH;AACD;AACJ;AACA;;;;aACI,sCAA6BS,gBAA7B,EAA+CjlK,KAA/C,EAAsD;AAClD;AACA,YAAIA,KAAK,CAAC2J,MAAN,KAAiBs7J,gBAArB,EAAuC;AACnC;AACH;;AACD,aAAKL,kBAAL,CAAwBriH,KAAxB;AACH;AACD;AACJ;AACA;;;;aACI,wBAAe;AAAA;;AACX,YAAI,CAAC,KAAK5uC,MAAV,EAAkB;AACd;AACH;;AACD,YAAMqyH,SAAS,GAAGyD,gBAAgB,CAAC,KAAKvuF,QAAL,CAAcvqC,KAAf,EAAsB,KAAK2wJ,YAAL,CAAkBjsH,OAAxC,CAAlC;AACA,YAAM6vH,kBAAkB,GAAG,CAAC/hC,mEAAO,CAAC,KAAKxyH,KAAN,EAAaq1H,SAAb,CAAnC;AACA,YAAM6+B,SAAS,GAAGK,kBAAkB,IAAIjgD,6EAAY,CAAC,KAAKp0G,KAAN,CAApD;AACA,aAAKilC,GAAL,CAAS+uH,SAAT,EAAoB,YAAM;AACtB,iBAAI,CAACM,iBAAL,CAAuBn/B,SAAvB;;AACA,iBAAI,CAAC6xB,WAAL,CAAiB,KAAjB;AACH,SAHD;AAIH;AACD;AACJ;AACA;;;;aACI,wBAAe;AAAA;;AACX,YAAI,CAAC,KAAKlkJ,MAAV,EAAkB;AACd;AACH;;AACD,YAAMkxJ,SAAS,GAAG5/C,6EAAY,CAAC,KAAKp0G,KAAN,CAA9B;AACA,aAAKilC,GAAL,CAAS+uH,SAAT,EAAoB;AAAA,iBAAM,OAAI,CAAChN,WAAL,CAAiB,KAAjB,CAAN;AAAA,SAApB;AACH;AACD;AACJ;AACA;;;;aACI,gCAAuBlnJ,KAAvB,EAA8B;AAC1B,aAAKw0J,iBAAL,CAAuBx0J,KAAvB;;AACA,YAAI,KAAKgD,MAAT,EAAiB;AACb,eAAKkkJ,WAAL,CAAiB,KAAjB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,qCAA4B;AACxB,aAAKuN,qBAAL,CAA2B,KAAKlqH,QAAL,CAAcvqC,KAAzC;AACA,aAAK00J,eAAL,CAAqB,MAArB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAcrlK,KAAd,EAAqB;AAAA;;AACjB,YAAI,KAAK83B,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,YAAQk7D,OAAR,GAA4B/9F,KAA5B,CAAQ+9F,OAAR;AAAA,YAAiBuxB,MAAjB,GAA4BtvH,KAA5B,CAAiBsvH,MAAjB;;AACA,gBAAQvxB,OAAR;AACI,eAAKuxB,MAAM,IAAIvK,yEAAf;AACA,eAAKA,wEAAL;AACI,iBAAK2/C,YAAL;AACA;;AACJ,eAAK,CAAC,KAAK/wJ,MAAN,IAAgB27G,MAAhB,IAA0BvK,2EAA/B;AACI,iBAAKliC,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,qBAAM,OAAI,CAAC+hH,WAAL,CAAiB,IAAjB,CAAN;AAAA,aAAhB;AACA;;AACJ,eAAKvoC,MAAM,IAAIvK,4EAAf;AACI,iBAAKsgD,eAAL,CAAqB,MAArB;AACA;;AACJ,eAAK/1C,MAAM,IAAIvK,2EAAf;AACI,iBAAKsgD,eAAL,CAAqB,MAArB;AACA;;AACJ,eAAK,KAAK1xJ,MAAL,IAAe,KAAK2tJ,YAAL,CAAkB3uB,QAAjC,IAA6CtsB,SAAS,CAAC,KAAKw9C,aAAN,CAAtD,IAA8E9+C,uEAAnF;AACI,iBAAKm9C,YAAL;AACA;;AACJ;AAAS;AAjBb;;AAmBAliK,QAAAA,KAAK,CAACkU,cAAN;AACH;AACD;AACJ;AACA;;;;aACI,sBAAalU,KAAb,EAAoB;AAChB,YAAQ+9F,OAAR,GAAsC/9F,KAAtC,CAAQ+9F,OAAR;AAAA,YAAiB35C,QAAjB,GAAsCpkD,KAAtC,CAAiBokD,QAAjB;AAAA,YAA2Bz6C,MAA3B,GAAsC3J,KAAtC,CAA2B2J,MAA3B,CADgB,CAEhB;;AACA,YAAM27J,yBAAyB,GAAGj/C,SAAS,CAAC18G,MAAM,CAAC47J,kBAAR,CAAT,IAAwC,CAAC57J,MAAM,CAAC47J,kBAAP,CAA0BztI,QAArG;;AACA,YAAIimE,OAAO,KAAKgnB,qEAAZ,IAAwB,CAAC3gE,QAAzB,IAAqC,CAACkhH,yBAA1C,EAAqE;AACjE,eAAKxiJ,KAAL,CAAWy/B,KAAX;AACA,eAAKmiH,YAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,0BAAiB1kK,KAAjB,EAAwB;AACpB,YAAQ+9F,OAAR,GAA8B/9F,KAA9B,CAAQ+9F,OAAR;AAAA,YAAiB35C,QAAjB,GAA8BpkD,KAA9B,CAAiBokD,QAAjB;;AACA,YAAI25C,OAAO,KAAKgnB,qEAAZ,IAAwB3gE,QAA5B,EAAsC;AAClC,eAAKthC,KAAL,CAAWy/B,KAAX;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,6BAAoBx5C,IAApB,EAA0B;AACtB,YAAMy8J,UAAU,GAAGz8J,IAAI,GAAGA,IAAH,GAAU,MAAjC;AACA,yBAAU,KAAKH,IAAL,GAAY0hI,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAAxB,GAAgD,EAA1D,cAAgE,KAAKihH,OAAL,GAAe0gB,eAAe,CAAC,KAAK1gB,OAAN,CAA9B,GAA+C,EAA/G,cAAqH,KAAKpC,QAAL,GAAgB,cAAc,KAAKA,QAAnB,GAA8B,GAA9B,GAAoC,WAApC,GAAkD,KAAKA,QAAvD,GAAkE,GAAlE,GAAwE+9C,UAAxF,GAAqG,EAA1N;AACH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,0BAAiBxlK,KAAjB,EAAwB;AACpBA,QAAAA,KAAK,CAACkU,cAAN;AACH;;;aACD,qBAAYvD,KAAZ,EAAmB;AACf,YAAI,CAACi0G,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAIyB,SAAS,CAAC11G,KAAD,CAAT,IAAoB,EAAEA,KAAK,YAAYmG,IAAnB,CAAxB,EAAkD;AAC9C,gBAAM,IAAIsO,KAAJ,yEAA2E89I,cAA3E,+BAAN;AACH;AACJ;;;aACD,6BAAoB;AAChB,YAAI,CAACt+C,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAI,CAACoiB,YAAY,CAAC,KAAKj+F,GAAN,EAAW,KAAKD,GAAhB,CAAjB,EAAuC;AACnC,gBAAM,IAAI1jB,KAAJ,4DAA8D+9I,gBAA9D,OAAN;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,+BAAsBvyG,MAAtB,EAA8B;AAC1B,YAAM8yG,kBAAkB,GAAG,KAAK9yB,IAAL,CACtBke,eADsB,CACNl+F,MADM,EAEtBpxD,MAFsB,CAEf,KAAKimK,oBAFU,EAGtBlmH,MAHsB,CAGf,UAACqR,MAAD,EAASnR,IAAT;AAAA,iBAAkBmR,MAAM,IAAInR,IAAI,CAAC90B,OAAjC;AAAA,SAHe,EAG2B,EAH3B,CAA3B;AAIA,eAAO+4I,kBAAkB,IAAIJ,2BAA7B;AACH;AACD;AACJ;AACA;AACA;;;;aACI,0BAAiB1yG,MAAjB,EAAyB;AACrB,YAAI,CAACA,MAAL,EAAa;AACT,iBAAOyyG,wBAAP;AACH;;AACD,YAAI,OAAOzyG,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,iBAAOA,MAAP;AACH,SAFD,MAGK;AACD,iBAAOA,MAAM,CAAC+iG,aAAd;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,8BAAqBl0G,IAArB,EAA2BxjB,KAA3B,EAAkC8kD,KAAlC,EAAyC;AACrC,YAAM2kF,YAAY,GAAGzpI,KAAK,IAAI,CAAT,IAAc8kD,KAAK,CAAC9kD,KAAK,GAAG,CAAT,CAAxC;;AACA,YAAIypI,YAAY,IAAIjmH,IAAI,CAAC12C,IAAL,KAAc,SAAlC,EAA6C;AACzC,iBAAOk6J,gBAAgB,CAACtnJ,IAAjB,CAAsB+pJ,YAAY,CAAC38J,IAAnC,CAAP;AACH;;AACD,eAAOk6J,gBAAgB,CAACtnJ,IAAjB,CAAsB8jC,IAAI,CAAC12C,IAA3B,CAAP;AACH;;;aACD,qBAAY+L,IAAZ,EAAkB;AACd,YAAIA,IAAI,KAAK,KAAKnB,MAAlB,EAA0B;AACtB;AACH;;AACD,YAAM3T,KAAK,GAAG,IAAIksH,gBAAJ,EAAd;;AACA,YAAIp3G,IAAJ,EAAU;AACN,eAAKA,IAAL,CAAU+E,IAAV,CAAe7Z,KAAf;AACH,SAFD,MAGK;AACD,eAAK6Q,KAAL,CAAWgJ,IAAX,CAAgB7Z,KAAhB;AACH;;AACD,YAAIA,KAAK,CAACotH,kBAAN,EAAJ,EAAgC;AAC5B;AACH;;AACD,aAAK94G,MAAL,CAAYQ,IAAZ;AACA,aAAKgwJ,WAAL;AACH;;;aACD,uBAAc;AACV,YAAI,CAAC,KAAKnyB,QAAV,EAAoB;AAChB;AACH;;AACD,YAAI,KAAKh/H,MAAT,EAAiB;AACb,eAAKixJ,kBAAL,CAAwBriH,KAAxB;AACH,SAFD,MAGK,IAAI,CAAC,KAAKuiF,YAAV,EAAwB;AACzB,eAAKhiH,KAAL,CAAWy/B,KAAX;AACH,SAFI,MAGA,IAAI,CAAC,KAAKz/B,KAAL,CAAW6vH,QAAhB,EAA0B;AAC3B,eAAKn7D,UAAL;AACH;AACJ;;;aACD,qBAAY;AAAA;;AACR,aAAK4sF,gBAAL,CAAsB,KAAKzzJ,KAA3B;AACA,aAAKy0J,qBAAL,CAA2B,KAAKz0J,KAAhC;AACA,YAAMimC,SAAS,GAAG,KAAK4xE,YAAL,CAAkBW,GAAlB,GAAwB,OAAxB,GAAkC,MAApD;AACA,aAAK8J,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,UAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnCjsD,UAAAA,OAAO,EAAE,KAAK6vD,aAFqB;AAGnCgF,UAAAA,YAAY,EAAE,UAHqB;AAInC9rH,UAAAA,OAAO,EAAE,KAAKmmH,aAAL,CAAmBnmH,OAJO;AAKnC+gF,UAAAA,QAAQ,EAAE,KAAKA,QALoB;AAMnCgiC,UAAAA,UAAU,iCAA0B,KAAKoD,aAAL,CAAmBpD,UAAnB,IAAiC,EAA3D,CANyB;AAOnC8D,UAAAA,WAAW,EAAE;AAAEL,YAAAA,QAAQ,EAAE,QAAZ;AAAsBD,YAAAA,UAAU,EAAE58E;AAAlC,WAPsB;AAQnCy8E,UAAAA,UAAU,EAAE;AAAEI,YAAAA,QAAQ,EAAE,KAAZ;AAAmBD,YAAAA,UAAU,EAAE58E;AAA/B;AARuB,SAAvB,CAAhB;AAUA,aAAKq8E,QAAL,CAAce,wBAAd,CAAuC/zH,SAAvC,CAAiD;AAAA,iBAAM,OAAI,CAACykK,YAAL,EAAN;AAAA,SAAjD;AACH;;;aACD,sBAAa;AACT,YAAI,CAAC,KAAK/wJ,MAAV,EAAkB;AACd;AACH;;AACD,aAAKs/G,QAAL,CAAcpiH,KAAd;AACA,aAAKoiH,QAAL,GAAgB,IAAhB;AACH;;;aACD,2BAAkBtiH,KAAlB,EAAyB;AACrB,YAAIwyH,mEAAO,CAAC,KAAKxyH,KAAN,EAAaA,KAAb,CAAX,EAAgC;AAC5B;AACH;;AACD,aAAKA,KAAL,GAAasyH,qEAAS,CAACtyH,KAAD,CAAtB;AACA,aAAK2qI,eAAL,CAAqBrY,qEAAS,CAACtyH,KAAD,CAA9B;AACA,aAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsBopH,qEAAS,CAACtyH,KAAD,CAA/B;AACH;AACD;AACJ;AACA;AACA;;;;aACI,gCAAuB3Q,KAAvB,EAA8B;AAC1B,YAAI,CAACqmH,SAAS,CAACrmH,KAAD,CAAd,EAAuB;AACnB,iBAAO,KAAP;AACH;;AACD,YAAM+iD,aAAa,GAAG/iD,KAAK,CAAC+iD,aAAN,IAAuB79C,QAAQ,CAACorD,aAAtD;AACA,YAAMq1G,YAAY,GAAGt/C,SAAS,CAAC,KAAK4M,QAAN,CAAT,IAA4B,KAAKA,QAAL,CAAcK,YAAd,CAA2BzpH,QAA3B,CAAoCk5C,aAApC,CAAjD;AACA,YAAM6iH,cAAc,GAAG,KAAKz1C,OAAL,CAAa79G,aAAb,CAA2BzI,QAA3B,CAAoCk5C,aAApC,CAAvB;AACA,eAAO4iH,YAAY,IAAIC,cAAvB;AACH;;;aACD,+BAAsBtmH,YAAtB,EAAoC;AAChC,YAAMumH,eAAe,GAAGx/C,SAAS,CAAC/mE,YAAD,CAAT,IAA2B6jF,mEAAO,CAACpkH,mEAAO,CAACugC,YAAD,CAAR,EAAwBvgC,mEAAO,CAAC,KAAKgqB,GAAN,CAA/B,CAA1D;AACA,aAAK46H,eAAL,GAAuB1gC,qEAAS,CAAC4iC,eAAe,GAAG,KAAK98H,GAAR,GAAcq8F,QAA9B,CAAhC;AACA,YAAM0gC,eAAe,GAAGz/C,SAAS,CAAC/mE,YAAD,CAAT,IAA2B6jF,mEAAO,CAACpkH,mEAAO,CAACugC,YAAD,CAAR,EAAwBvgC,mEAAO,CAAC,KAAK+pB,GAAN,CAA/B,CAA1D;AACA,aAAK86H,eAAL,GAAuB3gC,qEAAS,CAAC6iC,eAAe,GAAG,KAAKh9H,GAAR,GAAcu8F,QAA9B,CAAhC;AACH;;;aACD,0BAAiB10H,KAAjB,EAAwB;AACpB,YAAMo1J,iBAAiB,GAAG1/C,SAAS,CAAC11G,KAAD,CAAT,IAAoBm2H,SAAS,CAACn2H,KAAD,EAAQ,KAAKmzJ,WAAb,EAA0B,KAAKC,WAA/B,CAAvD;AACA,aAAKF,aAAL,GAAqBkC,iBAAiB,GAAGhnJ,mEAAO,CAACpO,KAAD,CAAV,GAAoB,IAA1D;AACH;AACD;AACJ;AACA;;;;aACI,8BAAqB;AACjB,YAAI,CAAC,KAAKgD,MAAV,EAAkB;AACd;AACH;;AACD,aAAKs/G,QAAL,CAAcC,KAAd,CAAoB9iE,iBAApB,CAAsC5oD,aAAtC;AACH;AACD;AACJ;AACA;AACA;;;;aACI,aAAIq9J,SAAJ,EAAezzH,EAAf,EAAmB;AACf,YAAIyzH,SAAJ,EAAe;AACX,eAAKhiF,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,mBAAM1E,EAAE,EAAR;AAAA,WAAhB;AACH,SAFD,MAGK;AACDA,UAAAA,EAAE;AACL;AACJ;;;aACD,wCAA+B;AAAA;;AAC3B,aAAKhsC,GAAL,CAASS,YAAT;AACA,aAAKg9E,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,iBAAM,OAAI,CAAC0lG,iBAAL,EAAN;AAAA,SAAhB;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAK5yI,IAAT,EAAe;AACX,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAA/D;AACA,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDg4H,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAApE;AACH;;AACD,YAAI,KAAKihH,OAAT,EAAkB;AACd,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAAlE;AACH;;AACD,YAAI,KAAKpC,QAAT,EAAmB;AACf,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAnE;AACA,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,EAAwDk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAAxE;AACA,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAKmyJ,YAAL,CAAkBrlJ,aAAzC,qBAAoE,KAAKm1G,QAAzE;AACH;AACJ;;;;;;AAEL+7C,EAAAA,uBAAuB,CAAC/4H,IAAxB;AAAA,qBAAqH+4H,uBAArH,EAj1YsGnjK,gEAi1YtG,CAA8JmE,wEAA9J,GAj1YsGnE,gEAi1YtG,CAA0LkE,sEAA1L,GAj1YsGlE,gEAi1YtG,CAAqNA,6DAArN,GAj1YsGA,gEAi1YtG,CAAsPkpJ,aAAtP,GAj1YsGlpJ,gEAi1YtG,CAAgRA,kDAAhR,GAj1YsGA,gEAi1YtG,CAAsSA,sDAAtS,GAj1YsGA,gEAi1YtG,CAAgUk2J,aAAhU,GAj1YsGl2J,gEAi1YtG,CAA0V0iI,8EAA1V,GAj1YsG1iI,gEAi1YtG,CAA+X4wI,oBAA/X,GAj1YsG5wI,gEAi1YtG,CAAgaA,qDAAha;AAAA;;AACAmjK,EAAAA,uBAAuB,CAACr2H,IAAxB,kBAl1YsG9sC,gEAk1YtG;AAAA,UAAyGmjK,uBAAzG;AAAA;AAAA;AAAA;AAl1YsGnjK,QAAAA,6DAk1YtG,WAQyE44I,qBARzE;AAl1YsG54I,QAAAA,6DAk1YtG,WAQkL64I,0BARlL;AAl1YsG74I,QAAAA,6DAk1YtG,WAQ+R84I,yBAR/R;AAl1YsG94I,QAAAA,6DAk1YtG,WAQ6Y+4I,2BAR7Y;AAl1YsG/4I,QAAAA,6DAk1YtG,WAQ8fg5I,4BAR9f;AAl1YsGh5I,QAAAA,6DAk1YtG,WAQ+mBi5I,+BAR/mB;AAl1YsGj5I,QAAAA,6DAk1YtG,WAQouBk5I,4BARpuB;AAAA;;AAAA;AAAA;;AAl1YsGl5I,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAAA;AAAA;AAAA;AAAA;AAl1YsGA,QAAAA,0DAk1YtG;AAl1YsGA,QAAAA,0DAk1YtG,UAQg/BkP,4DARh/B;AAl1YsGlP,QAAAA,0DAk1YtG,UAQunCmO,uDARvnC;AAAA;;AAAA;AAAA;;AAl1YsGnO,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAl1YsGA,QAAAA,6DAk1YtG,MAl1YsGA,0DAk1YtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAl1YsGA,QAAAA,0DAk1YtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAl1YsGA,iEAk1YtG,CAAqsC,CAC7rCkpJ,aAD6rC,EAE7rCnkC,8EAF6rC,EAG7rC6rB,oBAH6rC,EAI7rC;AAAExtI,MAAAA,OAAO,EAAE4hH,sEAAX;AAAwBzhH,MAAAA,QAAQ,EAAE;AAAlC,KAJ6rC,EAK7rC;AAAEH,MAAAA,OAAO,EAAEguB,8DAAX;AAA8Bgf,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMkzI,uBAAN;AAAA,OAAD,CAArD;AAAsF7/J,MAAAA,KAAK,EAAE;AAA7F,KAL6rC,EAM7rC;AAAEF,MAAAA,OAAO,EAAEiuB,0DAAX;AAA0B+e,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMkzI,uBAAN;AAAA,OAAD,CAAjD;AAAkF7/J,MAAAA,KAAK,EAAE;AAAzF,KAN6rC,EAO7rC;AAAEF,MAAAA,OAAO,EAAEk/H,uEAAX;AAAuBlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMkzI,uBAAN;AAAA,OAAD;AAA9C,KAP6rC,CAArsC,GAl1YsGnjK,mEAk1YtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAl1YsGA,QAAAA,iEA21Y9F,MATR;AAl1YsGA,QAAAA,6DA04Y9F,yBAxDR;AAl1YsGA,QAAAA,yDA65Y1F;AAAA,iBAAe,kCAAf;AAAA,UA3EZ;AAl1YsGA,QAAAA,2DAs6Y9F,EApFR;AAl1YsGA,QAAAA,6DAu6Y9F,mBArFR;AAl1YsGA,QAAAA,wDAo7Y1F,cAlGZ;AAl1YsGA,QAAAA,2DA07Y9F,EAxGR;AAl1YsGA,QAAAA,iEA47Y9F,YA1GR;AAl1YsGA,QAAAA,yDA87Y9F,oFA97Y8FA,qEA87Y9F,CA5GR;AAAA;;AAAA;AAl1YsGA,QAAAA,wDA24Y1F,GAzDZ;AAl1YsGA,QAAAA,yDA24Y1F,miBA34Y0FA,8DA24Y1F,gHAzDZ;AAl1YsGA,QAAAA,wDA26Y1F,GAzFZ;AAl1YsGA,QAAAA,yDA26Y1F,8CA36Y0FA,8DA26Y1F,qEAzFZ;AAl1YsGA,QAAAA,0DA46Y1F,uFA1FZ;AAl1YsGA,QAAAA,wDAq7YtF,GAnGhB;AAl1YsGA,QAAAA,yDAq7YtF,YAr7YsFA,8DAq7YtF,gEAnGhB;AAAA;AAAA;AAAA,iBA2P4C0xJ,kBA3P5C,EA2P+gB3H,iBA3P/gB,EA2PglCsM,+BA3PhlC,EA2PgqCoK,qBA3PhqC,EA2Ps5CyB,mCA3Pt5C,EA2P4/CS,0BA3P5/C,EA2PslDz+B,0FA3PtlD,EA2P2tDI,qDA3P3tD,EA2PsyDA,kDA3PtyD;AAAA;AAAA;AAAA;SAr7BM6+B;;;AAirCN;AAAA;AAAA;AAoXA;AACA;AACA;AACA;;;IACMwC;MAAAA,4OACF,yCAAY1yI,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAEL0yI,EAAAA,+BAA+B,CAACv7H,IAAhC;AAAA,qBAA6Hu7H,+BAA7H,EA38ZsG3lK,gEA28ZtG,CAA8KA,uDAA9K;AAAA;;AACA2lK,EAAAA,+BAA+B,CAAC/6H,IAAhC,kBA58ZsG5qC,gEA48ZtG;AAAA,UAAiH2lK,+BAAjH;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;;AAOA,IAAMrzB,QAAQ,GAAG,SAAXA,QAAW,CAACszB,GAAD;AAAA,SAAUA,GAAG,IAAIA,GAAG,CAACtzB,QAAZ,IAAyB,KAAlC;AAAA,CAAjB;;AACA,IAAMuzB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAChzC,KAAD;AAAA,SAAWA,KAAK,IAAIA,KAAK,CAACgzC,gBAAN,EAApB;AAAA,CAAzB;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;AACF;AACA,gCAAc;AAAA;;AACV;AACR;AACA;AACQ,WAAKC,eAAL,GAAuB,IAAIvpJ,kDAAJ,CAAoB,IAApB,CAAvB;AACA;AACR;AACA;;AACQ,WAAKwpJ,YAAL,GAAoB,IAAIxpJ,kDAAJ,CAAoB,IAApB,CAApB;AACA;AACR;AACA;AACA;;AACQ,WAAKypJ,SAAL,GAAiB,IAAIzpJ,kDAAJ,CAAoB,IAApB,CAAjB;AACA;AACR;AACA;AACA;;AACQ,WAAK0pJ,WAAL,GAAmB,IAAI1pJ,kDAAJ,CAAoB,IAApB,CAAnB;AACA;AACR;AACA;;AACQ,WAAK2pJ,eAAL,GAAuB,IAAI3pJ,kDAAJ,CAAoB,IAApB,CAAvB;AACA;AACR;AACA;;AACQ,WAAK4pJ,MAAL,GAAc,IAAI5pJ,kDAAJ,CAAoByoH,oBAApB,CAAd;AACH;AACD;AACJ;AACA;;;;;WACI,eAAqB;AACjB,eAAO,KAAK8gC,eAAL,CAAqBz1J,KAA5B;AACH;AACD;AACJ;AACA;;;;WACI,eAAkB;AACd,eAAO,KAAK01J,YAAL,CAAkB11J,KAAzB;AACH;AACD;AACJ;AACA;AACA;;;;WACI,eAAU;AACN,eAAO,CAAC,KAAK41J,WAAL,CAAiB51J,KAAjB,IAA0B,EAA3B,EAA+Bo4B,GAA/B,IAAsC,IAA7C;AACH;AACD;AACJ;AACA;AACA;;;;WACI,eAAU;AACN,eAAO,CAAC,KAAKu9H,SAAL,CAAe31J,KAAf,IAAwB,EAAzB,EAA6Bm4B,GAA7B,IAAoC,IAA3C;AACH;AACD;AACJ;AACA;;;;WACI,eAAqB;AACjB,eAAO,KAAK29H,MAAL,CAAY91J,KAAnB;AACH;AACD;AACJ;AACA;AACA;;;;aACI,yBAAgB;AACZ,YAAM+1J,cAAc,GAAG,KAAKF,eAAL,CAAqB71J,KAA5C;;AACA,YAAI,CAAC+1J,cAAL,EAAqB;AACjB;AACH;;AACDA,QAAAA,cAAc,CAACC,QAAf;AACH;AACD;AACJ;AACA;AACA;;;;aACI,2BAAkB;AACd,YAAMD,cAAc,GAAG,KAAKF,eAAL,CAAqB71J,KAA5C;;AACA,YAAI,EAAE+1J,cAAc,IAAIA,cAAc,CAAC9vJ,IAAnC,CAAJ,EAA8C;AAC1C;AACH;;AACD8vJ,QAAAA,cAAc,CAAC9vJ,IAAf,GAAsB,KAAtB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,uBAAc;AACV,YAAM8vJ,cAAc,GAAG,KAAKF,eAAL,CAAqB71J,KAA5C;;AACA,YAAI,EAAE+1J,cAAc,IAAIA,cAAc,CAAC9vJ,IAAnC,CAAJ,EAA8C;AAC1C;AACH;;AACD8vJ,QAAAA,cAAc,CAACE,WAAf;AACH;AACD;AACJ;AACA;AACA;;;;aACI,mBAAU;AACN,aAAKR,eAAL,CAAqBpuE,QAArB;AACA,aAAKwuE,eAAL,CAAqBxuE,QAArB;AACA,aAAKquE,YAAL,CAAkBruE,QAAlB;AACA,aAAKsuE,SAAL,CAAetuE,QAAf;AACA,aAAKuuE,WAAL,CAAiBvuE,QAAjB;AACA,aAAKyuE,MAAL,CAAYzuE,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,8BAAqB;AACjB,YAAMk7B,KAAK,GAAG,KAAKszC,eAAL,CAAqB71J,KAAnC;AACA,YAAMk2J,OAAO,GAAGl0B,QAAQ,CAACzf,KAAD,CAAxB;AACA,YAAM4zC,OAAO,GAAGn0B,QAAQ,CAAC,KAAK4zB,WAAL,CAAiB51J,KAAlB,CAAxB;AACA,YAAMo2J,KAAK,GAAGp0B,QAAQ,CAAC,KAAK2zB,SAAL,CAAe31J,KAAhB,CAAtB;AACA,eAAOk2J,OAAO,IAAIC,OAAX,IAAsBC,KAAtB,IAA+Bb,gBAAgB,CAAChzC,KAAD,CAA/C,IAA0D,KAAjE;AACH;AACD;AACJ;AACA;;;;aACI,4BAAmB8zC,UAAnB,EAA+B;AAC3B,aAAKT,WAAL,CAAiBnpJ,IAAjB,CAAsB4pJ,UAAtB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,QAAjB,EAA2B;AACvB,aAAKX,SAAL,CAAelpJ,IAAf,CAAoB6pJ,QAApB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAcP,cAAd,EAA8B;AAC1B,aAAKF,eAAL,CAAqBppJ,IAArB,CAA0BspJ,cAA1B;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBQ,WAAlB,EAA+B;AAC3B,YAAI,CAACA,WAAD,IAAgB,KAAKpzB,cAAL,KAAwBozB,WAA5C,EAAyD;AACrD;AACH;;AACD,aAAKd,eAAL,CAAqBhpJ,IAArB,CAA0B8pJ,WAA1B;AACH;AACD;AACJ;AACA;;;;aACI,wBAAev2J,KAAf,EAAsB;AAClB,YAAIwyH,mEAAO,CAAC,KAAKkjC,YAAL,CAAkB11J,KAAnB,EAA0BA,KAA1B,CAAX,EAA6C;AACzC;AACH;;AACD,aAAK01J,YAAL,CAAkBjpJ,IAAlB,CAAuBzM,KAAvB;AACH;AACD;AACJ;AACA;;;;aACI,oBAAuC;AAAA,YAA9B2oF,KAA8B,uEAAtBgsC,oBAAsB;AACnC,aAAKmhC,MAAL,CAAYrpJ,IAAZ,CAAiBk8E,KAAjB;AACH;;;;;;AAEL6sE,EAAAA,gBAAgB,CAAC17H,IAAjB;AAAA,qBAA8G07H,gBAA9G;AAAA;;AACAA,EAAAA,gBAAgB,CAACv7H,KAAjB,kBAhoasGvqC,iEAgoatG;AAAA,WAAkH8lK,gBAAlH;AAAA,aAAkHA,gBAAlH;AAAA;SAtKMA;;;AAuKN;AAAA;AAAA;AAIA;AACA;AACA;;;IACMgB;MAAAA;AACF,yCAAYjsH,QAAZ,EAAsB91C,GAAtB,EAA2B2N,OAA3B,EAAoC5N,QAApC,EAA8CiiK,gBAA9C,EAAgE;AAAA;;AAC5D,WAAKlsH,QAAL,GAAgBA,QAAhB;AACA,WAAK91C,GAAL,GAAWA,GAAX;AACA,WAAK2N,OAAL,GAAeA,OAAf;AACA,WAAKq0J,gBAAL,GAAwBA,gBAAxB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKC,aAAL,GAAqB,QAArB;AACA;AACR;AACA;AACA;;AACQ,WAAKC,oBAAL,GAA4B,IAAIr0J,wDAAJ,EAA5B;AACA;AACR;AACA;AACA;;AACQ,WAAKs0J,oBAAL,GAA4B,IAAIt0J,wDAAJ,EAA5B;AACA,WAAKu0J,qBAAL,GAA6B,IAAIjiD,+CAAJ,EAA7B;AACA,WAAK6hD,gBAAL,GAAwB,KAAKA,gBAAL,IAAyB,IAAIjB,gBAAJ,EAAjD;AACAhhK,MAAAA,QAAQ,CAAC8C,YAAT,CAAsB8K,OAAO,CAACT,aAA9B,EAA6C,sBAA7C,EAAqE,MAArE;AACH;AACD;AACJ;AACA;AACA;;;;;WACI,eAAqB;AACjB,eAAO,KAAK4oC,QAAL,GAAgB,KAAKA,QAAL,CAAcytF,cAA9B,GAA+C,IAAtD;AACH;WACD,aAAmBrvC,KAAnB,EAA0B;AACtB,YAAI,CAAC,KAAKmuE,oBAAL,CAA0BnuE,KAA1B,CAAL,EAAuC;AACnC,eAAKk8D,iBAAL,CAAuBl8D,KAAvB;AACH;;AACD,YAAI,CAAC0vC,YAAY,CAAC,KAAKo+B,gBAAL,CAAsBz+B,cAAvB,EAAuCrvC,KAAvC,CAAjB,EAAgE;AAC5D,eAAK8tE,gBAAL,CAAsBM,QAAtB,CAA+BpuE,KAA/B;AACH;;AACD,aAAKquE,iBAAL,CAAuBruE,KAAvB;AACH;AACD;AACJ;AACA;AACA;;AACI;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,eAAqB;AACjB,eAAO,KAAKp+C,QAAL,CAAc44F,cAArB;AACH;WACD,aAAmBozB,WAAnB,EAAgC;AAC5B,YAAI,KAAKE,gBAAL,CAAsBtzB,cAAtB,KAAyCozB,WAA7C,EAA0D;AACtD;AACH;;AACD,aAAKhsH,QAAL,CAAc44F,cAAd,GAA+BozB,WAA/B;AACA,aAAKE,gBAAL,CAAsBQ,iBAAtB,CAAwCV,WAAxC;AACH;;;WACD,eAAoB;AAChB,eAAO,KAAKv+B,cAAL,IAAuBrD,oBAA9B;AACH;;;aACD,oBAAW;AAAA;;AACP,YAAMpqF,QAAQ,GAAG,KAAKA,QAAtB;AACA,YAAMksH,gBAAgB,GAAG,KAAKA,gBAA9B;AACAlsH,QAAAA,QAAQ,CAACnS,GAAT,GAAe6/F,MAAM,CAACw+B,gBAAgB,CAACr+H,GAAlB,EAAuBmS,QAAQ,CAACnS,GAAhC,CAArB;AACAmS,QAAAA,QAAQ,CAACpS,GAAT,GAAe8/F,MAAM,CAACw+B,gBAAgB,CAACt+H,GAAlB,EAAuBoS,QAAQ,CAACpS,GAAhC,CAArB;AACA,aAAK++H,gBAAL,CAAsB3sH,QAAQ,CAAC43F,SAAT,CAAmB7yI,SAAnB,CAA6B,UAAC0Q,KAAD;AAAA,iBAAW,OAAI,CAACm3J,WAAL,CAAiBn3J,KAAjB,CAAX;AAAA,SAA7B,CAAtB,EAAwFuqC,QAAQ,CAAC8/F,WAAT,CAAqB/6I,SAArB,CAA+B,UAAC0Q,KAAD;AAAA,iBAAW,OAAI,CAACsnJ,YAAL,CAAkBtnJ,KAAlB,CAAX;AAAA,SAA/B,CAAxF,EAA6Jy2J,gBAAgB,CAACf,YAAjB,CAA8BpmK,SAA9B,CAAwC,UAAA+hD,WAAW,EAAI;AAChN,cAAI,CAACmhF,mEAAO,CAACjoF,QAAQ,CAAC8G,WAAV,EAAuBA,WAAvB,CAAZ,EAAiD;AAC7C9G,YAAAA,QAAQ,CAAC8G,WAAT,GAAuBA,WAAvB;AACH;AACJ,SAJ4J,CAA7J,EAIIolH,gBAAgB,CAAChB,eAAjB,CAAiCnmK,SAAjC,CAA2C,UAAA8nK,QAAQ,EAAI;AACvD,cAAI7sH,QAAQ,CAAC44F,cAAT,KAA4Bi0B,QAAhC,EAA0C;AACtC;AACH;;AACD7sH,UAAAA,QAAQ,CAAC44F,cAAT,GAA0Bi0B,QAA1B;;AACA,iBAAI,CAACT,oBAAL,CAA0BztJ,IAA1B,CAA+BkuJ,QAA/B;;AACA,iBAAI,CAAC3iK,GAAL,CAASS,YAAT;AACH,SAPG,CAJJ,EAWIuhK,gBAAgB,CAACX,MAAjB,CAAwBxmK,SAAxB,CAAkC,UAAAq5F,KAAK,EAAI;AAC3C,cAAI,CAAC,OAAI,CAACmuE,oBAAL,CAA0BnuE,KAA1B,CAAL,EAAuC;AACnC,mBAAI,CAAC0uE,aAAL,CAAmB1uE,KAAnB;AACH;;AACD,iBAAI,CAACquE,iBAAL,CAAuBruE,KAAvB;AACH,SALG,CAXJ,EAgBI9pF,gDAAS,CAAC,KAAKuD,OAAL,CAAaT,aAAd,EAA6B,MAA7B,CAAT,CAA8CrS,SAA9C,CAAwD;AAAA,iBAAM,OAAI,CAACu3E,UAAL,EAAN;AAAA,SAAxD,CAhBJ;AAiBH;;;aACD,uBAAc;AACV,aAAKgwF,qBAAL,CAA2BpnK,WAA3B;AACH;;;aACD,4BAAmC;AAAA;;AAAA,0CAAf43H,aAAe;AAAfA,UAAAA,aAAe;AAAA;;AAC/BA,QAAAA,aAAa,CAAC7oH,GAAd,CAAkB,UAAA+6B,CAAC;AAAA,iBAAI,OAAI,CAACs9H,qBAAL,CAA2Bj1H,GAA3B,CAA+BrI,CAA/B,CAAJ;AAAA,SAAnB;AACH;;;aACD,8BAAqBovD,KAArB,EAA4B;AACxB,eAAO0vC,YAAY,CAAC,KAAK9tF,QAAL,CAAcytF,cAAf,EAA+BrvC,KAA/B,CAAnB;AACH;;;aACD,sBAAa;AACT,kCAAuB,KAAK2uE,aAA5B;AAAA,YAAQ3sH,KAAR,uBAAQA,KAAR;AAAA,YAAeC,GAAf,uBAAeA,GAAf;AACA,YAAM22G,WAAW,GAAG,KAAKmV,aAAL,KAAuB,MAAvB,IAAiC/rH,KAAK,KAAK,IAA3C,IAAmDC,GAAG,KAAK,IAA3D,IAAmEA,GAAG,GAAGD,KAA7F;;AACA,YAAI42G,WAAJ,EAAiB;AACb,eAAKkV,gBAAL,CAAsBM,QAAtB,CAA+B3+B,UAAU,CAACztF,KAAD,CAAzC;AACH;AACJ;;;aACD,sBAAa3qC,KAAb,EAAoB;AAChB,YAAMwZ,OAAO,GAAG,KAAKi9I,gBAArB;AACA,YAAMlV,WAAW,GAAG,KAAKmV,aAAL,KAAuB,QAAvB,IAAmC,KAAKa,iBAAL,CAAuBv3J,KAAvB,CAAvD;AACA,YAAMw3J,SAAS,GAAG,KAAKjtH,QAAL,CAAc44F,cAAd,KAAiC,KAAjC,GAAyC,KAAzC,GAAkDoe,WAAW,GAAG,KAAH,GAAW,OAA1F;AACA,YAAM54D,KAAK,GAAG44D,WAAW,GAAGnpB,UAAU,CAACp4H,KAAD,CAAb,GAAuB,KAAKy3J,WAAL,CAAiBz3J,KAAjB,CAAhD;;AACA,YAAI,CAACq4H,YAAY,CAAC7+G,OAAO,CAACw+G,cAAT,EAAyBrvC,KAAzB,CAAjB,EAAkD;AAC9C,eAAK0uE,aAAL,CAAmB1uE,KAAnB;AACAnvE,UAAAA,OAAO,CAACy9I,iBAAR,CAA0BO,SAA1B;AACAh+I,UAAAA,OAAO,CAACu9I,QAAR,CAAiBpuE,KAAjB;AACH;AACJ;;;aACD,qBAAY3oF,KAAZ,EAAmB;AACf,YAAI,KAAK03J,gBAAL,EAAJ,EAA6B;AACzB;AACH;;AACD,mCAAuB,KAAKJ,aAA5B;AAAA,YAAQ3sH,KAAR,wBAAQA,KAAR;AAAA,YAAeC,GAAf,wBAAeA,GAAf;AACA,YAAMu4F,cAAc,GAAG,KAAK54F,QAAL,CAAc44F,cAArC;AACA,YAAMs0B,WAAW,GAAI9sH,KAAK,IAAIw4F,cAAc,KAAK,KAA7B,IAAwCv4F,GAAG,IAAIu4F,cAAc,KAAK,OAAtF;;AACA,YAAIs0B,WAAJ,EAAiB;AACb,eAAK5S,iBAAL,CAAuB,KAAK4S,WAAL,CAAiBz3J,KAAjB,CAAvB;AACH;AACJ;;;aACD,4BAAmB;AACf,qBAAuB,KAAKy2J,gBAAL,CAAsBz+B,cAAtB,IAAwCrD,oBAA/D;AAAA,YAAQhqF,KAAR,UAAQA,KAAR;AAAA,YAAeC,GAAf,UAAeA,GAAf;;AACA,eAAOmjF,OAAO,CAACpjF,KAAD,CAAP,IAAkBojF,OAAO,CAACnjF,GAAD,CAAhC;AACH;;;aACD,2BAAkB5qC,KAAlB,EAAyB;AACrB,mCAAuB,KAAKs3J,aAA5B;AAAA,YAAQ1sH,GAAR,wBAAQA,GAAR;AAAA,YAAaD,KAAb,wBAAaA,KAAb;;AACA,YAAI,KAAKJ,QAAL,CAAc44F,cAAd,KAAiC,KAArC,EAA4C;AACxC,iBAAOv4F,GAAG,KAAK,IAAR,IAAgB5qC,KAAK,GAAG4qC,GAA/B;AACH,SAFD,MAGK;AACD,iBAAOD,KAAK,KAAK,IAAV,IAAkB3qC,KAAK,GAAG2qC,KAAjC;AACH;AACJ;;;aACD,2BAAkBg+C,KAAlB,EAAyB;AACrB,YAAI,CAACA,KAAD,IAAU,KAAK8tE,gBAAL,CAAsBplH,WAApC,EAAiD;AAC7C;AACH;;AACD,aAAKolH,gBAAL,CAAsBkB,cAAtB,CAAqChvE,KAAK,CAACh+C,KAAN,IAAeg+C,KAAK,CAAC/9C,GAA1D;AACH;;;aACD,qBAAY5qC,KAAZ,EAAmB;AACf,mCAAuB,KAAKs3J,aAA5B;AAAA,YAAQ1sH,GAAR,wBAAQA,GAAR;AAAA,YAAaD,KAAb,wBAAaA,KAAb;AACA,eAAO,KAAKJ,QAAL,CAAc44F,cAAd,KAAiC,KAAjC,GAA0C;AAAEx4F,UAAAA,KAAK,EAAE3qC,KAAT;AAAgB4qC,UAAAA,GAAG,EAAHA;AAAhB,SAA1C,GAAoE;AAAED,UAAAA,KAAK,EAALA,KAAF;AAASC,UAAAA,GAAG,EAAE5qC;AAAd,SAA3E;AACH;;;aACD,2BAAkB2oF,KAAlB,EAAyB;AACrB,aAAKp+C,QAAL,CAAcytF,cAAd,GAA+BrvC,KAA/B;AACA,aAAKp+C,QAAL,CAAc/J,UAAd,CAAyB,IAAzB;AACH;;;aACD,uBAAcmoD,KAAd,EAAqB;AACjB,aAAKk8D,iBAAL,CAAuBl8D,KAAvB;AACA,aAAKiuE,oBAAL,CAA0B1tJ,IAA1B,CAA+By/E,KAA/B;AACH;;;;;;AAEL6tE,EAAAA,2BAA2B,CAAC18H,IAA5B;AAAA,qBAAyH08H,2BAAzH,EA1yasG9mK,gEA0yatG,CAAsKk6I,0BAAtK,GA1yasGl6I,gEA0yatG,CAA6MA,6DAA7M,GA1yasGA,gEA0yatG,CAA8OA,sDAA9O,GA1yasGA,gEA0yatG,CAAwQA,qDAAxQ,GA1yasGA,gEA0yatG,CAAiS8lK,gBAAjS;AAAA;;AACAgB,EAAAA,2BAA2B,CAACl8H,IAA5B,kBA3yasG5qC,gEA2yatG;AAAA,UAA6G8mK,2BAA7G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;SAnKMA;;;AAoKN;AAAA;AAAA;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMoB;MAAAA;AACF,qCAAYv2C,YAAZ,EAA0Bo1C,gBAA1B,EAA4CoB,GAA5C,EAAiDjhH,IAAjD,EAAuD4hE,GAAvD,EAA4D;AAAA;;AACxD,WAAK6I,YAAL,GAAoBA,YAApB;AACA,WAAKo1C,gBAAL,GAAwBA,gBAAxB;AACA,WAAKoB,GAAL,GAAWA,GAAX;AACA,WAAKjhH,IAAL,GAAYA,IAAZ;AACA,WAAK4hE,GAAL,GAAWA,GAAX;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKl8G,OAAL,GAAe,IAAf;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKw7J,SAAL,GAAiB;AAAEj1C,QAAAA,UAAU,EAAE,KAAd;AAAqBC,QAAAA,QAAQ,EAAE;AAA/B,OAAjB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAK3+G,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAKstH,MAAL,GAAc,IAAIttH,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKqkJ,QAAL,GAAgBpyC,qEAAI,EAApB;AACA,WAAKsiD,qBAAL,GAA6B,IAAIjiD,+CAAJ,EAA7B;AACA,WAAKmjD,kBAAL,GAA0B,IAAInjD,+CAAJ,EAA1B;AACA,WAAKa,eAAL,GAAuBh4G,OAAO,CAACC,OAAR,EAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;;;;;WACI,eAAe;AACX,eAAO,KAAKywC,SAAZ;AACH;WACD,aAAa5D,QAAb,EAAuB;AACnB,aAAK4D,SAAL,GAAiB5D,QAAjB;AACA,aAAKytH,kBAAL,CAAwBztH,QAAxB;AACH;AACD;AACJ;AACA;AACA;;;;WACI,eAAe;AACX,eAAO,KAAKA,QAAL,IAAiB,KAAKA,QAAL,CAAcy3F,QAAtC;AACH;AACD;AACJ;AACA;;;;WAiBI,eAAW;AACP,eAAO,KAAKh8H,KAAZ;AACH;WAlBD,aAASC,IAAT,EAAe;AACX,YAAI,KAAKD,KAAL,KAAeC,IAAnB,EAAyB;AACrB;AACH;;AACD,YAAM5W,KAAK,GAAG,IAAIksH,gBAAJ,EAAd;;AACA,YAAIt1G,IAAJ,EAAU;AACN,eAAK9B,IAAL,CAAU+E,IAAV,CAAe7Z,KAAf;AACH,SAFD,MAGK;AACD,eAAK6Q,KAAL,CAAWgJ,IAAX,CAAgB7Z,KAAhB;AACH;;AACD,YAAIA,KAAK,CAACotH,kBAAN,EAAJ,EAAgC;AAC5B;AACH;;AACD,aAAKsF,OAAL,CAAa97G,IAAb;AACH;;;aAID,oBAAW;AACP,aAAKwwJ,gBAAL,CAAsBwB,aAAtB,CAAoC,IAApC;AACH;;;aACD,2BAAkB;AAAA;;AACd,aAAKpB,qBAAL,CAA2Bj1H,GAA3B,CAA+B,KAAKs2H,eAAL,CAAqB55J,OAArB,CAA6BhP,SAA7B,CAAuC,UAACgP,OAAD;AAAA,iBAAa,OAAI,CAACisC,QAAL,GAAgBjsC,OAAO,CAACw8B,KAArC;AAAA,SAAvC,CAA/B;AACA,aAAK+7H,qBAAL,CAA2Bj1H,GAA3B,CAA+B,KAAKu2H,YAAL,CAAkB75J,OAAlB,CAA0BhP,SAA1B,CAAoC,UAACgP,OAAD;AAAA,iBAAa,OAAI,CAACisC,QAAL,GAAgBjsC,OAAO,CAACw8B,KAArC;AAAA,SAApC,CAA/B;;AACA,YAAI47F,iBAAiB,EAArB,EAAyB;AACrB,eAAK9/E,IAAL,CAAUrS,iBAAV,CAA4B;AAAA,mBAAM,OAAI,CAAC6iH,sBAAL,GAA8BvoJ,gDAAS,CAACtP,MAAD,EAAS,MAAT,CAAT,CAA0BD,SAA1B,CAAoC,OAAI,CAACm4J,gBAAL,CAAsBhuJ,IAAtB,CAA2B,OAA3B,CAApC,CAApC;AAAA,WAA5B;AACH;AACJ;;;aACD,uBAAc;AACV,aAAKspH,YAAL;AACA,aAAK8zC,qBAAL,CAA2BpnK,WAA3B;;AACA,YAAI,KAAK2oK,oBAAT,EAA+B;AAC3B,eAAKA,oBAAL,CAA0B3oK,WAA1B;AACH;;AACD,YAAI,KAAK4oK,gBAAT,EAA2B;AACvB,eAAKA,gBAAL,CAAsB5oK,WAAtB;AACA,eAAK6oK,iBAAL,CAAuB7oK,WAAvB;AACH;;AACD,YAAI,KAAK23J,sBAAT,EAAiC;AAC7B,eAAKA,sBAAL,CAA4B33J,WAA5B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW;AAAA;;AACP,YAAI,KAAKwW,IAAL,KAAc,IAAlB,EAAwB;AACpB;AACH;;AACD,YAAI,KAAKmyJ,oBAAT,EAA+B;AAC3B,eAAKA,oBAAL,CAA0B3oK,WAA1B;AACH;;AACD,aAAKwW,IAAL,GAAY,IAAZ;AACA,aAAK4xJ,GAAL,CAAS3iK,YAAT;AACA,aAAK0hD,IAAL,CAAUrS,iBAAV,CAA4B,YAAM;AAC9B,iBAAI,CAAC6zH,oBAAL,GAA4Bj6J,4CAAK,CAAC,OAAI,CAAC+5J,eAAL,CAAqB55J,OAAtB,EAA+B,OAAI,CAAC65J,YAAL,CAAkB75J,OAAjD,CAAL,CACvBlP,IADuB,CAClBP,uDAAM,CAAC,UAAAyP,OAAO;AAAA,mBAAIA,OAAO,IAAIA,OAAO,CAACw8B,KAAvB;AAAA,WAAR,CADY,EAC2Bt8B,oDAAG,CAAC,UAAAF,OAAO;AAAA,mBAAIA,OAAO,CAACw8B,KAAZ;AAAA,WAAR,CAD9B,EAEvBxrC,SAFuB,CAEb,UAACi7C,QAAD;AAAA,mBAAchxC,UAAU,CAAC;AAAA,qBAAMgxC,QAAQ,CAACqH,KAAT,EAAN;AAAA,aAAD,CAAxB;AAAA,WAFa,CAA5B;AAGH,SAJD;AAKH;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,KAAKrH,QAAT,EAAmB;AACf,eAAKA,QAAL,CAAcqH,KAAd;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,4BAAmB;AACf,YAAI,CAACuiE,oFAAmB,EAApB,IAA0B,CAAC,KAAKmO,QAApC,EAA8C;AAC1C,iBAAO,KAAP;AACH;;AACD,eAAO,KAAKA,QAAL,CAAcK,YAAd,CAA2BzpH,QAA3B,CAAoC3E,QAAQ,CAACorD,aAA7C,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,gBAAO15C,IAAP,EAAa;AAAA;;AACT,aAAKwvG,eAAL,CAAqBpoH,IAArB,CAA0B,YAAM;AAC5B,iBAAI,CAAC00H,OAAL,CAAc97G,IAAI,KAAKsX,SAAV,GAAuB,CAAC,OAAI,CAACtX,IAA7B,GAAoCA,IAAjD;AACH,SAFD;AAGH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,uBAAc;AACV,aAAKA,IAAL,GAAY,KAAZ;AACA,aAAK2pH,MAAL,CAAY1mH,IAAZ;AACH;;;aACD,4BAAmB;AAAA;;AACf,YAAI,CAAC,KAAKjD,IAAV,EAAgB;AACZ;AACH;;AACD,YAAIquG,6EAAY,CAAC,KAAKp0G,KAAN,CAAhB,EAA8B;AAC1B,eAAK02C,IAAL,CAAUzR,GAAV,CAAc;AAAA,mBAAM,OAAI,CAACl/B,IAAL,GAAY,KAAlB;AAAA,WAAd;AACH,SAFD,MAGK;AACD,eAAKA,IAAL,GAAY,KAAZ;AACH;AACJ;;;aACD,4BAAmB;AACf,aAAKwwJ,gBAAL,CAAsBM,QAAtB,CAA+B,KAAKN,gBAAL,CAAsBz+B,cAArD;AACH;;;aACD,uBAAc3oI,KAAd,EAAqB;AAAA;;AACjB,YAAQsvH,MAAR,GAA4BtvH,KAA5B,CAAQsvH,MAAR;AAAA,YAAgBvxB,OAAhB,GAA4B/9F,KAA5B,CAAgB+9F,OAAhB;;AACA,YAAIA,OAAO,KAAKgnB,wEAAZ,IAA4BuK,MAAM,IAAIvxB,OAAO,KAAKgnB,yEAAtD,EAAqE;AACjE,eAAKx9D,IAAL,CAAUzR,GAAV,CAAc;AAAA,mBAAM,OAAI,CAAC8wH,WAAL,EAAN;AAAA,WAAd;AACH;AACJ;;;aACD,4BAAmB1rH,QAAnB,EAA6B;AAAA;;AACzB,YAAI,KAAK8tH,gBAAT,EAA2B;AACvB,eAAKA,gBAAL,CAAsB5oK,WAAtB;AACA,eAAK6oK,iBAAL,CAAuB7oK,WAAvB;AACH;;AACD,YAAI,CAAC86C,QAAL,EAAe;AACX;AACH;;AACD,YAAM5oC,aAAa,GAAG4oC,QAAQ,CAACnoC,OAAT,CAAiBT,aAAvC;AACA,aAAK02J,gBAAL,GAAwBx5J,gDAAS,CAAC8C,aAAD,EAAgB,MAAhB,CAAT,CAAiCrS,SAAjC,CAA2C;AAAA,iBAAM,OAAI,CAACsxD,MAAL,CAAY13C,IAAZ,EAAN;AAAA,SAA3C,CAAxB;AACA,aAAKovJ,iBAAL,GAAyBz5J,gDAAS,CAAC8C,aAAD,EAAgB,OAAhB,CAAT,CAAkCrS,SAAlC,CAA4C;AAAA,iBAAM,OAAI,CAACoxD,OAAL,CAAax3C,IAAb,EAAN;AAAA,SAA5C,CAAzB;AACH;;;aACD,iCAAwC;AAAA;;AACpC,YAAI,CAACwsG,SAAS,CAAC,KAAKqiD,kBAAN,CAAd,EAAyC;AACrC,eAAKA,kBAAL,GAA0B,IAAInjD,+CAAJ,EAA1B;AACH;;AAHmC,2CAAfyS,aAAe;AAAfA,UAAAA,aAAe;AAAA;;AAIpCA,QAAAA,aAAa,CAAC7oH,GAAd,CAAkB,UAAA+6B,CAAC;AAAA,iBAAI,OAAI,CAACw+H,kBAAL,CAAwBn2H,GAAxB,CAA4BrI,CAA5B,CAAJ;AAAA,SAAnB;AACH;;;WACD,eAAgB;AACZ,YAAM8jD,QAAQ,GAAG,KAAKA,QAAtB;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;;;aACD,iBAAQp3E,IAAR,EAAc;AAAA;;AACV,aAAKD,KAAL,GAAaC,IAAb;;AACA,YAAI,KAAKq8G,QAAT,EAAmB;AACf,eAAKS,YAAL;AACH;;AACD,YAAI,KAAK/8G,KAAT,EAAgB;AACZ,cAAMigC,SAAS,GAAG,KAAKuyE,GAAL,GAAW,OAAX,GAAqB,MAAvC;AACA,eAAK8J,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,YAAAA,MAAM,EAAE,KAAKA,MADsB;AAEnCsyD,YAAAA,WAAW,EAAE,KAAKA,WAAL,IAAoB;AAAEL,cAAAA,QAAQ,EAAE,QAAZ;AAAsBD,cAAAA,UAAU,EAAE58E;AAAlC,aAFE;AAGnC3pC,YAAAA,OAAO,EAAE,KAAKA,OAHqB;AAInC+gF,YAAAA,QAAQ,EAAE,KAAKk7E,SAJoB;AAKnCT,YAAAA,SAAS,EAAE,KAAKA,SALmB;AAMnCvkG,YAAAA,OAAO,EAAE,CAAC,KAAK3gB,eAAL,IAAwB,EAAzB,EAA6BjwB,WAA7B,IAA4C,KAAK61I,eANvB;AAOnCC,YAAAA,MAAM,EAAE,KAAKA,MAPsB;AAQnC/1C,YAAAA,UAAU,EAAE,KAAKA,UAAL,IAAmB;AAAEI,cAAAA,QAAQ,EAAE,KAAZ;AAAmBD,cAAAA,UAAU,EAAE58E;AAA/B,aARI;AASnCmiF,YAAAA,YAAY,EAAE;AATqB,WAAvB,CAAhB;AAWA,+BAAmD,KAAK9F,QAAxD;AAAA,cAAQK,YAAR,kBAAQA,YAAR;AAAA,cAAsBU,wBAAtB,kBAAsBA,wBAAtB;AACAV,UAAAA,YAAY,CAACrrH,YAAb,CAA0B,IAA1B,EAAgC,KAAKqvJ,QAArC;AACA,eAAK+R,qBAAL,CAA2B,KAAK9hH,IAAL,CAAUrS,iBAAV,CAA4B;AAAA,mBAAM1lC,gDAAS,CAAC8jH,YAAD,EAAe,SAAf,CAAT,CAAmCrzH,SAAnC,CAA6C,OAAI,CAACksJ,aAAL,CAAmB/hJ,IAAnB,CAAwB,OAAxB,CAA7C,CAAN;AAAA,WAA5B,CAA3B,EAA2IoF,gDAAS,CAAC8jH,YAAD,EAAe,YAAf,CAAT,CAAsCrzH,SAAtC,CAAgD,KAAKqpK,gBAAL,CAAsBl/J,IAAtB,CAA2B,IAA3B,CAAhD,CAA3I,EAA8N4pH,wBAAwB,CAAC/zH,SAAzB,CAAmC;AAAA,mBAAM,OAAI,CAAC2mK,WAAL,EAAN;AAAA,WAAnC,CAA9N;AACH;AACJ;;;aACD,wBAAe;AACX,YAAIvgD,SAAS,CAAC,KAAK4M,QAAN,CAAb,EAA8B;AAC1B,eAAKA,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;AACH;;AACD,YAAI5M,SAAS,CAAC,KAAKqiD,kBAAN,CAAb,EAAwC;AACpC,eAAKA,kBAAL,CAAwBtoK,WAAxB;AACH;AACJ;;;;;;AAELmoK,EAAAA,uBAAuB,CAAC99H,IAAxB;AAAA,qBAAqH89H,uBAArH,EAjlbsGloK,gEAilbtG,CAA8JmE,wEAA9J,GAjlbsGnE,gEAilbtG,CAA0L8lK,gBAA1L,GAjlbsG9lK,gEAilbtG,CAAuNA,6DAAvN,GAjlbsGA,gEAilbtG,CAAwPA,kDAAxP,GAjlbsGA,gEAilbtG,CAA8Q2iI,8DAA9Q;AAAA;;AACAulC,EAAAA,uBAAuB,CAACp7H,IAAxB,kBAllbsG9sC,gEAklbtG;AAAA,UAAyGkoK,uBAAzG;AAAA;AAAA;AAAA;AAllbsGloK,QAAAA,6DAklbtG,WAAif2lK,+BAAjf;AAllbsG3lK,QAAAA,6DAklbtG,WAAqlBk6I,0BAArlB;AAAA;;AAAA;AAAA;;AAllbsGl6I,QAAAA,6DAklbtG,MAllbsGA,0DAklbtG;AAllbsGA,QAAAA,6DAklbtG,MAllbsGA,0DAklbtG;AAAA;AAAA;AAAA;AAAA;AAllbsGA,QAAAA,0DAklbtG,UAA+tBkP,4DAA/tB;AAllbsGlP,QAAAA,0DAklbtG;AAllbsGA,QAAAA,0DAklbtG,CAAm4Bk6I,0BAAn4B;AAAA;;AAAA;AAAA;;AAllbsGl6I,QAAAA,6DAklbtG,MAllbsGA,0DAklbtG;AAllbsGA,QAAAA,6DAklbtG,MAllbsGA,0DAklbtG;AAllbsGA,QAAAA,6DAklbtG,MAllbsGA,0DAklbtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAllbsGA,QAAAA,iEAmlb9F,YADR;AAllbsGA,QAAAA,yDAolb9F,kFAplb8FA,qEAolb9F,CAFR;AAAA;AAAA;AAAA,iBAK4Ck6I,0BAL5C,EAK2tB4sB,2BAL3tB;AAAA;AAAA;SAhQMoB;;;AAsQN;AAAA;AAAA;AA4DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMgB;MAAAA;AACF,kCAAc;AAAA;;AACV,WAAKC,YAAL,GAAoB,IAApB;AACA;AACR;AACA;;AACQ,WAAKC,WAAL,GAAmB,KAAnB;AACAjkD,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACH;;;;WACD,eAAsB;AAClB,eAAO,KAAK4jD,YAAL,CAAkB5zJ,MAAlB,GAA2B,CAAlC;AACH;;;aACD,8BAAqB;AAAA;;AACjB,aAAK2zJ,WAAL,GAAmB,CAAC,KAAKE,eAAzB;AACA,aAAK9pK,YAAL,GAAoB,KAAK6pK,YAAL,CAAkBz6J,OAAlB,CAA0BhP,SAA1B,CAAoC,YAAM;AAC1D,iBAAI,CAACwpK,WAAL,GAAmB,CAAC,OAAI,CAACE,eAAzB;AACH,SAFmB,CAApB;AAGH;;;aACD,uBAAc;AACV,YAAI,KAAK9pK,YAAT,EAAuB;AACnB,eAAKA,YAAL,CAAkBO,WAAlB;AACH;AACJ;;;;;;AAELmpK,EAAAA,kBAAkB,CAAC9+H,IAAnB;AAAA,qBAAgH8+H,kBAAhH;AAAA;;AACAA,EAAAA,kBAAkB,CAACp8H,IAAnB,kBAhsbsG9sC,gEAgsbtG;AAAA,UAAoGkpK,kBAApG;AAAA;AAAA;AAAA;AAhsbsGlpK,QAAAA,6DAgsbtG,WAAmTkoK,uBAAnT;AAAA;;AAAA;AAAA;;AAhsbsGloK,QAAAA,6DAgsbtG,MAhsbsGA,0DAgsbtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAhsbsGA,QAAAA,0DAgsbtG;AAAA;AAAA;AAAA,eAhsbsGA,iEAgsbtG,CAA0O,CAAC8lK,gBAAD,CAA1O;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAhsbsG9lK,QAAAA,8DAgsbtG;AAhsbsGA,QAAAA,2DAisb9F,GADR;AAhsbsGA,QAAAA,yDAksb9F,0FAFR;AAAA;;AAAA;AAhsbsGA,QAAAA,wDAksbtE,GAFhC;AAhsbsGA,QAAAA,yDAksbtE,yBAFhC;AAAA;AAAA;AAAA,iBAG4CkoK,uBAH5C,EAG2T5jC,kDAH3T;AAAA;AAAA;SAzBM4kC;;;AA6BN;AAAA;AAAA;AAkBA;AACA;AACA;;;IACMK;AACF,0BAAY91B,cAAZ,EAA4BszB,gBAA5B,EAA8CtkJ,KAA9C,EAAqD/P,OAArD,EAA8D5N,QAA9D,EAAwEoiD,IAAxE,EAA8E;AAAA;;AAC1E,SAAKusF,cAAL,GAAsBA,cAAtB;AACA,SAAKszB,gBAAL,GAAwBA,gBAAxB;AACA,SAAKtkJ,KAAL,GAAaA,KAAb;AACA,SAAK/P,OAAL,GAAeA,OAAf;AACA,SAAK5N,QAAL,GAAgBA,QAAhB;AACA,SAAKoiD,IAAL,GAAYA,IAAZ;AACA,SAAKsiH,uBAAL,GAA+B,KAA/B;AACA,SAAKnB,kBAAL,GAA0B,IAAInjD,+CAAJ,EAA1B;AACA,SAAKyS,aAAL,GAAqB,IAAIzS,+CAAJ,EAArB;AACH;;;;SACD,eAAkB;AACd,aAAO,KAAK6hD,gBAAL,CAAsBtzB,cAAtB,KAAyC,KAAKA,cAArD;AACH;;;SACD,eAA6B;AACzB,UAAM5gB,KAAK,GAAG,KAAKk0C,gBAAL,CAAsBZ,eAAtB,CAAsC71J,KAApD;AACA,aAAO01G,SAAS,CAAC6M,KAAD,CAAT,IAAoB7M,SAAS,CAAC6M,KAAK,CAACh4E,QAAP,CAApC;AACH;;;WACD,gBAAO;AAAA;;AACH,UAAI,KAAKp4B,KAAL,CAAWnS,KAAf,EAAsB;AAClB,aAAKy2J,gBAAL,CAAsBM,QAAtB,CAA+B,KAAKoC,QAAL,CAAc,KAAKhnJ,KAAL,CAAWnS,KAAzB,CAA/B;AACH;;AACD,OACI,KAAKmS,KAAL,CAAWyuC,MAAX,CAAkBtxD,SAAlB,CAA4B;AAAA,eAAM,OAAI,CAAC8sH,UAAL,EAAN;AAAA,OAA5B,CADJ,EAEI,KAAKjqG,KAAL,CAAWuuC,OAAX,CAAmBtxD,IAAnB,CAAwBP,uDAAM,CAAC;AAAA,eAAM,CAAC,OAAI,CAACuqK,sBAAZ;AAAA,OAAD,CAA9B,EAAoE9pK,SAApE,CAA8E;AAAA,eAAM,OAAI,CAAC0mK,QAAL,EAAN;AAAA,OAA9E,CAFJ,EAGI,KAAK7jJ,KAAL,CAAWuvI,WAAX,CAAuBpyJ,SAAvB,CAAiC,UAAA0Q,KAAK;AAAA,eAAI,OAAI,CAACy3J,WAAL,CAAiBz3J,KAAjB,EAAwB,QAAxB,CAAJ;AAAA,OAAtC,CAHJ,EAII,KAAKy2J,gBAAL,CAAsBhB,eAAtB,CAAsCnmK,SAAtC,CAAgD,YAAM;AAClD,YAAI,OAAI,CAAC4pK,uBAAT,EAAkC;AAC9B,iBAAI,CAACG,eAAL;AACH;;AACD,eAAI,CAACC,iBAAL,CAAuB,OAAI,CAACC,WAA5B;AACH,OALD,CAJJ,EAUI,KAAK9C,gBAAL,CAAsBZ,eAAtB,CAAsCvmK,SAAtC,CAAgD,UAAAizH,KAAK;AAAA,eAAI,OAAI,CAACi3C,SAAL,CAAej3C,KAAf,CAAJ;AAAA,OAArD,CAVJ,EAWI,KAAKk0C,gBAAL,CAAsBX,MAAtB,CAA6BxmK,SAA7B,CAAuC,UAAAq5F,KAAK;AAAA,eAAI,OAAI,CAAC8wE,gBAAL,CAAsB9wE,KAAtB,CAAJ;AAAA,OAA5C,CAXJ,EAYI9pF,gDAAS,CAAC,KAAKuD,OAAL,CAAaT,aAAd,EAA6B,OAA7B,CAAT,CAA+CrS,SAA/C,CAAyD;AAAA,eAAM,OAAI,CAAC0mK,QAAL,EAAN;AAAA,OAAzD,CAZJ,EAaIn3J,gDAAS,CAAC,KAAKuD,OAAL,CAAaT,aAAd,EAA6B,SAA7B,CAAT,CAAiDrS,SAAjD,CAA2D,UAACD,KAAD;AAAA,eAAW,OAAI,CAAC63J,WAAL,CAAiB73J,KAAK,IAAI,EAA1B,CAAX;AAAA,OAA3D,CAbJ,EAcEmP,GAdF,CAcM,UAAA+6B,CAAC;AAAA,eAAI,OAAI,CAAC8tF,aAAL,CAAmBzlF,GAAnB,CAAuBrI,CAAvB,CAAJ;AAAA,OAdP;AAeH;;;WACD,mBAAU;AACN,WAAK8tF,aAAL,CAAmB53H,WAAnB;AACA,WAAKiqK,gBAAL;AACH;;;WACD,mBAAUn3C,KAAV,EAAiB;AAAA;;AACb,UAAI,CAACA,KAAL,EAAY;AACR,aAAKm3C,gBAAL;AACA;AACH;;AACD,UAAI,CAACn3C,KAAK,CAAC1xD,MAAX,EAAmB;AACf0xD,QAAAA,KAAK,CAAC1xD,MAAN,GAAe,KAAKzuD,OAAL,CAAaT,aAA5B;AACH;;AACD,OACI4gH,KAAK,CAACqN,MAAN,CAAatgI,SAAb,CAAuB;AAAA,eAAM,OAAI,CAACiqK,WAAL,IAAoB,OAAI,CAACpnJ,KAAL,CAAWy/B,KAAX,EAA1B;AAAA,OAAvB,CADJ,EAEI2wE,KAAK,CAAC7hE,OAAN,CAAcpxD,SAAd,CAAwB;AAAA,eAAM,OAAI,CAACgqK,iBAAL,CAAuB,OAAI,CAACC,WAA5B,CAAN;AAAA,OAAxB,CAFJ,EAGIh3C,KAAK,CAAC3hE,MAAN,CAAatxD,SAAb,CAAuB;AAAA,eAAM,OAAI,CAAC8sH,UAAL,EAAN;AAAA,OAAvB,CAHJ,EAIE59G,GAJF,CAIM,UAAA+6B,CAAC;AAAA,eAAI,OAAI,CAACw+H,kBAAL,CAAwBn2H,GAAxB,CAA4BrI,CAA5B,CAAJ;AAAA,OAJP;AAKH;;;WACD,4BAAmB;AACf,WAAKw+H,kBAAL,CAAwBtoK,WAAxB;AACA,WAAKsoK,kBAAL,GAA0B,IAAInjD,+CAAJ,EAA1B;AACH;;;WACD,oBAAW;AACP,WAAK6hD,gBAAL,CAAsBQ,iBAAtB,CAAwC,KAAK9zB,cAA7C;AACA,WAAKszB,gBAAL,CAAsBkD,aAAtB;AACH;;;WACD,sBAAa;AAAA;;AACT,WAAK/iH,IAAL,CAAUrS,iBAAV,CAA4B,YAAM;AAC9BhrC,QAAAA,UAAU,CAAC,YAAM;AACb,iBAAI,CAACk+J,WAAL,CAAiB,OAAI,CAACtlJ,KAAL,CAAWnS,KAA5B,EAAmC,MAAnC;;AACA,cAAI,OAAI,CAACy2J,gBAAL,CAAsBmD,kBAAtB,EAAJ,EAAgD;AAC5C;AACH;;AACD,iBAAI,CAACN,iBAAL,CAAuB,KAAvB;;AACA,iBAAI,CAAC1iH,IAAL,CAAUzR,GAAV,CAAc;AAAA,mBAAM,OAAI,CAACsxH,gBAAL,CAAsBoD,eAAtB,EAAN;AAAA,WAAd;AACH,SAPS,CAAV;AAQH,OATD;AAUH;;;WACD,qBAAY75J,KAAZ,EAAmB85J,SAAnB,EAA8B;AAC1B,UAAMnxE,KAAK,GAAG,KAAKwwE,QAAL,CAAcn5J,KAAd,EAAqB85J,SAArB,CAAd;;AACA,UAAInxE,KAAJ,EAAW;AACP,aAAK0wE,eAAL;AACA,aAAK5C,gBAAL,CAAsBM,QAAtB,CAA+BpuE,KAA/B;AACH;AACJ;;;WACD,6BAAiC;AAAA,UAAnBg2B,MAAmB,UAAnBA,MAAmB;AAAA,UAAXvxB,OAAW,UAAXA,OAAW;;AAC7B,UAAIA,OAAO,KAAKgnB,wEAAhB,EAA6B;AACzB,aAAKqiD,gBAAL,CAAsBR,WAAtB;AACH,OAFD,MAGK,IAAIt3C,MAAM,IAAIvxB,OAAO,KAAKgnB,2EAA1B,EAA0C;AAC3C,aAAKqiD,gBAAL,CAAsBkD,aAAtB;AACH;AACJ;;;WACD,2BAAkB;AACd,UAAI,KAAKxnJ,KAAL,CAAWnS,KAAX,IAAoB,KAAKu5J,WAA7B,EAA0C;AACtC,aAAK9C,gBAAL,CAAsBkB,cAAtB,CAAqCrlC,qEAAS,CAAC,KAAKngH,KAAL,CAAWnS,KAAZ,CAA9C;AACH;AACJ;;;WACD,2BAAkBiG,IAAlB,EAAwB;AACpB,UAAMwgG,MAAM,GAAGxgG,IAAI,GAAG,UAAH,GAAgB,aAAnC;AACA,UAAMtE,aAAa,GAAG,KAAKS,OAAL,CAAaT,aAAnC;;AACA,UAAIA,aAAa,IAAIA,aAAa,CAACqwC,aAAnC,EAAkD;AAC9C,aAAKx9C,QAAL,CAAciyG,MAAd,EAAsB9kG,aAAtB,EAAqC,SAArC;AACH;AACJ;;;;;AAGL;AACA;AACA;AACA;AACA;;;IACMo4J;MAAAA;;;;;AACF,wCAAYC,YAAZ,EAA0BnX,SAA1B,EAAqCzgJ,OAArC,EAA8C5N,QAA9C,EAAwDoiD,IAAxD,EAA8D;AAAA;;AAAA;;AAC1D,oCAAM,KAAN,EAAaojH,YAAb,EAA2BnX,SAA3B,EAAsCzgJ,OAAtC,EAA+C5N,QAA/C,EAAyDoiD,IAAzD;AACA,cAAKojH,YAAL,GAAoBA,YAApB;AACA,cAAKnX,SAAL,GAAiBA,SAAjB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKqW,uBAAL,GAA+B,KAA/B;AA5B0D;AA6B7D;;;;aACD,oBAAW;AACP,aAAKc,YAAL,CAAkBC,gBAAlB,CAAmC,KAAKpX,SAAxC;;AACA;AACH;;;aACD,uBAAc;AACV;AACH;;;aACD,kBAAS7iJ,KAAT,EAAgB85J,SAAhB,EAA2B;AACvB,8BAAqB,KAAKjX,SAA1B;AAAA,YAAQzqH,GAAR,mBAAQA,GAAR;AAAA,YAAaD,GAAb,mBAAaA,GAAb;;AACA,YAAI,CAACg+F,SAAS,CAACn2H,KAAD,EAAQo4B,GAAR,EAAaD,GAAb,CAAd,EAAiC;AAC7B,iBAAO,IAAP;AACH;;AACD,qBAAkB,KAAK6hI,YAAL,CAAkBhiC,cAAlB,IAAoCrD,oBAAtD;AAAA,YAAQhqF,KAAR,UAAQA,KAAR;;AACA,YAAMuvH,WAAW,GAAG,KAAKxD,aAAL,KAAuBoD,SAAvB,IAAoCpkD,SAAS,CAAC11G,KAAD,CAA7C,IAAwDA,KAAK,GAAG2qC,KAApF;AACA,eAAOuvH,WAAW,GAAG9hC,UAAU,CAACp4H,KAAD,CAAb,GAAuB;AAAE2qC,UAAAA,KAAK,EAALA,KAAF;AAASC,UAAAA,GAAG,EAAE0nF,qEAAS,CAACtyH,KAAD;AAAvB,SAAzC;AACH;;;aACD,0BAAiB2oF,KAAjB,EAAwB;AACpB,qBAAgBA,KAAK,IAAIgsC,oBAAzB;AAAA,YAAQ/pF,GAAR,UAAQA,GAAR;;AACA,+BAAqB,KAAKi4G,SAA1B;AAAA,YAAQzqH,GAAR,oBAAQA,GAAR;AAAA,YAAaD,GAAb,oBAAaA,GAAb;;AACA,YAAIq6F,mEAAO,CAAC,KAAKqwB,SAAL,CAAe7iJ,KAAhB,EAAuB4qC,GAAvB,CAAP,IAAsC,CAACurF,SAAS,CAACvrF,GAAD,EAAMxS,GAAN,EAAWD,GAAX,CAApD,EAAqE;AACjE;AACH;;AACD,aAAK0qH,SAAL,CAAeriH,UAAf,CAA0B8xF,qEAAS,CAAC1nF,GAAD,CAAnC;AACA,aAAKi4G,SAAL,CAAeU,MAAf;AACH;;;;IAvDoC0V;;AAyDzCc,EAAAA,0BAA0B,CAACjgI,IAA3B;AAAA,qBAAwHigI,0BAAxH,EAj4bsGrqK,gEAi4btG,CAAoK8lK,gBAApK,GAj4bsG9lK,gEAi4btG,CAAiM0xJ,kBAAjM,GAj4bsG1xJ,gEAi4btG,CAAgOA,sDAAhO,GAj4bsGA,gEAi4btG,CAA0PA,qDAA1P,GAj4bsGA,gEAi4btG,CAAmRA,kDAAnR;AAAA;;AACAqqK,EAAAA,0BAA0B,CAACz/H,IAA3B,kBAl4bsG5qC,gEAk4btG;AAAA,UAA4GqqK,0BAA5G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAl4bsGrqK,yEAk4btG;AAAA;SA1DMqqK;;;AA2DN;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;;;IACMI;MAAAA;;;;;AACF,0CAAYH,YAAZ,EAA0BnX,SAA1B,EAAqCzgJ,OAArC,EAA8C5N,QAA9C,EAAwDoiD,IAAxD,EAA8D;AAAA;;AAAA;;AAC1D,oCAAM,OAAN,EAAeojH,YAAf,EAA6BnX,SAA7B,EAAwCzgJ,OAAxC,EAAiD5N,QAAjD,EAA2DoiD,IAA3D;AACA,cAAKojH,YAAL,GAAoBA,YAApB;AACA,cAAKnX,SAAL,GAAiBA,SAAjB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKqW,uBAAL,GAA+B,KAA/B;AA7B0D;AA8B7D;;;;aACD,oBAAW;AACP,aAAKc,YAAL,CAAkBI,kBAAlB,CAAqC,KAAKvX,SAA1C;;AACA;AACH;;;aACD,uBAAc;AACV;AACH;;;aACD,kBAAS7iJ,KAAT,EAAgB85J,SAAhB,EAA2B;AACvB,+BAAqB,KAAKjX,SAA1B;AAAA,YAAQzqH,GAAR,oBAAQA,GAAR;AAAA,YAAaD,GAAb,oBAAaA,GAAb;;AACA,YAAI,CAACg+F,SAAS,CAACn2H,KAAD,EAAQo4B,GAAR,EAAaD,GAAb,CAAd,EAAiC;AAC7B,iBAAO,IAAP;AACH;;AACD,qBAAgB,KAAK6hI,YAAL,CAAkBhiC,cAAlB,IAAoCrD,oBAApD;AAAA,YAAQ/pF,GAAR,UAAQA,GAAR;;AACA,YAAMsvH,WAAW,GAAG,KAAKxD,aAAL,KAAuBoD,SAAvB,IAAoClvH,GAApC,IAA2C5qC,KAAK,GAAG4qC,GAAvE;AACA,eAAOsvH,WAAW,GAAG9hC,UAAU,CAACp4H,KAAD,CAAb,GAAuB;AAAE2qC,UAAAA,KAAK,EAAE2nF,qEAAS,CAACtyH,KAAD,CAAlB;AAA2B4qC,UAAAA,GAAG,EAAHA;AAA3B,SAAzC;AACH;;;aACD,0BAAiB+9C,KAAjB,EAAwB;AACpB,qBAAkBA,KAAK,IAAIgsC,oBAA3B;AAAA,YAAQhqF,KAAR,UAAQA,KAAR;;AACA,+BAAqB,KAAKk4G,SAA1B;AAAA,YAAQzqH,GAAR,oBAAQA,GAAR;AAAA,YAAaD,GAAb,oBAAaA,GAAb;;AACA,YAAIq6F,mEAAO,CAAC,KAAKqwB,SAAL,CAAe7iJ,KAAhB,EAAuB2qC,KAAvB,CAAP,IAAwC,CAACwrF,SAAS,CAACxrF,KAAD,EAAQvS,GAAR,EAAaD,GAAb,CAAtD,EAAyE;AACrE;AACH;;AACD,aAAK0qH,SAAL,CAAeriH,UAAf,CAA0B8xF,qEAAS,CAAC3nF,KAAD,CAAnC;AACA,aAAKk4G,SAAL,CAAeU,MAAf;AACH;;;;IAxDsC0V;;AA0D3CkB,EAAAA,4BAA4B,CAACrgI,IAA7B;AAAA,qBAA0HqgI,4BAA1H,EA78bsGzqK,gEA68btG,CAAwK8lK,gBAAxK,GA78bsG9lK,gEA68btG,CAAqM0xJ,kBAArM,GA78bsG1xJ,gEA68btG,CAAoOA,sDAApO,GA78bsGA,gEA68btG,CAA8PA,qDAA9P,GA78bsGA,gEA68btG,CAAuRA,kDAAvR;AAAA;;AACAyqK,EAAAA,4BAA4B,CAAC7/H,IAA7B,kBA98bsG5qC,gEA88btG;AAAA,UAA8GyqK,4BAA9G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA98bsGzqK,yEA88btG;AAAA;SA3DMyqK;;;AA4DN;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACME;MAAAA;;;;AAENA,EAAAA,oBAAoB,CAACvgI,IAArB;AAAA,qBAAkHugI,oBAAlH;AAAA;;AACAA,EAAAA,oBAAoB,CAACx8H,IAArB,kBAt+bsGnuC,+DAs+btG;AAAA,UAAmH2qK;AAAnH;AAKAA,EAAAA,oBAAoB,CAACt8H,IAArB,kBA3+bsGruC,+DA2+btG;AAAA,cAAmJ,CAACM,0DAAD,EAAewkH,yEAAf,CAAnJ;AAAA;SARM6lD;;;AASN;AAAA;AAAA;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;AAENA,EAAAA,eAAe,CAACxgI,IAAhB;AAAA,qBAA6GwgI,eAA7G;AAAA;;AACAA,EAAAA,eAAe,CAACz8H,IAAhB,kBA/gcsGnuC,+DA+gctG;AAAA,UAA8G4qK;AAA9G;AAeAA,EAAAA,eAAe,CAACv8H,IAAhB,kBA9hcsGruC,+DA8hctG;SAlBM4qK;;;AAmBN;AAAA;AAAA;AA0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;AAENA,EAAAA,uBAAuB,CAACzgI,IAAxB;AAAA,qBAAqHygI,uBAArH;AAAA;;AACAA,EAAAA,uBAAuB,CAAC18H,IAAxB,kBA/lcsGnuC,+DA+lctG;AAAA,UAAsH6qK;AAAtH;AAcAA,EAAAA,uBAAuB,CAACx8H,IAAxB,kBA7mcsGruC,+DA6mctG;AAAA,eAA0J,CAClJquH,iBADkJ,EAElJ4c,kBAFkJ,EAGlJsC,iBAHkJ,EAIlJO,gBAJkJ,EAKlJ4B,eALkJ,EAMlJY,gBANkJ,CAA1J;AAAA,cAOiB,CACLhwI,0DADK,EAELqqK,oBAFK,EAGLxmC,qEAHK,EAILymC,eAJK,EAKLtlD,uEALK,EAMLR,yEANK,CAPjB,EAcW6lD,oBAdX,EAeQC,eAfR;AAAA;SAjBMC;;;AAiCN;AAAA;AAAA;;AAoCA,IAAMC,sBAAsB,GAAG,CAC3BjqB,uBAD2B,CAA/B;AAGA;AACA;AACA;AACA;AACA;AACA;;IACMkqB;MAAAA;;;;AAENA,EAAAA,oBAAoB,CAAC3gI,IAArB;AAAA,qBAAkH2gI,oBAAlH;AAAA;;AACAA,EAAAA,oBAAoB,CAAC58H,IAArB,kBA7qcsGnuC,+DA6qctG;AAAA,UAAmH+qK;AAAnH;AACAA,EAAAA,oBAAoB,CAAC18H,IAArB,kBA9qcsGruC,+DA8qctG;AAAA,cAAmJ,CAACM,0DAAD,CAAnJ;AAAA;SAJMyqK;;;AAKN;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;AAENA,EAAAA,cAAc,CAAC5gI,IAAf;AAAA,qBAA4G4gI,cAA5G;AAAA;;AACAA,EAAAA,cAAc,CAAC78H,IAAf,kBAnucsGnuC,+DAmuctG;AAAA,UAA6GgrK;AAA7G;AAkBAA,EAAAA,cAAc,CAAC38H,IAAf,kBArvcsGruC,+DAqvctG;AAAA,eAAwI,CAChIqlJ,kBADgI,EAEhIpa,kBAFgI,EAGhIsC,iBAHgI,EAIhIO,gBAJgI,EAKhI4B,eALgI,EAMhIY,gBANgI,CAAxI;AAAA,cAOiB,CACLhwI,0DADK,EAELqqK,oBAFK,EAGLE,uBAHK,EAIL1mC,qEAJK,EAKLymC,eALK,EAMLG,oBANK,EAOLjmD,yEAPK,EAQLud,+EARK,CAPjB,EAgBWsoC,oBAhBX,EAiBQC,eAjBR;AAAA;SArBMI;;;AAuCN;AAAA;AAAA;AAwCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;AAENA,EAAAA,eAAe,CAAC7gI,IAAhB;AAAA,qBAA6G6gI,eAA7G;AAAA;;AACAA,EAAAA,eAAe,CAAC98H,IAAhB,kBAp1csGnuC,+DAo1ctG;AAAA,UAA8GirK;AAA9G;AAGAA,EAAAA,eAAe,CAAC58H,IAAhB,kBAv1csGruC,+DAu1ctG;AAAA,cAAyI,CAC7HgrK,cAD6H,EAE7HH,uBAF6H,CAAzI,EAGWG,cAHX,EAIQH,uBAJR;AAAA;SANMI;;;AAWN;AAAA;AAAA;AAcA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,8CAAYphJ,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,eAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;;WACD,eAAe;AACX,eAAO,IAAP;AACH;;;;IAP0CyiI;;AAS/C2e,EAAAA,gCAAgC,CAAC9gI,IAAjC;AAAA,qBAA8H8gI,gCAA9H,EAt3csGlrK,gEAs3ctG,CAAgL0iI,8EAAhL;AAAA;;AACAwoC,EAAAA,gCAAgC,CAACp+H,IAAjC,kBAv3csG9sC,gEAu3ctG;AAAA,UAAkHkrK,gCAAlH;AAAA;AAAA,eAv3csGlrK,iEAu3ctG,CAAqM,CAC7L;AACIoD,MAAAA,OAAO,EAAEmpJ,iBADb;AAEIn8G,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMi7I,gCAAN;AAAA,OAAD;AAF3B,KAD6L,CAArM,GAv3csGlrK,yEAu3ctG;AAAA;AAAA;AAAA;AAAA;AAAA;SAVMkrK;;;AAgBN;AAAA;AAAA;AAcA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;AAENA,EAAAA,eAAe,CAAC/gI,IAAhB;AAAA,qBAA6G+gI,eAA7G;AAAA;;AACAA,EAAAA,eAAe,CAACh9H,IAAhB,kBAl5csGnuC,+DAk5ctG;AAAA,UAA8GmrK;AAA9G;AAKAA,EAAAA,eAAe,CAAC98H,IAAhB,kBAv5csGruC,+DAu5ctG;AAAA,cAAyI,CAACM,0DAAD,EAAe6jI,qEAAf,EAA2Brf,yEAA3B,CAAzI;AAAA;SARMqmD;;;AASN;AAAA;AAAA;AAiBA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,+CAAYthJ,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,eAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;;WACD,eAAe;AACX,eAAO,IAAP;AACH;;;;IAP2CwsI;;AAShD8U,EAAAA,iCAAiC,CAAChhI,IAAlC;AAAA,qBAA+HghI,iCAA/H,EAr7csGprK,gEAq7ctG,CAAkL0iI,8EAAlL;AAAA;;AACA0oC,EAAAA,iCAAiC,CAACt+H,IAAlC,kBAt7csG9sC,gEAs7ctG;AAAA,UAAmHorK,iCAAnH;AAAA;AAAA,eAt7csGprK,iEAs7ctG,CAAwM,CAChM;AACIoD,MAAAA,OAAO,EAAEkzJ,kBADb;AAEIlmH,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMm7I,iCAAN;AAAA,OAAD;AAF3B,KADgM,CAAxM,GAt7csGprK,yEAs7ctG;AAAA;AAAA;AAAA;AAAA;AAAA;SAVMorK;;;AAgBN;AAAA;AAAA;AAcA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;AAENA,EAAAA,gBAAgB,CAACjhI,IAAjB;AAAA,qBAA8GihI,gBAA9G;AAAA;;AACAA,EAAAA,gBAAgB,CAACl9H,IAAjB,kBAj9csGnuC,+DAi9ctG;AAAA,UAA+GqrK;AAA/G;AAYAA,EAAAA,gBAAgB,CAACh9H,IAAjB,kBA79csGruC,+DA69ctG;AAAA,eAA4I,CAAC;AAAEoD,MAAAA,OAAO,EAAE8yJ,aAAX;AAA0B3yJ,MAAAA,QAAQ,EAAEkhI,iEAAYA;AAAhD,KAAD,CAA5I;AAAA,cAA4M,CAChMnkI,0DADgM,EAEhM6qK,eAFgM,EAGhMH,cAHgM,EAIhM7mC,qEAJgM,EAKhM7e,uEALgM,EAMhMslD,eANgM,EAOhM9lD,yEAPgM,CAA5M,EAQW8lD,eARX;AAAA;SAfMS;;;AAwBN;AAAA;AAAA;;AA2BA,IAAMC,sBAAsB,GAAG,CAC3BpC,kBAD2B,EAE3BhB,uBAF2B,EAG3BvC,+BAH2B,EAI3BmB,2BAJ2B,EAK3B2D,4BAL2B,EAM3BJ,0BAN2B,CAA/B;AAQA,IAAMkB,mBAAmB,GAAG,CACxBV,uBADwB,EAExBM,eAFwB,EAGxB7lD,uEAHwB,EAIxBR,yEAJwB,CAA5B;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM0mD;MAAAA;;;;AAENA,EAAAA,eAAe,CAACphI,IAAhB;AAAA,qBAA6GohI,eAA7G;AAAA;;AACAA,EAAAA,eAAe,CAACr9H,IAAhB,kBAxjdsGnuC,+DAwjdtG;AAAA,UAA8GwrK;AAA9G;AAcAA,EAAAA,eAAe,CAACn9H,IAAhB,kBAtkdsGruC,+DAskdtG;AAAA,cAAyI,CAACM,0DAAD,EAAeirK,mBAAf,CAAzI;AAAA;SAjBMC;;;AAkBN;AAAA;AAAA;AASA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,+CAAY3hJ,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,eAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;;WACD,eAAe;AACX,eAAO,IAAP;AACH;;;;IAP2Cu2I;;AAShDoL,EAAAA,iCAAiC,CAACrhI,IAAlC;AAAA,qBAA+HqhI,iCAA/H,EA5ldsGzrK,gEA4ldtG,CAAkL0iI,8EAAlL;AAAA;;AACA+oC,EAAAA,iCAAiC,CAAC3+H,IAAlC,kBA7ldsG9sC,gEA6ldtG;AAAA,UAAmHyrK,iCAAnH;AAAA;AAAA,eA7ldsGzrK,iEA6ldtG,CAAwM,CAChM;AACIoD,MAAAA,OAAO,EAAEi9J,kBADb;AAEIjwH,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMw7I,iCAAN;AAAA,OAAD;AAF3B,KADgM,CAAxM,GA7ldsGzrK,yEA6ldtG;AAAA;AAAA;AAAA;AAAA;AAAA;SAVMyrK;;;AAgBN;AAAA;AAAA;;AAcA,IAAMC,sBAAsB,GAAG,CAC3BvJ,oCAD2B,EAE3BrE,iBAF2B,EAG3B2N,iCAH2B,EAI3BlJ,mBAJ2B,EAK3BjC,sCAL2B,EAM3B4B,mCAN2B,EAO3BzB,qBAP2B,CAA/B;AASA,IAAMkL,mBAAmB,GAAG,CACxBR,eADwB,EAExBhnC,qEAFwB,EAGxB7e,uEAHwB,EAIxBylD,oBAJwB,EAKxBjmD,yEALwB,CAA5B;AAOA,IAAM16C,SAAS,GAAG,CACdkzF,oBADc,EAEdpE,YAFc,EAGd2B,cAHc,EAIdW,cAJc,EAKdU,mBALc,EAMdM,gBANc,EAOd;AACIp5J,EAAAA,OAAO,EAAE8yJ,aADb;AAEI3yJ,EAAAA,QAAQ,EAAEkhI,iEAAYA;AAF1B,CAPc,CAAlB;AAYA;AACA;AACA;AACA;;IACMmnC;MAAAA;;;;AAENA,EAAAA,gBAAgB,CAACxhI,IAAjB;AAAA,qBAA8GwhI,gBAA9G;AAAA;;AACAA,EAAAA,gBAAgB,CAACz9H,IAAjB,kBAppdsGnuC,+DAopdtG;AAAA,UAA+G4rK;AAA/G;AAiBAA,EAAAA,gBAAgB,CAACv9H,IAAjB,kBArqdsGruC,+DAqqdtG;AAAA,eAA4IoqE,SAA5I;AAAA,eAAkK9pE,0DAAlK,SAAmLqrK,mBAAnL;AAAA;SApBMC;;;AAqBN;AAAA;AAAA;AAUA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,mDAAY/hJ,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,eAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;;WACD,eAAe;AACX,eAAO,IAAP;AACH;;;;IAP+CsnG;;AASpDy6C,EAAAA,qCAAqC,CAACzhI,IAAtC;AAAA,qBAAmIyhI,qCAAnI,EA5rdsG7rK,gEA4rdtG,CAA0L0iI,8EAA1L;AAAA;;AACAmpC,EAAAA,qCAAqC,CAAC/+H,IAAtC,kBA7rdsG9sC,gEA6rdtG;AAAA,UAAuH6rK,qCAAvH;AAAA;AAAA,eA7rdsG7rK,iEA6rdtG,CAAoN,CAC5M;AACIoD,MAAAA,OAAO,EAAEguH,QADb;AAEIhhF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM47I,qCAAN;AAAA,OAAD;AAF3B,KAD4M,CAApN,GA7rdsG7rK,yEA6rdtG;AAAA;AAAA;AAAA;AAAA;AAAA;SAVM6rK;;;AAgBN;AAAA;AAAA;;AAcA,IAAMzpC,oBAAoB,GAAG,CACzB+gC,uBADyB,EAEzB0I,qCAFyB,EAGzBlJ,0BAHyB,CAA7B;AAKA;AACA;AACA;AACA;;IACMmJ;MAAAA;;;;AAENA,EAAAA,oBAAoB,CAAC1hI,IAArB;AAAA,qBAAkH0hI,oBAAlH;AAAA;;AACAA,EAAAA,oBAAoB,CAAC39H,IAArB,kBA7tdsGnuC,+DA6tdtG;AAAA,UAAmH8rK;AAAnH;AAYAA,EAAAA,oBAAoB,CAACz9H,IAArB,kBAzudsGruC,+DAyudtG;AAAA,eAAoJ,CAC5I;AAAEoD,MAAAA,OAAO,EAAE8yJ,aAAX;AAA0B3yJ,MAAAA,QAAQ,EAAEkhI,iEAAYA;AAAhD,KAD4I,CAApJ;AAAA,cAEiB,CACLnkI,0DADK,EAEL6jI,qEAFK,EAGLgnC,eAHK,EAILH,cAJK,EAKLY,gBALK,EAMLtmD,uEANK,EAOLR,yEAPK,EAQL8lD,eARK,CAFjB,EAWWA,eAXX;AAAA;SAfMkB;;;AA2BN;AAAA;AAAA;;AA0BA,IAAMC,iBAAiB,GAAG,CACtBd,eADsB,EAEtBE,eAFsB,EAGtBE,gBAHsB,EAItBO,gBAJsB,EAKtBJ,eALsB,EAMtBM,oBANsB,CAA1B;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM5lJ;MAAAA;;;;AAENA,EAAAA,gBAAgB,CAACkkB,IAAjB;AAAA,qBAA8GlkB,gBAA9G;AAAA;;AACAA,EAAAA,gBAAgB,CAACioB,IAAjB,kBAzzdsGnuC,+DAyzdtG;AAAA,UAA+GkmB;AAA/G;AAWAA,EAAAA,gBAAgB,CAACmoB,IAAjB,kBAp0dsGruC,+DAo0dtG;AAAA,cAA2I+rK,iBAA3I,EAA8Jd,eAA9J,EACQE,eADR,EAEQE,gBAFR,EAGQO,gBAHR,EAIQJ,eAJR,EAKQM,oBALR;AAAA;SAdM5lJ;;;AAoBN;AAAA;AAAA;AAQA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACp/eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;AA6P0GlmB,IAAAA,2DAElG;;;;;;cAFkGA;;AAAAA,IAAAA,6DAI9F;AAJ8FA,IAAAA,yDAQ1F;AAAA,wBAR0FA,4DAQ1F;AAAA;AAAA,mBAR0FA,4DAQ1F;AAAA,aAAS,uCAAT;AAAA;AAR0FA,IAAAA,qDAW1F;AAX0FA,IAAAA,2DAY9F;;;;;iBAZ8FA;AAAAA,IAAAA,yDAO1F;AAP0FA,IAAAA,0DAS1F;AAT0FA,IAAAA,wDAW1F;AAX0FA,IAAAA,iEAW1F;;;;;;AAX0FA,IAAAA,sEAGlG;AAHkGA,IAAAA,yDAI9F;AAJ8FA,IAAAA,oEAalG;;;;iBAbkGA;AAAAA,IAAAA,wDAMvE;AANuEA,IAAAA,yDAMvE;;;;;;;;;;;AANuEA,IAAAA,6DA+uB9F;AA/uB8FA,IAAAA,qDA+uBhB;AA/uBgBA,IAAAA,2DA+uBL;;;;iBA/uBKA;AAAAA,IAAAA,yDA+uBzD;AA/uByDA,IAAAA,wDA+uBhB;AA/uBgBA,IAAAA,gEA+uBhB;;;;;;AA/uBgBA,IAAAA,2DAgvB9F;;;;;;AAhvB8FA,IAAAA,2DAmvB1F;;;;;;;;AAnvB0FA,IAAAA,yDAovB1F;;;;iBApvB0FA;AAAAA,IAAAA,yDAovB7E;;;;;;AApvB6EA,IAAAA,2DAuvB9F;;;;;;AAvvB8FA,IAAAA,wDAwvB9F;;;;iBAxvB8FA;AAAAA,IAAAA,yDAwvBxD;;;;;;;;;AAxvBwDA,IAAAA,2DAklDtG;;;;;;;;;;;;;;AAllDsGA,IAAAA,yDAmlDtG;;;;iBAnlDsGA;AAAAA,IAAAA,yDAolDpG,iEAplDoGA,8DAolDpG;;;;;;AAplDoGA,IAAAA,6DA0+ElG;AA1+EkGA,IAAAA,qDA2+ElE;AA3+EkEA,IAAAA,2DA2+EvD;AA3+EuDA,IAAAA,6DA4+E9F;AA5+E8FA,IAAAA,wDA6+E1F;AA7+E0FA,IAAAA,2DAi/E9F;;;;iBAj/E8FA;AAAAA,IAAAA,yDA0+E/C;AA1+E+CA,IAAAA,wDA2+ElE;AA3+EkEA,IAAAA,gEA2+ElE;AA3+EkEA,IAAAA,wDA6+EvD;AA7+EuDA,IAAAA,0DA6+EvD;AA7+EuDA,IAAAA,wDA8+ExD;AA9+EwDA,IAAAA,0DA8+ExD;AA9+EwDA,IAAAA,wDA++EzD;AA/+EyDA,IAAAA,0DA++EzD;AA/+EyDA,IAAAA,wDAg/E3D;AAh/E2DA,IAAAA,0DAg/E3D;;;;;;AAh/E2DA,IAAAA,2DAm/ElG;;;;;;AAn/EkGA,IAAAA,2DAy/E9F;;;;;;;;AAz/E8FA,IAAAA,yDA0/E9F;;;;iBA1/E8FA;AAAAA,IAAAA,yDA0/EjF;;;;;;AA1/EiFA,IAAAA,6DAq/ElG;AAr/EkGA,IAAAA,yDAy/E9F;AAz/E8FA,IAAAA,yDA0/E9F;AA1/E8FA,IAAAA,2DA2/ElG;;;;iBA3/EkGA;AAAAA,IAAAA,yDAs/E9F;AAt/E8FA,IAAAA,wDAy/EjF;AAz/EiFA,IAAAA,yDAy/EjF;AAz/EiFA,IAAAA,wDA0/E3C;AA1/E2CA,IAAAA,yDA0/E3C;;;;;;AA1/E2CA,IAAAA,wDA8/E9F;;;;;AA9/E8FA,IAAAA,yDA+/E1F;;;;;;AA//E0FA,IAAAA,yDA8/E9F;;;;iBA9/E8FA;AAAAA,IAAAA,yDA8/EzE;;;;;;;AA1vFjC,IAAMgmH,SAAS,GAAG,SAAZA,SAAY,CAAC11G,KAAD;AAAA,SAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKud,SAAvC;AAAA,CAAlB;AACA;AACA;AACA;;;AACA,IAAMw+I,QAAQ,GAAG,SAAXA,QAAW,CAAC/7J,KAAD;AAAA,SAAW,CAAC,CAACA,KAAb;AAAA,CAAjB;;AACA,IAAM0uH,WAAW,GAAG,SAAdA,WAAc,CAACjU,UAAD;AAAA,SAAgBz2B,MAAM,CAACy2B,UAAD,CAAN,CAAmBhjH,IAAnB,GAA0BkT,KAA1B,CAAgC,GAAhC,CAAhB;AAAA,CAApB;;AACA,IAAMijH,cAAc,GAAG,8CAAvB;AACA;AACA;AACA;;AACA,IAAIxZ,IAAI;AACR,GAAC,UAAUA,IAAV,EAAgB;AACbA,IAAAA,IAAI,CAACA,IAAI,CAAC,KAAD,CAAJ,GAAc,EAAf,CAAJ,GAAyB,KAAzB;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,KAAD,CAAJ,GAAc,CAAf,CAAJ,GAAwB,KAAxB;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,OAAD,CAAJ,GAAgB,EAAjB,CAAJ,GAA2B,OAA3B;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,OAAD,CAAJ,GAAgB,EAAjB,CAAJ,GAA2B,OAA3B;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,MAAD,CAAJ,GAAe,EAAhB,CAAJ,GAA0B,MAA1B;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,OAAD,CAAJ,GAAgB,EAAjB,CAAJ,GAA2B,OAA3B;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,MAAD,CAAJ,GAAe,EAAhB,CAAJ,GAA0B,MAA1B;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,IAAD,CAAJ,GAAa,EAAd,CAAJ,GAAwB,IAAxB;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,OAAD,CAAJ,GAAgB,EAAjB,CAAJ,GAA2B,OAA3B;AACAA,IAAAA,IAAI,CAACA,IAAI,CAAC,MAAD,CAAJ,GAAe,EAAhB,CAAJ,GAA0B,MAA1B;AACH,GAXD,EAWGA,IAAI,KAAKA,IAAI,GAAG,EAAZ,CAXP,CADQ;;AAAA,SAAJA,IAAI;AAAA,IAAR;;AAaA;AACA;AACA;AACA,IAAM4nD,gCAAgC,GAAG,uDAAzC;AACA;AACA;AACA;;AACA,IAAMC,+BAA+B,GAAG,sBAAxC;AACA;AACA;AACA;;AACA,IAAMC,cAAc,GAAG,UAAvB;AACA;AACA;AACA;;AACA,IAAMvtC,UAAU,GAAG,SAAbA,UAAa,CAACvsH,OAAD,EAAUq4G,UAAV,EAAyB;AACxC,MAAMmU,SAAS,GAAGF,WAAW,CAACjU,UAAD,CAA7B;AACA,SAAOsT,OAAO,CAACW,WAAW,CAACtsH,OAAO,CAAC42B,SAAT,CAAX,CAA+B1zB,IAA/B,CAAoC,UAAC0zB,SAAD;AAAA,WAAe41F,SAAS,CAACr7G,OAAV,CAAkBylB,SAAlB,KAAgC,CAA/C;AAAA,GAApC,CAAD,CAAd;AACH,CAHD;AAIA;AACA;AACA;;;AACA,IAAMi1F,SAAS,GAAG,SAAZA,SAAY,CAAC7rH,OAAD,EAAa;AAC3B,MAAMuyD,IAAI,GAAGvyD,OAAO,CAAC+2C,qBAAR,EAAb;AACA,SAAO,CAAC,EAAEwb,IAAI,CAACv0D,KAAL,IAAcu0D,IAAI,CAACh4D,MAArB,CAAD,IAAiCpN,MAAM,CAACipD,gBAAP,CAAwBp2C,OAAxB,EAAiCgsH,UAAjC,KAAgD,QAAxF;AACH,CAHD;AAIA;AACA;AACA;;;AACA,IAAMP,WAAW,GAAG,SAAdA,WAAc,CAACzrH,OAAD,EAAqC;AAAA,MAA3BksH,eAA2B,uEAAT,IAAS;;AACrD,MAAIlsH,OAAO,CAACqkF,OAAZ,EAAqB;AACjB,QAAMA,OAAO,GAAGrkF,OAAO,CAACqkF,OAAR,CAAgBt8E,WAAhB,EAAhB;AACA,QAAMytC,QAAQ,GAAGx1C,OAAO,CAAC83D,YAAR,CAAqB,UAArB,CAAjB;AACA,QAAMiiG,aAAa,GAAGvkH,QAAQ,KAAK,IAAb,IAAqB,CAACpf,KAAK,CAACof,QAAD,CAA3B,IAAyCA,QAAQ,GAAG,CAAC,CAA3E;AACA,QAAIo2E,SAAS,GAAG,KAAhB;;AACA,QAAIJ,cAAc,CAAC5iH,IAAf,CAAoBy7E,OAApB,CAAJ,EAAkC;AAC9BunC,MAAAA,SAAS,GAAG,CAAC5rH,OAAO,CAAC+kB,QAArB;AACH,KAFD,MAGK;AACD6mG,MAAAA,SAAS,GAAGmuC,aAAZ;AACH;;AACD,WAAOnuC,SAAS,KAAK,CAACM,eAAD,IAAoBL,SAAS,CAAC7rH,OAAD,CAAlC,CAAhB;AACH;;AACD,SAAO,KAAP;AACH,CAfD;AAgBA;AACA;AACA;;;AACA,IAAMg6J,iBAAiB,GAAG,SAApBA,iBAAoB,CAAClsE,UAAD,EAAa17F,QAAb,EAAuB4N,OAAvB,EAAmC;AACzD,OAAK,IAAMi4G,SAAX,IAAwBnqB,UAAxB,EAAoC;AAChC,QAAImqB,SAAJ,EAAe;AACX7lH,MAAAA,QAAQ,CAAC8C,YAAT,CAAsB8K,OAAtB,EAA+Bi4G,SAA/B,EAA0CnqB,UAAU,CAACmqB,SAAD,CAApD;AACH;AACJ;AACJ,CAND;AAOA;AACA;AACA;AACA;AACA;;;AACA,IAAMgiD,kBAAkB,GAAG,SAArBA,kBAAqB,CAACr8J,KAAD,EAAW;AAClC,MAAIk+E,QAAQ,CAACl+E,KAAD,CAAZ,EAAqB;AACjB,WAAOs8J,qBAAqB,CAACt8J,KAAD,CAA5B;AACH;;AACD,MAAIs4B,QAAQ,CAACt4B,KAAD,CAAZ,EAAqB;AACjB,WAAOu8J,qBAAqB,CAACv8J,KAAD,CAA5B;AACH;;AACD,MAAIgP,KAAK,CAACusC,OAAN,CAAcv7C,KAAd,CAAJ,EAA0B;AACtB,WAAOw8J,oBAAoB,CAACx8J,KAAD,CAA3B;AACH;AACJ,CAVD;;AAWA,IAAMs8J,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACt8J,KAAD,EAAW;AACrC,MAAM67C,OAAO,GAAG,EAAhB;AACAtvC,EAAAA,MAAM,CAAC9B,IAAP,CAAYzK,KAAZ,EAAmBtK,OAAnB,CAA2B,UAAAsjC,SAAS,EAAI;AACpC,QAAMyjI,gBAAgB,GAAGC,kBAAkB,CAAC1jI,SAAD,CAA3C;;AACA,QAAIh5B,KAAK,CAACg5B,SAAD,CAAL,IAAoByjI,gBAAgB,CAAC,CAAD,CAAxC,EAA6C;AACzC5gH,MAAAA,OAAO,CAAC52C,IAAR,OAAA42C,OAAO,qMAAS4gH,gBAAT,EAAP;AACH;AACJ,GALD;AAMA,SAAO5gH,OAAP;AACH,CATD;;AAUA,IAAM0gH,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACv8J,KAAD,EAAW;AACrC,MAAM67C,OAAO,GAAG,EAAhB;AACA,MAAM8gH,YAAY,GAAGD,kBAAkB,CAAC18J,KAAD,CAAvC;AACA28J,EAAAA,YAAY,CAACjnK,OAAb,CAAqB,UAAAsjC,SAAS,EAAI;AAC9B6iB,IAAAA,OAAO,CAAC52C,IAAR,CAAa+zB,SAAb;AACH,GAFD;AAGA,SAAO6iB,OAAP;AACH,CAPD;;AAQA,IAAM2gH,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACx8J,KAAD,EAAW;AACpC,MAAM67C,OAAO,GAAG,EAAhB;AACA77C,EAAAA,KAAK,CAACtK,OAAN,CAAc,UAACsjC,SAAD,EAAe;AACzB,QAAM0L,OAAO,GAAGg4H,kBAAkB,CAAC1jI,SAAD,CAAlC;;AACA,QAAI0L,OAAO,CAAC,CAAD,CAAX,EAAgB;AACZmX,MAAAA,OAAO,CAAC52C,IAAR,OAAA42C,OAAO,qMAASnX,OAAT,EAAP;AACH;AACJ,GALD;AAMA,SAAOmX,OAAP;AACH,CATD;AAUA;AACA;AACA;;;AACA,IAAM+gH,iBAAiB,GAAG,CACtB,SADsB,EAEtB,YAFsB,EAGtB,uBAHsB,EAItB,wBAJsB,EAKtB,0BALsB,EAMtB,wBANsB,EAOtB,QAPsB,EAQtB,QARsB,EAStB,OATsB,EAUtB,aAVsB,EAWtB,oBAXsB,EAYxBzxJ,IAZwB,CAYnB,GAZmB,CAA1B;AAaA;AACA;AACA;;AACA,IAAM5H,cAAc,GAAG,SAAjBA,cAAiB,OAA8B;AAAA,MAAZlU,KAAY,QAA3Bw1H,aAA2B;AACjDx1H,EAAAA,KAAK,CAAC8kD,eAAN;AACA9kD,EAAAA,KAAK,CAACkU,cAAN;AACH,CAHD;AAIA;AACA;AACA;;;AACA,IAAMmzH,iBAAiB,GAAG,SAApBA,iBAAoB,GAAM;AAC5B,SAAO,OAAOnnI,MAAP,KAAkB,WAAzB;AACH,CAFD;AAGA;AACA;AACA;;;AACA,IAAMstK,iBAAiB,GAAG,SAApBA,iBAAoB,CAAA3vC,OAAO;AAAA,SAAI,UAAC4vC,SAAD;AAAA,WAAe3pE,yCAAE,CAAC2pE,SAAD,CAAF,CAAc1tK,IAAd,CAAmBqyB,sDAAK,CAAC,GAAD,CAAxB,EAA+BxiB,0DAAS,CAACiuH,OAAD,CAAxC,CAAf;AAAA,GAAJ;AAAA,CAAjC;AACA;AACA;AACA;;;AACA,IAAM6vC,iBAAiB,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,IAArB,EAA2B,IAA3B,EAAiC,IAAjC,EAAuC,IAAvC,CAA1B;AACA;AACA;AACA;;AACA,IAAMC,aAAa,GAAG,CAAC,KAAD,EAAQ,MAAR,EAAgB,OAAhB,EAAyB,QAAzB,CAAtB;AACA;AACA;AACA;;AACA,IAAM1kI,QAAQ,GAAG,SAAXA,QAAW,CAACt4B,KAAD;AAAA,SAAWA,KAAK,YAAYgkF,MAAjB,IAA2B,OAAOhkF,KAAP,KAAiB,QAAvD;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAMk+E,QAAQ,GAAG,SAAXA,QAAW,CAACl+E,KAAD;AAAA,SAAW01G,SAAS,CAAC11G,KAAD,CAAT,IAAoB,CAACgP,KAAK,CAACusC,OAAN,CAAcv7C,KAAd,CAArB,IAA6C,OAAOA,KAAP,KAAiB,QAAzE;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAMu4B,QAAQ,GAAG,SAAXA,QAAW,CAACv4B,KAAD;AAAA,SAAW,OAAOA,KAAP,KAAiB,QAAjB,IAA6B04B,QAAQ,CAAC14B,KAAD,CAAhD;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAMi9J,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACj9J,KAAD;AAAA,SAAWA,KAAK,IAAIu4B,QAAQ,CAACv4B,KAAD,CAAR,GAAkB,IAAlB,GAAyB,EAA7B,CAAhB;AAAA,CAA5B;AACA;AACA;AACA;;;AACA,IAAM08J,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC18J,KAAD;AAAA,SAAWA,KAAK,CAACvI,IAAN,GAAagb,OAAb,CAAqB,MAArB,EAA6B,GAA7B,EAAkC9H,KAAlC,CAAwC,GAAxC,CAAX;AAAA,CAA3B;AACA;AACA;AACA;;;AACA,IAAMuyJ,iBAAiB,GAAG,SAApBA,iBAAoB,CAAClhD,OAAD,EAAa;AACnC,OAAK,IAAIlxE,CAAC,GAAGkxE,OAAO,CAAC72G,MAAR,GAAiB,CAA9B,EAAiC2lC,CAAC,IAAI,CAAtC,EAAyCA,CAAC,EAA1C,EAA8C;AAC1C,QAAM7xC,SAAS,GAAG+iH,OAAO,CAAClxE,CAAD,CAAP,CAAW7xC,SAA7B;;AACA,SAAK,IAAIutD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvtD,SAAS,CAACkM,MAA9B,EAAsCqhD,CAAC,EAAvC,EAA2C;AACvC,UAAIvtD,SAAS,CAACutD,CAAD,CAAT,CAAa22G,QAAb,CAAsB,UAAtB,CAAJ,EAAuC;AACnC,eAAOnhD,OAAO,CAAClxE,CAAD,CAAd;AACH;AACJ;AACJ;AACJ,CATD;AAWA;AACA;AACA;AACA;;;IACMsyH;MAAAA;AACF,oCAAY9jJ,EAAZ,EAAgB;AAAA;;AACZ,WAAKA,EAAL,GAAUA,EAAV;AACA;AACR;AACA;;AACQ,WAAKlkB,MAAL,GAAc,WAAd;AACA;AACR;AACA;;AACQ,WAAKqxG,MAAL,GAAc,IAAInkG,wDAAJ,EAAd;AACA,WAAK+6J,oBAAL,GAA4B,IAA5B;AACH;AACD;AACJ;AACA;;;;;WACI,aAAYr9J,KAAZ,EAAmB;AACf,YAAIA,KAAK,YAAYnC,uDAArB,EAAkC;AAC9B,eAAKy/J,eAAL,GAAuBt9J,KAAvB;AACH,SAFD,MAGK,IAAIgP,KAAK,CAACusC,OAAN,CAAcv7C,KAAd,CAAJ,EAA0B;AAC3B,eAAKu9J,YAAL,GAAoBv9J,KAApB;AACH,SAFI,MAGA;AACD,gBAAM,IAAIyU,KAAJ,CAAU,kEAAV,CAAN;AACH;AACJ;;;WACD,eAAgB;AACZ,eAAO,KAAKrf,MAAL,KAAgB,WAAvB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAcqxG,MAAd,EAAsB+2D,EAAtB,EAA0B;AACtB,aAAK/2D,MAAL,CAAYv9F,IAAZ,CAAiBu9F,MAAjB;AACH;AACD;AACJ;AACA;;;;aACI,qBAAYA,MAAZ,EAAoB;AAChB,YAAI5qD,OAAO,GAAG,CAAC,mCAAD,CAAd;AACA,YAAMi7D,QAAQ,GAAGrQ,MAAM,CAACqQ,QAAP,GAAkBrQ,MAAM,CAACqQ,QAAzB,GAAoC,OAArD;AACA,YAAMuC,UAAU,GAAG5S,MAAM,CAAC4S,UAAP,GAAoB5S,MAAM,CAAC4S,UAA3B,GAAwC,MAA3D;AACA,YAAMokD,UAAU,GAAGh3D,MAAM,CAACi3D,QAAP,GAAkBrB,kBAAkB,CAAC51D,MAAM,CAACi3D,QAAR,CAApC,GAAwD,EAA3E;AACA7hH,QAAAA,OAAO,CAAC52C,IAAR,oBAAyB6xG,QAAzB,uBAA8CA,QAA9C,cAA0DuC,UAA1D;;AACA,YAAIokD,UAAU,CAACt4J,MAAX,GAAoB,CAAxB,EAA2B;AACvB02C,UAAAA,OAAO,GAAGA,OAAO,CAACy3C,MAAR,CAAemqE,UAAf,CAAV;AACH;;AACD,eAAO5hH,OAAO,CAAC1wC,IAAR,CAAa,GAAb,CAAP;AACH;;;;;;AAELiyJ,EAAAA,sBAAsB,CAACtjI,IAAvB;AAAA,qBAAoHsjI,sBAApH,EAA0G1tK,gEAA1G,CAA4JA,sDAA5J;AAAA;;AACA0tK,EAAAA,sBAAsB,CAAC5gI,IAAvB,kBAD0G9sC,gEAC1G;AAAA,UAAwG0tK,sBAAxG;AAAA;AAAA;AAAA;AAAA;AAD0G1tK,QAAAA,0DAC1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAD0GA,QAAAA,8DAC1G;AAD0GA,QAAAA,yDAElG,wEADR;AAD0GA,QAAAA,yDAGlG,4EAFR;AAD0GA,QAAAA,yDAclG,8EAdkGA,qEAclG,CAbR;AAAA;;AAAA;AAAA,kBAD0GA,0DAC1G;;AAD0GA,QAAAA,yDAErF,sBADrB;AAD0GA,QAAAA,wDAGnF,GAFvB;AAD0GA,QAAAA,yDAGnF,2CAFvB;AAD0GA,QAAAA,wDAcrE,GAbrC;AAD0GA,QAAAA,yDAcrE,yCAbrC;AAAA;AAAA;AAAA,iBAc4CisK,kDAd5C,EAc6HA,qDAd7H,EAcuOA,qDAdvO,EAckTA,8DAdlT;AAAA;AAAA;SApDMyB;;;AAmEN;AAAA;AAAA;;IAqCM7hD;AACF;AACJ;AACA;AACI,8BAAc;AAAA;;AACV,SAAKC,SAAL,GAAiB,KAAjB;AACH;AACD;AACJ;AACA;AACA;;;;;WACI,0BAAiB;AACb,WAAKA,SAAL,GAAiB,IAAjB;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WACI,8BAAqB;AACjB,aAAO,KAAKA,SAAZ;AACH;;;;;AAGL;AACA;AACA;;;AACA,IAAMmiD,2BAA2B,GAAG,IAAIrpJ,0DAAJ,CAAmB,4BAAnB,CAApC;AAEA;AACA;AACA;;IACMspJ;MAAAA;;;;;AACF,yCAAYhjE,MAAZ,EAAoBijE,cAApB,EAAoCrlD,GAApC,EAAyCslD,kBAAzC,EAA6D;AAAA;;AAAA;;AACzD,gCAAMljE,MAAN,EAAcijE,cAAd,EAA8BrlD,GAA9B;AACA,YAAKslD,kBAAL,GAA0BA,kBAA1B;AAFyD;AAG5D;;;;aACD,aAAIC,QAAJ,EAAc;AACV,YAAI,KAAKD,kBAAT,EAA6B;AACzB,iBAAO,KAAKA,kBAAL,CAAwBpyJ,GAAxB,CAA4BqyJ,QAA5B,CAAP;AACH;;AACD,ocAAiBA,QAAjB;AACH;;;;IAVqCtpD;;AAY1CmpD,EAAAA,2BAA2B,CAAC9jI,IAA5B;AAAA,qBAAyH8jI,2BAAzH,EAjG0GluK,uDAiG1G,CAAsKglH,sEAAtK,GAjG0GhlH,uDAiG1G,CAA8LkE,yEAA9L,MAjG0GlE,uDAiG1G,CAA4O2iI,8DAA5O,MAjG0G3iI,uDAiG1G,CAA4QiuK,2BAA5Q;AAAA;;AACAC,EAAAA,2BAA2B,CAAC3jI,KAA5B,kBAlG0GvqC,iEAkG1G;AAAA,WAA6HkuK,2BAA7H;AAAA,aAA6HA,2BAA7H;AAAA;SAbMA;;;AAcN;AAAA;AAAA;AAmBA;AACA;AACA;;;IACM98C;MAAAA;;;;;;;;;;;;IAAiBnM;;AAEvBmM,EAAAA,QAAQ,CAAChnF,IAAT;AAAA;AAAA;AAAA,gEA3H0GpqC,oEA2H1G,CAAsGoxH,QAAtG,SAAsGA,QAAtG;AAAA;AAAA;;AACAA,EAAAA,QAAQ,CAACxmF,IAAT,kBA5H0G5qC,gEA4H1G;AAAA,UAA0FoxH,QAA1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA5H0GpxH,yEA4H1G;AAAA;SAHMoxH;;;AAIN;AAAA;AAAA;AAgBA;AACA;AACA;;;IACMuxC;MAAAA;;;;;AACF,wCAAY74I,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,aAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;IAJoCsnG;;AAMzCuxC,EAAAA,0BAA0B,CAACv4H,IAA3B;AAAA,qBAAwHu4H,0BAAxH,EAtJ0G3iK,gEAsJ1G,CAAoKkE,8EAApK;AAAA;;AACAy+J,EAAAA,0BAA0B,CAAC/3H,IAA3B,kBAvJ0G5qC,gEAuJ1G;AAAA,UAA4G2iK,0BAA5G;AAAA;AAAA,eAvJ0G3iK,iEAuJ1G,CAA2R,CACnR;AACIoD,MAAAA,OAAO,EAAEguH,QADb;AAEIhhF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM0yI,0BAAN;AAAA,OAAD;AAF3B,KADmR,CAA3R,GAvJ0G3iK,yEAuJ1G;AAAA;SAPM2iK;;;AAaN;AAAA;AAAA;AAiBA;AACA;AACA;AACA;AACA;;;IACM4L;MAAAA;AACF,qCAAYrnH,IAAZ,EAAkBgD,WAAlB,EAA+BuqE,mBAA/B,EAAoD;AAAA;;AAChD,WAAKvtE,IAAL,GAAYA,IAAZ;AACA,WAAKgD,WAAL,GAAmBA,WAAnB;AACA,WAAKuqE,mBAAL,GAA2BA,mBAA3B;AACA;AACR;AACA;;AACQ,WAAKjkH,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACH;;;;WACD,eAAgB;AACZ,eAAO,IAAP;AACH;;;WACD,eAAuB;AACnB,eAAO,KAAK47J,UAAL,IAAmB,KAAK/5C,mBAAL,CAAyBz4G,GAAzB,CAA6B,YAA7B,CAA1B;AACH;;;aACD,2BAAkB;AAAA;;AACd,aAAKkrC,IAAL,CAAU9E,QAAV,CAAmB1iD,IAAnB,CAAwBkyB,qDAAI,CAAC,CAAD,CAA5B,EAAiChyB,SAAjC,CAA2C,YAAM;AAC7C,cAAM8S,OAAO,GAAG,MAAI,CAACw3C,WAAL,CAAiBj4C,aAAjB,CAA+BqwC,aAA/B,CAA6C,iBAA7C,CAAhB;;AACA5vC,UAAAA,OAAO,CAAC9K,YAAR,CAAqB,IAArB,EAA2B,MAAI,CAAC2Z,EAAhC;AACH,SAHD;AAIH;AACD;AACJ;AACA;;;;aACI,sBAAavY,CAAb,EAAgB;AACZA,QAAAA,CAAC,CAAC6K,cAAF;AACA,YAAMi5G,SAAS,GAAG,IAAIjB,gBAAJ,EAAlB;AACA,aAAKr7G,KAAL,CAAWgJ,IAAX,CAAgBszG,SAAhB;AACH;;;;;;AAELyhD,EAAAA,uBAAuB,CAACnkI,IAAxB;AAAA,qBAAqHmkI,uBAArH,EAlN0GvuK,gEAkN1G,CAA8JA,kDAA9J,GAlN0GA,gEAkN1G,CAAoLA,sDAApL,GAlN0GA,gEAkN1G,CAA8MkE,8EAA9M;AAAA;;AACAqqK,EAAAA,uBAAuB,CAACzhI,IAAxB,kBAnN0G9sC,gEAmN1G;AAAA,UAAyGuuK,uBAAzG;AAAA;AAAA;AAAA;AAAA;AAnN0GvuK,QAAAA,0DAmN1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAnN0GA,iEAmN1G,CAAiX,CACzWkuK,2BADyW,EAEzW;AACI9qK,MAAAA,OAAO,EAAE2hH,8EADb;AAEI30E,MAAAA,WAAW,EAAE89H;AAFjB,KAFyW,EAMzW;AACI9qK,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KANyW,CAAjX;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAnN0GvD,QAAAA,8DAmN1G;AAnN0GA,QAAAA,sEA8NjG,MAXT;AAnN0GA,QAAAA,6DAmO9F,aAhBZ;AAnN0GA,QAAAA,2DAoO1F,GAjBhB;AAnN0GA,QAAAA,2DAqO9F,EAlBZ;AAnN0GA,QAAAA,6DAuO9F,6BApBZ;AAnN0GA,QAAAA,yDA6OtF;AAAA,iBAAS,wBAAT;AAAA,UA1BpB;AAnN0GA,QAAAA,wDA+OtF,cA5BpB;AAnN0GA,QAAAA,2DAgP1F,IA7BhB;AAnN0GA,QAAAA,oEAkPlG,EA/BR;AAAA;;AAAA;AAnN0GA,QAAAA,wDA0OtF,GAvBpB;AAnN0GA,QAAAA,0DA0OtF,mEAvBpB;AAAA;AAAA;AAAA,iBAgC4C2iK,0BAhC5C;AAAA;AAAA;SAhCM4L;;;AAiEN;AAAA;AAAA;AAuDA;AACA;AACA;;;AACA,IAAM9oD,eAAe,GAAG;AACpB7sG,EAAAA,IAAI,EAAE,gCADc;AAEpB8sG,EAAAA,WAAW,EAAE,sBAFO;AAGpBC,EAAAA,YAAY,EAAE,CAAC,gBAAD,EAAmB,iBAAnB,CAHM;AAIpBC,EAAAA,WAAW,EAAE,UAJO;AAKpBC,EAAAA,OAAO,EAAE,EALW;AAMpBC,EAAAA,gBAAgB,EAAE;AANE,CAAxB;AASA;AACA;AACA;AACA;AACA;;IACM2oD;;;AAGN;AACA;AACA;;;AACA,SAASC,UAAT,CAAoB73C,QAApB,EAA8BtgF,SAA9B,EAAyCo4H,aAAzC,EAAwD;AACpD,UAAQA,aAAR;AACI,SAAK,OAAL;AACI,UAAMh3J,SAAS,GAAG4+B,SAAS,KAAK,MAAd,IAAwBA,SAAS,KAAK,OAAtC,GAAgD,YAAhD,GAA+D,YAAjF;AACA,UAAM0E,KAAK,GAAG1E,SAAS,KAAK,OAAd,IAAyBA,SAAS,KAAK,MAAvC,GAAgD,CAAC,GAAjD,GAAuD,GAArE;AACA,UAAM2E,GAAG,GAAG,CAAZ;AACA,aAAO,CACHruC,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,YAAKrzC,SAAL,cAAkBsjC,KAAlB;AAAX,OAAD,CADF,EAEHruC,6DAAO,WAAIiqH,QAAJ,iBAA0BhqH,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,YAAKrzC,SAAL,cAAkBujC,GAAlB;AAAX,OAAD,CAA/B,CAFJ,CAAP;;AAIJ,SAAK,QAAL;AACI,UAAM0zH,KAAK,GAAGr4H,SAAS,KAAK,IAAd,IAAsBA,SAAS,KAAK,MAApC,GAA6C,QAA7C,GAAwD,QAAtE;AACA,UAAMs4H,UAAU,GAAG,CAAnB;AACA,UAAMC,QAAQ,GAAG,CAAjB;AACA,UAAI9+J,MAAJ;;AACA,UAAIumC,SAAS,KAAK,MAAlB,EAA0B;AACtBvmC,QAAAA,MAAM,GAAG,KAAT;AACH,OAFD,MAGK,IAAIumC,SAAS,KAAK,MAAlB,EAA0B;AAC3BvmC,QAAAA,MAAM,GAAG,OAAT;AACH,OAFI,MAGA,IAAIumC,SAAS,KAAK,OAAlB,EAA2B;AAC5BvmC,QAAAA,MAAM,GAAG,MAAT;AACH,OAFI,MAGA;AACDA,QAAAA,MAAM,GAAG,QAAT;AACH;;AACD,aAAO,CACHnD,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,YAAK4jH,KAAL,cAAcC,UAAd,MAAX;AAAwCE,QAAAA,eAAe,EAAE/+J;AAAzD,OAAD,CADF,EAEHpD,6DAAO,WAAIiqH,QAAJ,iBAA0BhqH,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,YAAK4jH,KAAL,cAAcE,QAAd;AAAX,OAAD,CAA/B,CAFJ,CAAP;;AAIJ,SAAK,MAAL;AACI,UAAME,SAAS,GAAG,CAAlB;AACA,UAAMC,OAAO,GAAG,CAAhB;AACA,aAAO,CACHriK,6DAAO,CAACiqH,QAAD,EAAWm1C,+DAAS,CAAC,CACxBn/J,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,kBAAWgkH,SAAX;AAAX,OAAD,CADmB,EAExBniK,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,kBAAWikH,OAAX;AAAX,OAAD,CAFmB,CAAD,CAApB,CADJ,CAAP;;AAMJ,SAAK,MAAL;AACI,UAAMC,SAAS,GAAG,CAAlB;AACA,UAAMC,OAAO,GAAG,CAAhB;AACA,aAAO,CACHviK,6DAAO,CAACiqH,QAAD,EAAWm1C,+DAAS,CAAC,CACxBn/J,2DAAK,CAAC;AAAEsrF,QAAAA,OAAO,YAAK+2E,SAAL;AAAT,OAAD,CADmB,EAExBriK,2DAAK,CAAC;AAAEsrF,QAAAA,OAAO,YAAKg3E,OAAL;AAAT,OAAD,CAFmB,CAAD,CAApB,CADJ,CAAP;;AAMJ,SAAK,WAAL;AACI,aAAO,CACHtiK,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,EAAE;AAAb,OAAD,CADF,EAEHp+C,6DAAO,WAAIiqH,QAAJ,mCAFJ,CAAP;;AAIJ;AACI,aAAO,CACHhqH,2DAAK,CAAC;AAAEm+C,QAAAA,SAAS,EAAE;AAAb,OAAD,CADF,EAEHp+C,6DAAO,WAAIiqH,QAAJ,mCAFJ,CAAP;AAtDR;AA2DH;AAED;AACA;AACA;;;AACA,IAAMu4C,YAAY,GAAG,SAAfA,YAAe,CAAC32C,OAAD,EAAU+B,SAAV,EAAqB60C,eAArB,EAAyC;AAC1D,MAAMzhK,OAAO,GAAG6qH,OAAO,CAAC+C,KAAR,CAAchB,SAAd,CAAhB;AACA,MAAIkB,MAAM,GAAG9tH,OAAO,CAAC6C,MAAR,CAAe4+J,eAAf,CAAb;AACA3zC,EAAAA,MAAM,CAACG,MAAP,CAAc,YAAM;AAChB,QAAIH,MAAJ,EAAY;AACRA,MAAAA,MAAM,CAACx3D,OAAP;AACAw3D,MAAAA,MAAM,GAAG,IAAT;AACH;AACJ,GALD;AAMA,SAAOA,MAAP;AACH,CAVD;AAYA;AACA;AACA;;;AACA,IAAM4zC,cAAc,GAAG,SAAjBA,cAAiB,CAAC90C,SAAD,EAAY+0C,kBAAZ,EAAgCF,eAAhC,EAAiD52C,OAAjD,EAA6D;AAChF,MAAI+2C,eAAe,GAAGD,kBAAtB;;AACA,MAAI,OAAO/0C,SAAP,KAAqB,SAAzB,EAAoC;AAChCg1C,IAAAA,eAAe,GAAGh1C,SAAlB;AACAg1C,IAAAA,eAAe,CAAC34C,QAAhB,GAA2B24C,eAAe,CAAC34C,QAAhB,GAA2B24C,eAAe,CAAC34C,QAA3C,GAAsD04C,kBAAkB,CAAC14C,QAApG;AACH;;AACD,MAAM44C,cAAc,GAAGf,UAAU,CAACc,eAAe,CAAC34C,QAAjB,EAA2B24C,eAAe,CAACj5H,SAA3C,EAAsDi5H,eAAe,CAAC9mK,IAAtE,CAAjC;AACA,MAAMgzH,MAAM,GAAG0zC,YAAY,CAAC32C,OAAD,EAAUg3C,cAAV,EAA0BJ,eAA1B,CAA3B;AACA3zC,EAAAA,MAAM,CAACE,IAAP;AACH,CATD;;AAWA,IAAM8zC,wBAAwB,GAAG;AAAE74C,EAAAA,QAAQ,EAAE,GAAZ;AAAiBnuH,EAAAA,IAAI,EAAE;AAAvB,CAAjC;AACA;AACA;AACA;;IACMinK;MAAAA;AACF,6BAAY7/C,OAAZ,EAAqBhrH,QAArB,EAA+BqjH,YAA/B,EAA6CpjH,GAA7C,EAAkDy9E,MAAlD,EAA0Di2C,OAA1D,EAAmE;AAAA;;AAAA;;AAC/D,WAAK3I,OAAL,GAAeA,OAAf;AACA,WAAKhrH,QAAL,GAAgBA,QAAhB;AACA,WAAKC,GAAL,GAAWA,GAAX;AACA,WAAKy9E,MAAL,GAAcA,MAAd;AACA,WAAKi2C,OAAL,GAAeA,OAAf;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKm3C,aAAL,GAAqB,WAArB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKp1C,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;;AACQ,WAAKq1C,OAAL,GAAe,IAAf;AACA;AACR;AACA;;AACQ,WAAKC,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;AACA;;AACQ,WAAK/4D,MAAL,GAAc,IAAInkG,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA,WAAKs1C,QAAL,GAAgB,CAAhB;AACA,WAAKyvE,aAAL,GAAqB,EAArB;AACA,WAAKo4C,OAAL,GAAe,IAAI7qD,+CAAJ,EAAf;AACAC,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAKlvE,SAAL,GAAiB4xE,YAAY,CAACW,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;AACA,WAAK6O,aAAL,CAAmBpiH,IAAnB,CAAwB4yG,YAAY,CAACv5G,OAAb,CAAqBhP,SAArB,CAA+B;AAAA,YAAGkpH,GAAH,SAAGA,GAAH;AAAA,eAAc,MAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA7C;AAAA,OAA/B,CAAxB;AACA,WAAK+mD,OAAL,GAAe,KAAKG,eAAL,EAAf;AACA,WAAKF,SAAL,GAAiB,KAAKG,iBAAL,EAAjB;AACH;AACD;AACJ;AACA;;;;;WAcI,eAAqB;AACjB,eAAO,KAAKC,eAAZ;AACH;AACD;AACJ;AACA;;WAlBI,aAAmB1vE,UAAnB,EAA+B;AAC3BksE,QAAAA,iBAAiB,CAAClsE,UAAD,EAAa,KAAK17F,QAAlB,EAA4B,KAAKgrH,OAAL,CAAa79G,aAAzC,CAAjB;AACA,YAAM2X,EAAE,GAAG,KAAKkmG,OAAL,CAAa79G,aAAxB;AACA,YAAM+G,GAAG,GAAG4Q,EAAE,CAAC4gD,YAAH,CAAgB,KAAhB,CAAZ;AACA,YAAM2lG,MAAM,GAAGvmJ,EAAE,CAAC4gD,YAAH,CAAgB,UAAhB,CAAf;;AACA,YAAI,KAAKj0B,SAAL,KAAmBv9B,GAAnB,IAA0BA,GAA9B,EAAmC;AAC/B,eAAKu9B,SAAL,GAAiBv9B,GAAjB;AACH;;AACD,YAAI,KAAKkvC,QAAL,KAAkBioH,MAAlB,IAA4BA,MAAhC,EAAwC;AACpC,eAAKjoH,QAAL,GAAgBioH,MAAhB;AACH;;AACD,aAAKD,eAAL,GAAuB1vE,UAAvB;AACH;;;WAWD,eAAe;AACX,eAAO,KAAK4vE,SAAZ;AACH;WAND,aAAajkH,OAAb,EAAsB;AAClB,aAAKkkH,iBAAL,CAAuB,KAAKD,SAA5B,EAAuCjkH,OAAvC;AACA,aAAKikH,SAAL,GAAiBjkH,OAAjB;AACH;;;WAID,eAAU;AACN,eAAO,KAAK5V,SAAZ;AACH;;;aACD,8BAAqB;AAAA;;AACjB,aAAK+5H,MAAL,CAAY,OAAZ,EAAqB,KAAKC,eAAL,CAAqBnlI,KAA1C;AACA,aAAKtmC,QAAL,CAAc8C,YAAd,CAA2B,KAAKkoH,OAAL,CAAa79G,aAAb,CAA2BqwC,aAA3B,CAAyC,WAAzC,CAA3B,EAAkF,kBAAlF,EAAsG,KAAKwtH,SAA3G;;AACA,YAAI,KAAKS,eAAL,CAAqBnlI,KAAzB,EAAgC;AAC5B,eAAKmlI,eAAL,CAAqBnlI,KAArB,CAA2B7pB,EAA3B,GAAgC,KAAKsuJ,OAArC;AACH,SAFD,MAGK;AACD,eAAKl4C,aAAL,CAAmBpiH,IAAnB,CAAwB,KAAKg7J,eAAL,CAAqB3hK,OAArB,CAA6BhP,SAA7B,CAAuC,YAAM;AACjE,gBAAIomH,SAAS,CAAC,MAAI,CAACuqD,eAAL,CAAqBnlI,KAAtB,CAAb,EAA2C;AACvC,oBAAI,CAACmlI,eAAL,CAAqBnlI,KAArB,CAA2B7pB,EAA3B,GAAgC,MAAI,CAACsuJ,OAArC;;AACA,oBAAI,CAACrtF,MAAL,CAAYpgC,QAAZ,CAAqB1iD,IAArB,CAA0BkyB,qDAAI,CAAC,CAAD,CAA9B,EAAmChyB,SAAnC,CAA6C,YAAM;AAC/C,sBAAI,CAAC0wK,MAAL,CAAY,OAAZ,EAAqB,MAAI,CAACC,eAAL,CAAqBnlI,KAA1C;;AACA,sBAAI,CAACtmC,QAAL,CAAc8C,YAAd,CAA2B,MAAI,CAACkoH,OAAL,CAAa79G,aAAb,CAA2BqwC,aAA3B,CAAyC,WAAzC,CAA3B,EAAkF,iBAAlF,EAAqG,MAAI,CAACutH,OAA1G;AACH,eAHD;AAIH;AACJ,WARuB,CAAxB;AASH;AACJ;;;aACD,2BAAkB;AAAA;;AACd,aAAKW,kBAAL;AACA,aAAKF,MAAL,CAAY,OAAZ,EAAqB,KAAKG,YAAL,CAAkBrlI,KAAvC;AACA,aAAKklI,MAAL,CAAY,QAAZ,EAAsB,KAAKI,WAA3B;;AACA,YAAI,KAAKD,YAAL,CAAkBrlI,KAAlB,IAA2B,KAAKmlI,eAAL,CAAqBnlI,KAApD,EAA2D;AACvD;AACA,eAAKtmC,QAAL,CAAc8C,YAAd,CAA2B,KAAKkoH,OAAL,CAAa79G,aAAb,CAA2BqwC,aAA3B,CAAyC,WAAzC,CAA3B,EAAkF,iBAAlF,EAAqG,KAAKutH,OAA1G;AACH,SAHD,MAIK;AACD,eAAKl4C,aAAL,CAAmBpiH,IAAnB,CAAwB,KAAKk7J,YAAL,CAAkB7hK,OAAlB,CAA0BhP,SAA1B,CAAoC,YAAM;AAC9D,gBAAIomH,SAAS,CAAC,MAAI,CAACyqD,YAAL,CAAkBrlI,KAAnB,CAAb,EAAwC;AACpC,oBAAI,CAACqlI,YAAL,CAAkBrlI,KAAlB,CAAwB7pB,EAAxB,GAA6B,MAAI,CAACsuJ,OAAlC;;AACA,oBAAI,CAACrtF,MAAL,CAAYpgC,QAAZ,CAAqB1iD,IAArB,CAA0BkyB,qDAAI,CAAC,CAAD,CAA9B,EAAmChyB,SAAnC,CAA6C,YAAM;AAC/C,sBAAI,CAAC0wK,MAAL,CAAY,OAAZ,EAAqB,MAAI,CAACG,YAAL,CAAkBrlI,KAAvC;;AACA,sBAAI,CAACtmC,QAAL,CAAc8C,YAAd,CAA2B,MAAI,CAACkoH,OAAL,CAAa79G,aAAb,CAA2BqwC,aAA3B,CAAyC,WAAzC,CAA3B,EAAkF,iBAAlF,EAAqG,MAAI,CAACutH,OAA1G;AACH,eAHD;AAIH;AACJ,WARuB,CAAxB;AASH;;AACD,aAAKc,aAAL;AACH;;;aACD,oBAAW;AACP,YAAI,KAAKn2C,SAAT,EAAoB;AAChB80C,UAAAA,cAAc,CAAC,KAAK90C,SAAN,EAAiBk1C,wBAAjB,EAA2C,KAAKkB,MAAL,CAAY3+J,aAAvD,EAAsE,KAAKwmH,OAA3E,CAAd;AACH;;AACD,aAAK3zH,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAL,CAAa79G,aAA3C,EAA0D,OAA1D;AACA,aAAKlN,GAAL,CAASoC,aAAT;AACH;;;aACD,uBAAc;AACV,aAAKwwH,aAAL,CAAmB3xH,OAAnB,CAA2B,UAAA6jC,CAAC;AAAA,iBAAIA,CAAC,CAAC9pC,WAAF,EAAJ;AAAA,SAA5B;AACA,aAAK43H,aAAL,GAAqB,EAArB;;AACA,YAAI,KAAKo4C,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahwK,WAAb;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAM+vH,OAAO,GAAG,KAAKA,OAAL,CAAa79G,aAA7B;;AACA,YAAI+zG,SAAS,CAAC8J,OAAD,CAAb,EAAwB;AACpBA,UAAAA,OAAO,CAAC5tE,KAAR;AACH;AACJ;;;aACD,yBAAgB;AAAA;;AACZ,YAAI,CAAC,KAAK4tE,OAAV,EAAmB;AACf;AACH;;AACD,aAAKttC,MAAL,CAAY3tC,iBAAZ,CAA8B,YAAM;AAChC,gBAAI,CAACk7H,OAAL,CAAa79H,GAAb,CAAiB,MAAI,CAACptC,QAAL,CAAc0tE,MAAd,CAAqB,MAAI,CAACs9C,OAAL,CAAa79G,aAAlC,EAAiD,SAAjD,EAA4D,UAAC4+J,EAAD,EAAQ;AACjF,kBAAI,CAAC5rH,SAAL,CAAe4rH,EAAf;AACH,WAFgB,CAAjB;AAGH,SAJD;AAKH;;;aACD,mBAAUlxK,KAAV,EAAiB;AAAA;;AACb,YAAM2J,MAAM,GAAG3J,KAAK,CAAC2J,MAArB;AACA,YAAMuM,MAAM,GAAGvM,MAAM,CAACwgC,aAAtB;;AACA,YAAIm1F,UAAU,CAAC31H,MAAD,EAASgjK,gCAAT,CAAV,IAAwDrtC,UAAU,CAACppH,MAAD,EAASy2J,gCAAT,CAAtE,EAAkH;AAC9G,cAAI3sK,KAAK,CAAC+9F,OAAN,KAAkBgnB,IAAI,CAAC8J,GAA3B,EAAgC;AAC5B,iBAAKhsC,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,oBAAI,CAACjlC,KAAL,CAAWgJ,IAAX,CAAgB,IAAIi1J,iBAAJ,EAAhB;AACH,aAFD;AAGH;AACJ;;AACD,YAAIxvC,UAAU,CAAC31H,MAAD,EAAS,UAAT,CAAV,IAAkC21H,UAAU,CAACppH,MAAD,EAAS02J,+BAAT,CAA5C,KACC5sK,KAAK,CAAC+9F,OAAN,KAAkBgnB,IAAI,CAACt7G,IAAvB,IAA+BzJ,KAAK,CAAC+9F,OAAN,KAAkBgnB,IAAI,CAACl7D,KADvD,CAAJ,EACmE;AAC/D,eAAKg5B,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,kBAAI,CAACq7H,uBAAL,CAA6Bj7J,MAA7B,EAAqClW,KAAK,CAAC+9F,OAA3C;AACH,WAFD;AAGH;;AACD,YAAI/9F,KAAK,CAAC+9F,OAAN,KAAkBgnB,IAAI,CAAC1rC,GAA3B,EAAgC;AAC5B,eAAKwJ,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,kBAAI,CAACs7H,wBAAL,CAA8BznK,MAA9B,EAAsC3J,KAAtC;AACH,WAFD;AAGH;AACJ;;;aACD,2BAAkBqxK,SAAlB,EAA6B1gK,KAA7B,EAAoC;AAAA;;AAChC,YAAMsZ,EAAE,GAAG,KAAKkmG,OAAL,CAAa79G,aAAxB;;AACA,YAAI++J,SAAJ,EAAe;AACXrE,UAAAA,kBAAkB,CAACqE,SAAD,CAAlB,CAA8BhrK,OAA9B,CAAsC,UAAAsjC,SAAS,EAAI;AAC/C,kBAAI,CAACxkC,QAAL,CAAcc,WAAd,CAA0BgkB,EAA1B,EAA8B0f,SAA9B;AACH,WAFD;AAGH;;AACD,YAAIh5B,KAAJ,EAAW;AACPq8J,UAAAA,kBAAkB,CAACr8J,KAAD,CAAlB,CAA0BtK,OAA1B,CAAkC,UAAAsjC,SAAS,EAAI;AAC3C,kBAAI,CAACxkC,QAAL,CAAcK,QAAd,CAAuBykB,EAAvB,EAA2B0f,SAA3B;AACH,WAFD;AAGH;AACJ;AACD;AACJ;AACA;;;;aACI,8BAAqB;AACjB,YAAMwmF,OAAO,GAAG,KAAKA,OAAL,CAAa79G,aAA7B;AACA,YAAMg/J,aAAa,GAAG,KAAKC,WAAL,CAAiBphD,OAAjB,CAAtB;;AACA,YAAI,KAAKqhD,kBAAT,EAA6B;AACzB,cAAMC,uBAAuB,GAAGthD,OAAO,CAACxtE,aAAR,CAAsB,KAAK6uH,kBAA3B,CAAhC;;AACA,cAAIC,uBAAJ,EAA6B;AACzBA,YAAAA,uBAAuB,CAAClvH,KAAxB;AACH;AACJ,SALD,MAMK,IAAI,KAAKmvH,kBAAL,CAAwBJ,aAAxB,CAAJ,EAA4C;AAC7CA,UAAAA,aAAa,CAAC/uH,KAAd;AACH,SAFI,MAGA;AACD4tE,UAAAA,OAAO,CAAC5tE,KAAR;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,qBAAY4tE,OAAZ,EAAqB;AACjB,YAAMwhD,UAAU,GAAGxhD,OAAO,CAAC7nE,gBAAR,CAAyB,sBAAzB,CAAnB;AACA,eAAOulH,iBAAiB,CAAC8D,UAAD,CAAxB;AACH;AACD;AACJ;AACA;;;;aACI,iCAAwBz7J,MAAxB,EAAgCuF,GAAhC,EAAqC;AACjC,YAAMm2J,sBAAsB,GAAG,KAAKC,uBAAL,CAA6B37J,MAA7B,CAA/B;;AACA,aAAK,IAAIulC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm2H,sBAAsB,CAAC97J,MAA3C,EAAmD2lC,CAAC,EAApD,EAAwD;AACpD,cAAMpG,OAAO,GAAGu8H,sBAAsB,CAACn2H,CAAD,CAAtC;;AACA,cAAIpG,OAAO,KAAKnwC,QAAQ,CAACorD,aAAzB,EAAwC;AACpC,gBAAI70C,GAAG,KAAKspG,IAAI,CAACt7G,IAAb,IAAqBgyC,CAAC,GAAG,CAA7B,EAAgC;AAC5Bm2H,cAAAA,sBAAsB,CAACn2H,CAAC,GAAG,CAAL,CAAtB,CAA8B8G,KAA9B;AACA;AACH;;AACD,gBAAI9mC,GAAG,KAAKspG,IAAI,CAACl7D,KAAb,IAAsBpO,CAAC,GAAGm2H,sBAAsB,CAAC97J,MAAvB,GAAgC,CAA9D,EAAiE;AAC7D87J,cAAAA,sBAAsB,CAACn2H,CAAC,GAAG,CAAL,CAAtB,CAA8B8G,KAA9B;AACA;AACH;AACJ;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,kCAAyB54C,MAAzB,EAAiC3J,KAAjC,EAAwC;AACpC,YAAMmwH,OAAO,GAAG,KAAKA,OAAL,CAAa79G,aAA7B;;AACA,oCAAwC,KAAKw/J,wBAAL,CAA8B3hD,OAA9B,CAAxC;AAAA;AAAA,YAAO7oD,cAAP;AAAA,YAAuByqG,aAAvB;;AACA,YAAMC,qBAAqB,GAAG,CAAChyK,KAAK,CAACokD,QAAP,IAAmBz6C,MAAM,KAAKooK,aAA5D;AACA,YAAME,2BAA2B,GAAGjyK,KAAK,CAACokD,QAAN,IAAkBz6C,MAAM,KAAK29D,cAAjE;;AACA,YAAI0qG,qBAAJ,EAA2B;AACvBhyK,UAAAA,KAAK,CAACkU,cAAN;AACAozD,UAAAA,cAAc,CAAC/kB,KAAf;AACH;;AACD,YAAI0vH,2BAAJ,EAAiC;AAC7BjyK,UAAAA,KAAK,CAACkU,cAAN;AACA69J,UAAAA,aAAa,CAACxvH,KAAd;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,4BAAmBt4B,EAAnB,EAAuB;AACnB,eAAOo8F,SAAS,CAACp8F,EAAD,CAAT,IAAiBu0G,WAAW,CAACv0G,EAAD,CAAnC;AACH;AACD;AACJ;AACA;;;;aACI,iCAAwB/T,MAAxB,EAAgC;AAC5B,eAAOA,MAAM,CAACoyC,gBAAP,CAAwBilH,iBAAxB,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,kCAAyBr3J,MAAzB,EAAiC;AAC7B,YAAM+sG,GAAG,GAAG,KAAK4uD,uBAAL,CAA6B37J,MAA7B,CAAZ;AACA,YAAMoxD,cAAc,GAAG27C,GAAG,CAACntG,MAAJ,GAAa,CAAb,GAAiBmtG,GAAG,CAAC,CAAD,CAApB,GAA0B/sG,MAAjD;AACA,YAAM67J,aAAa,GAAG9uD,GAAG,CAACntG,MAAJ,GAAa,CAAb,GAAiBmtG,GAAG,CAACA,GAAG,CAACntG,MAAJ,GAAa,CAAd,CAApB,GAAuCI,MAA7D;AACA,eAAO,CAACoxD,cAAD,EAAiByqG,aAAjB,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkB;AACd,eAAO,wBAAwB/oI,IAAI,CAACqrB,IAAL,CAAUrrB,IAAI,CAACgoD,MAAL,KAAgB,OAA1B,EAAmC7oF,QAAnC,EAA/B;AACH;AACD;AACJ;AACA;;;;aACI,6BAAoB;AAChB,eAAO,0BAA0B6gC,IAAI,CAACqrB,IAAL,CAAUrrB,IAAI,CAACgoD,MAAL,KAAgB,OAA1B,EAAmC7oF,QAAnC,EAAjC;AACH;;;WACD,eAAmB;AACf,eAAO,IAAP;AACH;;;WACD,eAAa;AACT,YAAM+nC,MAAM,GAAG,EAAf;;AACA,YAAI,KAAKn/B,KAAT,EAAgB;AACZm/B,UAAAA,MAAM,CAACn/B,KAAP,GAAe68J,mBAAmB,CAAC,KAAK78J,KAAN,CAAlC;AACH;;AACD,YAAI,KAAKzD,MAAT,EAAiB;AACb4iC,UAAAA,MAAM,CAAC5iC,MAAP,GAAgBsgK,mBAAmB,CAAC,KAAKtgK,MAAN,CAAnC;AACH;;AACD,YAAI,KAAKysF,QAAT,EAAmB;AACf7pD,UAAAA,MAAM,CAAC6pD,QAAP,GAAkB6zE,mBAAmB,CAAC,KAAK7zE,QAAN,CAArC;AACH;;AACD,YAAI,KAAKm4E,QAAT,EAAmB;AACfhiI,UAAAA,MAAM,CAACgiI,QAAP,GAAkBtE,mBAAmB,CAAC,KAAKsE,QAAN,CAArC;AACH;;AACD,YAAI,KAAKC,SAAT,EAAoB;AAChBjiI,UAAAA,MAAM,CAACiiI,SAAP,GAAmBvE,mBAAmB,CAAC,KAAKuE,SAAN,CAAtC;AACH;;AACD,YAAI,KAAKlhK,SAAT,EAAoB;AAChBi/B,UAAAA,MAAM,CAACj/B,SAAP,GAAmB28J,mBAAmB,CAAC,KAAK38J,SAAN,CAAtC;AACH;;AACD,eAAOi/B,MAAP;AACH;;;aACD,gBAAO1rB,SAAP,EAAkBlmB,SAAlB,EAA6B;AAAA;;AACzB,YAAIA,SAAJ,EAAe;AACX,cAAMub,IAAI,GAAG,SAAPA,IAAO,CAAAxQ,CAAC;AAAA,mBAAI,OAAI,CAACmb,SAAD,CAAJ,CAAgB3K,IAAhB,CAAqBxQ,CAArB,CAAJ;AAAA,WAAd;;AACA,cAAM6gC,CAAC,GAAG5rC,SAAS,CAACkmB,SAAD,CAAT,CAAqBvkB,SAArB,CAA+B4Z,IAA/B,CAAV;AACA,eAAKm+G,aAAL,CAAmBpiH,IAAnB,CAAwBs0B,CAAxB;AACH;AACJ;;;;;;AAEL8lI,EAAAA,eAAe,CAACvlI,IAAhB;AAAA,qBAA6GulI,eAA7G,EA3tB0G3vK,gEA2tB1G,CAA8IA,sDAA9I,GA3tB0GA,gEA2tB1G,CAAwKA,qDAAxK,GA3tB0GA,gEA2tB1G,CAAiMkE,8EAAjM,GA3tB0GlE,gEA2tB1G,CAAoOA,6DAApO,GA3tB0GA,gEA2tB1G,CAAqQA,kDAArQ,GA3tB0GA,gEA2tB1G,CAA2RmE,kEAA3R;AAAA;;AACAwrK,EAAAA,eAAe,CAAC7iI,IAAhB,kBA5tB0G9sC,gEA4tB1G;AAAA,UAAiG2vK,eAAjG;AAAA;AAAA;AAAA;AA5tB0G3vK,QAAAA,6DA4tB1G,WAU+DuuK,uBAV/D;AAAA;;AAAA;AAAA;;AA5tB0GvuK,QAAAA,6DA4tB1G,MA5tB0GA,0DA4tB1G;AAAA;AAAA;AAAA;AAAA;AA5tB0GA,QAAAA,0DA4tB1G,CAUgK0tK,sBAVhK;AA5tB0G1tK,QAAAA,0DA4tB1G;AA5tB0GA,QAAAA,0DA4tB1G,CAUyVuuK,uBAVzV;AAAA;;AAAA;AAAA;;AA5tB0GvuK,QAAAA,6DA4tB1G,MA5tB0GA,0DA4tB1G;AA5tB0GA,QAAAA,6DA4tB1G,MA5tB0GA,0DA4tB1G;AA5tB0GA,QAAAA,6DA4tB1G,MA5tB0GA,0DA4tB1G;AAAA;AAAA;AAAA;AAAA;AAAA;AA5tB0GA,QAAAA,0DA4tB1G;AA5tB0GA,QAAAA,0DA4tB1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA5tB0GA,iEA4tB1G,CAAylB,CACjlB+kH,8EADilB,EAEjlB;AACI3hH,MAAAA,OAAO,EAAE6qK,2BADb;AAEI79H,MAAAA,WAAW,EAAE20E,8EAAmBA;AAFpC,KAFilB,EAMjlB;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KANilB,CAAzlB;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AA5tB0GvD,QAAAA,8DA4tB1G;AA5tB0GA,QAAAA,sEAuuBlG,MAXR;AA5tB0GA,QAAAA,wDA4uBlG,aAhBR;AA5tB0GA,QAAAA,6DA8uBlG,gBAlBR;AA5tB0GA,QAAAA,yDA+uB9F,uFAnBZ;AA5tB0GA,QAAAA,yDAgvB9F,iEApBZ;AA5tB0GA,QAAAA,6DAkvB9F,aAtBZ;AA5tB0GA,QAAAA,yDAmvB1F,iEAvBhB;AA5tB0GA,QAAAA,yDAovB1F,8CAxBhB;AA5tB0GA,QAAAA,2DAqvB9F,EAzBZ;AA5tB0GA,QAAAA,yDAuvB9F,iEA3BZ;AA5tB0GA,QAAAA,yDAwvB9F,uFA5BZ;AA5tB0GA,QAAAA,2DAyvBlG,EA7BR;AA5tB0GA,QAAAA,oEA0vBtG,EA9BJ;AAAA;;AAAA;AA5tB0GA,QAAAA,wDA4uB3E,GAhB/B;AA5tB0GA,QAAAA,yDA4uB3E,6BAhB/B;AA5tB0GA,QAAAA,wDA8uB3B,GAlB/E;AA5tB0GA,QAAAA,yDA8uB3B,uBAlB/E;AA5tB0GA,QAAAA,wDA+uBtE,GAnBpC;AA5tB0GA,QAAAA,yDA+uBtE,mBAnBpC;AA5tB0GA,QAAAA,wDAgvBlD,GApBxD;AA5tB0GA,QAAAA,yDAgvBlD,oBApBxD;AA5tB0GA,QAAAA,wDAkvBzF,GAtBjB;AA5tB0GA,QAAAA,yDAkvBzF,qBAtBjB;AA5tB0GA,QAAAA,wDAmvB7E,GAvB7B;AA5tB0GA,QAAAA,yDAmvB7E,8BAvB7B;AA5tB0GA,QAAAA,wDAovBvC,GAxBnE;AA5tB0GA,QAAAA,yDAovBvC,6BAxBnE;AA5tB0GA,QAAAA,wDAuvBnD,GA3BvD;AA5tB0GA,QAAAA,yDAuvBnD,sBA3BvD;AA5tB0GA,QAAAA,wDAwvBvE,GA5BnC;AA5tB0GA,QAAAA,yDAwvBvE,qBA5BnC;AAAA;AAAA;AAAA,iBA+B4CuuK,uBA/B5C,EA+BoKb,sBA/BpK,EA+B0S/K,0BA/B1S,EA+BwdsJ,qDA/Bxd,EA+B0hBA,kDA/B1hB,EA+B2mBA,8DA/B3mB;AAAA;AAAA;AAAA,iBA+BwuB,CAChuBt/J,6DAAO,CAAC,eAAD,EAAkB,CACrBI,2DAAK,CAAC,IAAD,EAAOF,2DAAK,CAAC;AAAEsrF,QAAAA,OAAO,EAAE;AAAX,OAAD,CAAZ,CADgB,EAErBrrF,gEAAU,CAAC,WAAD,EAAc,CAACD,2DAAK,CAAC;AAAEsrF,QAAAA,OAAO,EAAE;AAAX,OAAD,CAAN,EAA0BvrF,6DAAO,CAAC,iCAAD,CAAjC,CAAd,CAFW,CAAlB,CADytB;AA/BxuB;AAAA;SA3TM+iK;;;AAgWN;AAAA;AAAA;AA8FA;AACA;AACA;AACA;AACA;;;IACMoC;;;AAGN;AACA;AACA;AACA;;;IACMC;MAAAA;AACF,+BAAYpB,MAAZ,EAAoB;AAAA;;AAChB,WAAKA,MAAL,GAAcA,MAAd;AACH;AACD;AACJ;AACA;;;;;aACI,2BAAkB;AAAA;;AACd,YAAI,KAAKqB,cAAT,EAAyB;AACrB;AACA,eAAKA,cAAL,CAAoBzhK,KAApB,CAA0B9Q,IAA1B,CAA+BP,uDAAM,CAAC,UAAC6J,CAAD;AAAA,mBAAO,CAACA,CAAC,CAAC+jH,kBAAF,EAAR;AAAA,WAAD,CAArC,EAAuEntH,SAAvE,CAAiF,YAAM;AACnF,mBAAI,CAACgxK,MAAL,CAAYpgK,KAAZ;AACH,WAFD;AAGH;;AACD,YAAI,KAAK0hK,aAAT,EAAwB;AACpB,cAAI,KAAKA,aAAL,CAAmBC,OAAvB,EAAgC;AAC5B,iBAAKD,aAAL,CAAmBn7D,MAAnB,CAA0Bn3G,SAA1B,CAAoC,UAAAm3G,MAAM;AAAA,qBAAI,OAAI,CAAC65D,MAAL,CAAYA,MAAZ,CAAmBhiH,QAAnB,CAA4BmoD,MAA5B,CAAmCv9F,IAAnC,CAAwCu9F,MAAxC,CAAJ;AAAA,aAA1C;AACH;AACJ;AACJ;;;;;;AAELi7D,EAAAA,iBAAiB,CAAC5nI,IAAlB;AAAA,qBAA+G4nI,iBAA/G,EAh4B0GhyK,gEAg4B1G,CAAkJ+xK,SAAlJ;AAAA;;AACAC,EAAAA,iBAAiB,CAACpnI,IAAlB,kBAj4B0G5qC,gEAi4B1G;AAAA,UAAmGgyK,iBAAnG;AAAA;AAAA;AAj4B0GhyK,QAAAA,0DAi4B1G,CAA8LuuK,uBAA9L;AAj4B0GvuK,QAAAA,0DAi4B1G,CAAqS0tK,sBAArS;AAAA;;AAAA;AAAA;;AAj4B0G1tK,QAAAA,6DAi4B1G,MAj4B0GA,0DAi4B1G;AAj4B0GA,QAAAA,6DAi4B1G,MAj4B0GA,0DAi4B1G;AAAA;AAAA;AAAA;SAtBMgyK;;;AAuBN;AAAA;AAAA;AAUA;AACA;AACA;;;IACMI;MAAAA;;;;;;;WAIF,eAAgB;AACZ,eAAOA,sBAAsB,CAACpiH,SAA9B;AACH;WALD,aAAcA,SAAd,EAAyB;AACrBoiH,QAAAA,sBAAsB,CAACpiH,SAAvB,GAAmCA,SAAnC;AACH;;;;;;AAKLoiH,EAAAA,sBAAsB,CAACpiH,SAAvB,GAAmC,IAAnC;;AACAoiH,EAAAA,sBAAsB,CAAChoI,IAAvB;AAAA,qBAAoHgoI,sBAApH;AAAA;;AACAA,EAAAA,sBAAsB,CAAC7nI,KAAvB,kBAz5B0GvqC,iEAy5B1G;AAAA,WAAwHoyK,sBAAxH;AAAA,aAAwHA,sBAAxH;AAAA;SAVMA;;;AAWN;AAAA;AAAA;AAIA;AACA;AACA;AACA;;;IACMC;;;AAGN;AACA;AACA;AACA;;;IACMC;;IAGN;;;AACA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACt0K,SAAD;AAAA,SAAe2qC,QAAQ,CAAC3qC,SAAD,CAAR,IAAuBA,SAAS,YAAYkQ,uDAA3D;AAAA,CAAzB;;IACMqkK;AACF,0BAAYC,YAAZ,EAA0BC,cAA1B,EAA0C;AAAA;;AACtC,SAAKD,YAAL,GAAoBA,YAApB;AACA,SAAKC,cAAL,GAAsBA,cAAtB;AACH;;;;WACD,aAAIrlJ,KAAJ,EAAWslJ,aAAX,EAA0B;AACtB,UAAItlJ,KAAK,KAAK0kJ,SAAd,EAAyB;AACrB,eAAO,KAAKU,YAAL,EAAP;AACH;;AACD,aAAO,KAAKC,cAAL,CAAoB12J,GAApB,CAAwBqR,KAAxB,EAA+BslJ,aAA/B,CAAP;AACH;;;;;AAEL;AACA;AACA;AACA;;;IACMC;MAAAA;AACF;AACA;AACJ;AACA;AACIC,IAAAA,QAJA,EAIUC,gBAJV,EAI4B;AAAA;;AACxB,WAAKD,QAAL,GAAgBA,QAAhB;AACA,WAAKC,gBAAL,GAAwBA,gBAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;aACI,cAAKnkK,OAAL,EAAc;AACV,YAAMf,OAAO,GAAG,KAAKilK,QAAL,CAActjH,uBAAd,CAAsCogH,eAAtC,CAAhB;AACA,YAAM3/G,SAAS,GAAGrhD,OAAO,CAACg/E,QAAR,IAAoB,KAAKmlF,gBAAL,CAAsB9iH,SAA5D;;AACA,YAAI,CAACA,SAAL,EAAgB;AACZ,gBAAM,IAAIjrC,KAAJ,mOAAN;AAKH,SATS,CAUV;;;AACA,YAAMguJ,SAAS,GAAG;AACdviK,UAAAA,KAAK,EAAE,iBAAM;AACT;AACH,WAHa;AAIdqzD,UAAAA,OAAO,EAAE,IAJK;AAKd+sG,UAAAA,MAAM,EAAE,IALM;AAMdrpI,UAAAA,MAAM,EAAE;AANM,SAAlB;AAQA,eAAO,KAAKyrI,gBAAL,CAAsBrkK,OAAO,CAACk1D,OAA9B,EAAuCj2D,OAAvC,EAAgDoiD,SAAhD,EAA2D+iH,SAA3D,EAAsEpkK,OAAtE,CAAP;AACH;;;aACD,0BAAiB1Q,SAAjB,EAA4B2P,OAA5B,EAAqCoiD,SAArC,EAAgD+iH,SAAhD,EAA2DpkK,OAA3D,EAAoE;AAChE,YAAMk1D,OAAO,GAAG,KAAKovG,WAAL,CAAiBh1K,SAAjB,EAA4B+xD,SAA5B,EAAuC+iH,SAAvC,CAAhB;AACA,YAAMnC,MAAM,GAAG5gH,SAAS,CAACR,eAAV,CAA0B5hD,OAA1B,EAAmCigB,SAAnC,EAA8CA,SAA9C,EAAyDg2C,OAAO,CAACT,KAAjE,CAAf;AACA2vG,QAAAA,SAAS,CAACnC,MAAV,GAAmBA,MAAnB;AACAA,QAAAA,MAAM,CAAC7gH,iBAAP,CAAyBvqD,YAAzB,GAJgE,CAKhE;;AACA,aAAK0tK,YAAL,CAAkBtC,MAAM,CAAChiH,QAAzB,EAAmCjgD,OAAnC,EANgE,CAOhE;;AACA,YAAMwkK,QAAQ,GAAG,IAAIj1J,0CAAJ,EAAjB;;AACA,YAAM1N,KAAK,GAAG,SAARA,KAAQ,CAACxH,CAAD,EAAO;AACjB,cAAIA,CAAC,YAAY6iH,gBAAjB,EAAmC;AAC/B7iH,YAAAA,CAAC,GAAG,IAAIylK,iBAAJ,EAAJ;AACH;;AACD0E,UAAAA,QAAQ,CAACp2J,IAAT,CAAc/T,CAAC,IAAI,IAAIylK,iBAAJ,EAAnB;;AACA,cAAI5qG,OAAO,CAACP,YAAZ,EAA0B;AACtBO,YAAAA,OAAO,CAACP,YAAR,CAAqBY,OAArB;AACH;;AACD0sG,UAAAA,MAAM,CAAC1sG,OAAP;AACH,SATD;;AAUA,YAAM38B,MAAM,GAAG94B,4CAAK,CAAC0kK,QAAD,EACpB;AACA1kK,QAAAA,4CAAK,CAACmiK,MAAM,CAAChiH,QAAP,CAAgBp+C,KAAjB,EAAwBogK,MAAM,CAAChiH,QAAP,CAAgBmoD,MAAxC,CAAL,CAAqDr3G,IAArD,CAA0DoP,oDAAG,CAAC,UAAA9F,CAAC;AAAA,iBAAKA,CAAC,YAAY6iH,gBAAb,GAAgC,IAAI4iD,iBAAJ,EAAhC,GAA0DzlK,CAA/D;AAAA,SAAF,CAA7D,EAAmI7J,uDAAM,CAAC,UAAA6J,CAAC,EAAI;AAC3I,cAAI2F,OAAO,CAACykK,aAAZ,EAA2B;AACvB;AACA,gBAAMC,kBAAkB,GAAGd,gBAAgB,CAACt0K,SAAD,CAAhB,GAA8B4vB,SAA9B,GAA0CklJ,SAArE;AACA,mBAAO,CAACpkK,OAAO,CAACykK,aAAR,CAAsBpqK,CAAtB,EAAyBqqK,kBAAzB,CAAR;AACH;;AACD,iBAAO,IAAP;AACH,SAPwI,CAAzI,CAFoB,CAAL,CASV3zK,IATU,CASLkyB,qDAAI,CAAC,CAAD,CATC,EAUf;AACA;AACA;AACAI,QAAAA,sDAAK,EAbU,CAAf;AAcAuV,QAAAA,MAAM,CAAC3nC,SAAP,CAAiB4Q,KAAjB;AACAuiK,QAAAA,SAAS,CAACviK,KAAV,GAAkBA,KAAlB;AACAuiK,QAAAA,SAAS,CAACxrI,MAAV,GAAmBA,MAAnB;;AACA,YAAItpC,SAAS,IAAIsmH,yDAAS,EAA1B,EAA8B;AAC1B,cAAM+uD,eAAe,GAAGzvG,OAAO,CAACT,KAAR,CAAc,CAAd,KAAoBS,OAAO,CAACT,KAAR,CAAc,CAAd,EAAiB3tD,MAAjB,GAA0B,CAAtE;AACA,cAAM89J,iBAAiB,GAAG1vG,OAAO,CAACT,KAAR,CAAc,CAAd,KAAoBS,OAAO,CAACT,KAAR,CAAc,CAAd,EAAiB3tD,MAAjB,GAA0B,CAAxE;AACA,cAAM+9J,cAAc,GAAG7kK,OAAO,CAACxQ,KAAR,IAAiBm1K,eAAxC;AACA,cAAMG,eAAe,GAAG9kK,OAAO,CAACwjK,OAAR,IAAmBoB,iBAA3C;;AACA,cAAIt1K,SAAS,CAACurC,SAAV,YAA+BwoI,iBAAnC,EAAsD;AAClD;AACA,gBAAIwB,cAAc,IAAIC,eAAtB,EAAuC;AACnCv7J,cAAAA,OAAO,CAACs4E,IAAR;AAKH;AACJ,WATD,MAUK;AACD,gBAAI8iF,eAAe,IAAIC,iBAAvB,EAA0C;AACtCr7J,cAAAA,OAAO,CAACs4E,IAAR;AAIH;AACJ;AACJ;;AACD,eAAOuiF,SAAP;AACH;;;aACD,sBAAankH,QAAb,EAAuBjgD,OAAvB,EAAgC;AAC5BigD,QAAAA,QAAQ,CAACzwD,KAAT,GAAiBwQ,OAAO,CAACxQ,KAAzB;AACAywD,QAAAA,QAAQ,CAACujH,OAAT,GAAmBxjK,OAAO,CAACwjK,OAA3B;AACAvjH,QAAAA,QAAQ,CAACghH,aAAT,GAAyBjhK,OAAO,CAACihK,aAAR,IAAyB,WAAlD;AACAhhH,QAAAA,QAAQ,CAACl+C,KAAT,GAAiB/B,OAAO,CAAC+B,KAAzB;AACAk+C,QAAAA,QAAQ,CAAC8qC,QAAT,GAAoB/qF,OAAO,CAAC+qF,QAA5B;AACA9qC,QAAAA,QAAQ,CAACijH,QAAT,GAAoBljK,OAAO,CAACkjK,QAA5B;AACAjjH,QAAAA,QAAQ,CAAC3hD,MAAT,GAAkB0B,OAAO,CAAC1B,MAA1B;AACA2hD,QAAAA,QAAQ,CAACkjH,SAAT,GAAqBnjK,OAAO,CAACmjK,SAA7B;AACAljH,QAAAA,QAAQ,CAACh+C,SAAT,GAAqBjC,OAAO,CAACiC,SAA7B;AACAg+C,QAAAA,QAAQ,CAACuiH,kBAAT,GAA8BxiK,OAAO,CAACwiK,kBAAtC;AACAviH,QAAAA,QAAQ,CAAC4/G,UAAT,GAAsB7/J,OAAO,CAAC6/J,UAA9B;AACA5/G,QAAAA,QAAQ,CAACo/G,QAAT,GAAoBr/J,OAAO,CAACq/J,QAA5B;AACAp/G,QAAAA,QAAQ,CAAC8kH,cAAT,GAA0B/kK,OAAO,CAAC+kK,cAAlC;AACA9kH,QAAAA,QAAQ,CAAC4rE,SAAT,GAAqB7rH,OAAO,CAAC6rH,SAAR,KAAsB3sG,SAAtB,GAAkClf,OAAO,CAAC6rH,SAA1C,GAAsD,IAA3E;;AACA,YAAI7rH,OAAO,CAACk1D,OAAR,YAA2B11D,uDAA/B,EAA4C;AACxCygD,UAAAA,QAAQ,CAAC1L,eAAT,GAA2Bv0C,OAAO,CAACk1D,OAAnC;AACH;AACJ;;;aACD,qBAAYA,OAAZ,EAAqB7T,SAArB,EAAgC+iH,SAAhC,EAA2C;AACvC,YAAMjuK,QAAQ,GAAGkrD,SAAS,CAAC3tC,QAAV,CAAmBrG,GAAnB,CAAuBzX,qDAAvB,CAAjB;AACA,YAAI6+D,KAAK,GAAG,EAAZ;AACA,YAAIuwG,UAAU,GAAG,EAAjB;AACA,YAAIC,WAAW,GAAG,EAAlB;AACA,YAAItwG,YAAY,GAAG,IAAnB;;AACA,YAAI,OAAOO,OAAP,KAAmB,QAAvB,EAAiC;AAC7BT,UAAAA,KAAK,GAAG,CAACt+D,QAAQ,CAACw/D,UAAT,CAAoBT,OAApB,CAAD,CAAR;AACH,SAFD,MAGK,IAAIA,OAAO,IAAI,EAAEA,OAAO,YAAY11D,uDAArB,CAAf,EAAkD;AACnD;AACA,cAAMkU,QAAQ,GAAG,IAAImwJ,cAAJ,CAAmB;AAAA,mBAAMO,SAAN;AAAA,WAAnB,EAAoC/iH,SAAS,CAAC3tC,QAA9C,CAAjB;AACA,cAAMzU,OAAO,GAAG,KAAKilK,QAAL,CAActjH,uBAAd,CAAsCsU,OAAtC,CAAhB;AACAP,UAAAA,YAAY,GAAGtT,SAAS,CAACR,eAAV,CAA0B5hD,OAA1B,EAAmCigB,SAAnC,EAA8CxL,QAA9C,CAAf;AACAsxJ,UAAAA,UAAU,GAAGr0J,KAAK,CAACy8B,IAAN,CAAWunB,YAAY,CAAC5T,QAAb,CAAsBz9C,aAAtB,CAAoCg2C,gBAApC,CAAqD,uBAArD,CAAX,CAAb;AACAmb,UAAAA,KAAK,GAAG,CAACE,YAAY,CAAC5T,QAAb,CAAsBz9C,aAAvB,CAAR;AACA2hK,UAAAA,WAAW,GAAGt0J,KAAK,CAACy8B,IAAN,CAAWunB,YAAY,CAAC5T,QAAb,CAAsBz9C,aAAtB,CAAoCg2C,gBAApC,CAAqD,sBAArD,CAAX,CAAd;AACA8qH,UAAAA,SAAS,CAAClvG,OAAV,GAAoBP,YAApB;AACH;;AACD,eAAO;AACHA,UAAAA,YAAY,EAAZA,YADG;AAEHF,UAAAA,KAAK,EAAE,CACHuwG,UADG,EAEHvwG,KAFG,EAGHwwG,WAHG,CAGS;AAHT;AAFJ,SAAP;AAQH;;;;;;AAELhB,EAAAA,aAAa,CAACxoI,IAAd;AAAA,qBAA2GwoI,aAA3G,EArnC0G5yK,uDAqnC1G,CAA0IA,oEAA1I,GArnC0GA,uDAqnC1G,CAAkLoyK,sBAAlL;AAAA;;AACAQ,EAAAA,aAAa,CAACroI,KAAd,kBAtnC0GvqC,iEAsnC1G;AAAA,WAA+G4yK,aAA/G;AAAA,aAA+GA,aAA/G;AAAA;SAxLMA;;;AAyLN;AAAA;AAAA;AAOA;AACA;AACA;;;AACA,IAAIiB,SAAS,GAAG,KAAhB;AACA;AACA;AACA;;AACA,IAAMC,eAAe,GAAG;AACpBz2C,EAAAA,SAAS,EAAE,IADS;AAEpBpwH,EAAAA,MAAM,EAAE,IAFY;AAGpB7D,EAAAA,IAAI,EAAE,IAHc;AAIpB0oK,EAAAA,SAAS,EAAE,GAJS;AAKpBp4E,EAAAA,QAAQ,EAAE,GALU;AAMpB9nF,EAAAA,QAAQ,EAAE,UANU;AAOpBmiK,EAAAA,SAAS,EAAE,IAPS;AAQpBhnK,EAAAA,KAAK,EAAE,SARa;AASpB5D,EAAAA,GAAG,EAAE,IATe;AAUpBuH,EAAAA,KAAK,EAAE;AAVa,CAAxB;AAYA;AACA;AACA;;AACA,IAAMsjK,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACpqJ,EAAD,EAAKinJ,EAAL;AAAA,SAAY,UAAAzD,SAAS,EAAI;AAC9C,WAAOxjJ,EAAE,CAACqzG,SAAH,CACFv9H,IADE,CACG6P,0DAAS,CAACqa,EAAE,CAACszG,YAAH,CAAgBx9H,IAAhB,CAAqBmyB,oDAAG,CAAC,YAAM;AAAEg/I,MAAAA,EAAE,CAACr3J,IAAH;AAAY,KAArB,CAAxB,CAAD,CADZ,EAC+D1K,oDAAG,CAAC;AAAA,UAAGmlK,KAAH,SAAGA,KAAH;AAAA,UAAUC,KAAV,SAAUA,KAAV;AAAA,aAAuB;AAC7FC,QAAAA,SAAS,EAAE/G,SAAS,CAAC6G,KADwE;AAE7FG,QAAAA,SAAS,EAAEhH,SAAS,CAAC8G,KAFwE;AAG7FD,QAAAA,KAAK,EAALA,KAH6F;AAI7FC,QAAAA,KAAK,EAALA;AAJ6F,OAAvB;AAAA,KAAD,CADlE,CAAP;AAOH,GARwB;AAAA,CAAzB;AASA;AACA;AACA;;;IACMG;MAAAA;AACF,+BAAY7xF,MAAZ,EAAoB;AAAA;;AAChB,WAAKA,MAAL,GAAcA,MAAd;AACA,WAAKhyE,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA,WAAKsvC,KAAL,GAAa,IAAItvC,wDAAJ,EAAb;AACA,WAAKwN,MAAL,GAAc,IAAIxN,wDAAJ,EAAd;AACA,WAAK0hK,WAAL,GAAmB,IAAI1hK,wDAAJ,EAAnB;AACA,WAAK2hK,SAAL,GAAiB,IAAI3hK,wDAAJ,EAAjB;AACA,WAAK4hK,OAAL,GAAe,IAAI5hK,wDAAJ,EAAf;AACA,WAAK6hK,WAAL,GAAmB,IAAI7hK,wDAAJ,EAAnB;AACA,WAAK8hK,SAAL,GAAiB,IAAI9hK,wDAAJ,EAAjB;AACA,WAAKjE,OAAL,GAAekO,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBg3J,eAAlB,CAAf;AACA,WAAKa,UAAL,GAAkB,IAAlB;AACA,WAAKh9C,aAAL,GAAqB,IAAIzS,+CAAJ,EAArB;AACA,WAAK0vD,gBAAL,GAAwB,IAAI1vD,+CAAJ,EAAxB;AACH;;;;aACD,uBAAc;AACV,YAAI,KAAKyS,aAAT,EAAwB;AACpB,eAAKA,aAAL,CAAmB53H,WAAnB;AACH;;AACD,YAAI,KAAK60K,gBAAT,EAA2B;AACvB,eAAKA,gBAAL,CAAsB70K,WAAtB;AACH;AACJ;;;aACD,cAAK6pB,EAAL,EAAS;AACL,YAAM7c,KAAK,GAAG,KAAK4B,OAAL,CAAa5B,KAA3B;AACA,YAAI4B,OAAO,GAAG,KAAKA,OAAnB;AACA,aAAK9O,MAAL,GAAc+pB,EAAd;;AACA,YAAI7c,KAAK,KAAK,SAAd,EAAyB;AACrB,eAAK8nK,cAAL,GAAsBh4J,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBnO,OAAlB,CAAtB;AACH;;AACD,YAAI5B,KAAK,KAAK,WAAd,EAA2B;AACvB4B,UAAAA,OAAO,CAAC1B,MAAR,GAAiB,CAAjB;AACA0B,UAAAA,OAAO,CAACmjK,SAAR,GAAoB,CAApB;AACH;;AACD,YAAI/kK,KAAK,KAAK,WAAd,EAA2B;AACvB4B,UAAAA,OAAO,CAACiD,QAAR,GAAmB,OAAnB;AACH;AACJ;;;aACD,gBAAOgY,EAAP,EAAW;AAAA;;AACP,aAAK+tG,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKswC,MAAL,CAAY3tC,iBAAZ,CAA8B,YAAM;AACvD,cAAIigI,aAAJ;AACA,cAAIC,WAAJ;AACA,iBAAI,CAACH,gBAAL,GAAwBhrJ,EAAE,CAACozG,UAAH,CACnBt9H,IADmB,CACdmyB,oDAAG,CAAC,UAACg/I,EAAD,EAAQ;AAClB,gBAAI,CAACA,EAAE,CAACmE,OAAR,EAAiB;AACbnhK,cAAAA,cAAc,CAACg9J,EAAD,CAAd;AACH;;AACD,mBAAI,CAAC3uH,KAAL,CAAW1oC,IAAX;;AACAs7J,YAAAA,aAAa,GAAG,OAAI,CAAC13E,eAAL,EAAhB;AACA23E,YAAAA,WAAW,GAAG,KAAd;AACH,WAPY,CADW,EAQpBvmK,0DAAS,CAACwlK,gBAAgB,CAACpqJ,EAAD,EAAK,OAAI,CAAC4qJ,OAAV,CAAjB,CARW,EASnB50K,SATmB,CAST,iBAA4C;AAAA,gBAAzCq0K,KAAyC,SAAzCA,KAAyC;AAAA,gBAAlCC,KAAkC,SAAlCA,KAAkC;AAAA,gBAA3BC,SAA2B,SAA3BA,SAA2B;AAAA,gBAAhBC,SAAgB,SAAhBA,SAAgB;;AACvD,gBAAI,CAACW,WAAL,EAAkB;AACd,qBAAI,CAACE,WAAL;;AACA,qBAAI,CAACV,SAAL,CAAe/6J,IAAf;;AACAu7J,cAAAA,WAAW,GAAG,IAAd;AACH;;AACD,mBAAI,CAACG,UAAL,CAAgB;AACZf,cAAAA,SAAS,EAATA,SADY;AACDC,cAAAA,SAAS,EAATA,SADC;AAEZH,cAAAA,KAAK,EAALA,KAFY;AAELC,cAAAA,KAAK,EAALA,KAFK;AAEEY,cAAAA,aAAa,EAAbA;AAFF,aAAhB;AAIH,WAnBuB,CAAxB;AAoBH,SAvBsB,CAAvB;AAwBH;;;aACD,2BAAkE;AAAA,YAArDX,SAAqD,SAArDA,SAAqD;AAAA,YAA1CC,SAA0C,SAA1CA,SAA0C;AAAA,YAA/BH,KAA+B,SAA/BA,KAA+B;AAAA,YAAxBC,KAAwB,SAAxBA,KAAwB;AAAA,YAAjBY,aAAiB,SAAjBA,aAAiB;AAC9D,aAAKnmK,OAAL,CAAavF,IAAb,GAAoB0rK,aAAa,CAACx8J,CAAd,GAAkB27J,KAAlB,GAA0BE,SAA9C;AACA,aAAKxlK,OAAL,CAAaxF,GAAb,GAAmB2rK,aAAa,CAAC79G,CAAd,GAAkBi9G,KAAlB,GAA0BE,SAA7C;;AACA,YAAI,KAAKzlK,OAAL,CAAa5B,KAAb,KAAuB,WAAvB,IAAsCi5G,SAAS,CAAC,KAAK6uD,cAAN,CAAnD,EAA0E;AACtE,eAAKA,cAAL,CAAoBzrK,IAApB,GAA2B,KAAKuF,OAAL,CAAavF,IAAxC;AACA,eAAKyrK,cAAL,CAAoB1rK,GAApB,GAA0B,KAAKwF,OAAL,CAAaxF,GAAvC;AACH;;AACD,aAAKiX,MAAL,CAAY5G,IAAZ,CAAiB;AACbpQ,UAAAA,IAAI,EAAE0rK,aAAa,CAACx8J,CAAd,GAAkB27J,KAAlB,GAA0BE,SADnB;AAEbhrK,UAAAA,GAAG,EAAE2rK,aAAa,CAAC79G,CAAd,GAAkBi9G,KAAlB,GAA0BE;AAFlB,SAAjB;AAIH;;;aACD,kBAASv0J,MAAT,EAAiB02B,SAAjB,EAA4B;AAAA;;AACxB,aAAKohF,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKswC,MAAL,CAAY3tC,iBAAZ,CAA8B,YAAM;AACvD,cAAIsgI,sBAAJ;AACA,cAAIC,aAAa,GAAG,KAApB;AACAv1J,UAAAA,MAAM,CAACm9G,UAAP,CAAkBt9H,IAAlB,CAAuBmyB,oDAAG,CAAC,UAACg/I,EAAD,EAAQ;AAC/Bh9J,YAAAA,cAAc,CAACg9J,EAAD,CAAd;;AACA,mBAAI,CAAC3uH,KAAL,CAAW1oC,IAAX;;AACA27J,YAAAA,sBAAsB,GAAG,OAAI,CAACE,wBAAL,EAAzB;AACAD,YAAAA,aAAa,GAAG,KAAhB;AACH,WALyB,CAA1B,EAKI5mK,0DAAS,CAACwlK,gBAAgB,CAACn0J,MAAD,EAAS,OAAI,CAAC60J,SAAd,CAAjB,CALb,EAMK90K,SANL,CAMe,iBAA4C;AAAA,gBAAzCq0K,KAAyC,SAAzCA,KAAyC;AAAA,gBAAlCC,KAAkC,SAAlCA,KAAkC;AAAA,gBAA3BC,SAA2B,SAA3BA,SAA2B;AAAA,gBAAhBC,SAAgB,SAAhBA,SAAgB;;AACvD,gBAAI,CAACgB,aAAL,EAAoB;AAChB,qBAAI,CAACX,WAAL,CAAiBj7J,IAAjB,CAAsB+8B,SAAtB;;AACA6+H,cAAAA,aAAa,GAAG,IAAhB;AACH;;AACD,gBAAIE,MAAM,GAAGrB,KAAK,GAAGE,SAArB;AACA,gBAAIoB,MAAM,GAAGrB,KAAK,GAAGE,SAArB;;AACA,mBAAI,CAACoB,YAAL,CAAkBL,sBAAlB,EAA0C5+H,SAA1C,EAAqD++H,MAArD,EAA6DC,MAA7D;AACH,WAdD;AAeH,SAlBsB,CAAvB;AAmBH;;;aACD,sBAAah2C,OAAb,EAAsBvmH,GAAtB,EAA2Bs8J,MAA3B,EAAmCC,MAAnC,EAA2C;AAAA;;AACvC,YAAME,GAAG,GAAG,KAAK9mK,OAAjB;AACA,YAAIkiK,EAAE,GAAG,EAAT;;AACA,YAAI73J,GAAG,CAAC6K,OAAJ,CAAY,GAAZ,KAAoB,CAAxB,EAA2B;AACvB,cAAM6xJ,QAAQ,GAAGn2C,OAAO,CAAC7uH,KAAR,GAAgB4kK,MAAjC;;AACA,cAAII,QAAQ,KAAKD,GAAG,CAAC/kK,KAAjB,IAA0BglK,QAAQ,IAAID,GAAG,CAAC/7E,QAA9C,EAAwD;AACpDm3E,YAAAA,EAAE,CAACngK,KAAH,GAAWglK,QAAX;AACH;AACJ;;AACD,YAAI18J,GAAG,CAAC6K,OAAJ,CAAY,GAAZ,KAAoB,CAAxB,EAA2B;AACvB,cAAM8xJ,SAAS,GAAGp2C,OAAO,CAACtyH,MAAR,GAAiBsoK,MAAnC;AACA,cAAMK,MAAM,GAAGr2C,OAAO,CAACtoE,CAAR,GAAYs+G,MAA3B;;AACA,cAAII,SAAS,KAAKF,GAAG,CAACxoK,MAAlB,IAA4B0oK,SAAS,IAAIF,GAAG,CAAC3D,SAA7C,IAA0D8D,MAAM,KAAKH,GAAG,CAACtsK,GAA7E,EAAkF;AAC9E0nK,YAAAA,EAAE,CAAC5jK,MAAH,GAAY0oK,SAAZ;AACA9E,YAAAA,EAAE,CAAC1nK,GAAH,GAASysK,MAAT;AACH;AACJ;;AACD,YAAI58J,GAAG,CAAC6K,OAAJ,CAAY,GAAZ,KAAoB,CAAxB,EAA2B;AACvB,cAAM8xJ,UAAS,GAAGp2C,OAAO,CAACtyH,MAAR,GAAiBsoK,MAAnC;;AACA,cAAII,UAAS,KAAKF,GAAG,CAACxoK,MAAlB,IAA4B0oK,UAAS,IAAIF,GAAG,CAAC3D,SAAjD,EAA4D;AACxDjB,YAAAA,EAAE,CAAC5jK,MAAH,GAAY0oK,UAAZ;AACH;AACJ;;AACD,YAAI38J,GAAG,CAAC6K,OAAJ,CAAY,GAAZ,KAAoB,CAAxB,EAA2B;AACvB,cAAMgyJ,OAAO,GAAGt2C,OAAO,CAACjnH,CAAR,GAAYg9J,MAA5B;;AACA,cAAMI,SAAQ,GAAGn2C,OAAO,CAAC7uH,KAAR,GAAgB4kK,MAAjC;;AACA,cAAII,SAAQ,KAAKD,GAAG,CAAC/kK,KAAjB,IAA0BglK,SAAQ,IAAID,GAAG,CAAC/7E,QAA1C,IAAsDm8E,OAAO,KAAKJ,GAAG,CAACrsK,IAA1E,EAAgF;AAC5EynK,YAAAA,EAAE,CAACngK,KAAH,GAAWglK,SAAX;AACA7E,YAAAA,EAAE,CAACznK,IAAH,GAAUysK,OAAV;AACH;AACJ;;AACD,YAAI7vD,SAAS,CAAC6qD,EAAE,CAACngK,KAAJ,CAAT,IAAuBs1G,SAAS,CAAC6qD,EAAE,CAAC5jK,MAAJ,CAApC,EAAiD;AAC7CqgK,UAAAA,aAAa,CAACtnK,OAAd,CAAsB,UAAC6G,KAAD,EAAW;AAC7B,gBAAIm5G,SAAS,CAAC6qD,EAAE,CAAChkK,KAAD,CAAH,CAAb,EAA0B;AACtB,qBAAI,CAAC8B,OAAL,CAAa9B,KAAb,IAAsBgkK,EAAE,CAAChkK,KAAD,CAAxB;AACH;AACJ,WAJD;AAKA,eAAKuT,MAAL,CAAY5G,IAAZ,CAAiBq3J,EAAjB;AACH;AACJ;;;aACD,yBAAgB;AACZ,aAAK8D,UAAL,GAAkB,SAAlB;AACA,aAAKmB,YAAL;AACH;;;aACD,wBAAe;AACX,YAAI9vD,SAAS,CAAC,KAAK6uD,cAAN,CAAb,EAAoC;AAChC,eAAKlmK,OAAL,GAAekO,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAK+3J,cAAvB,CAAf;AACH;;AACD,aAAKlmK,OAAL,CAAa5B,KAAb,GAAqB,SAArB;AACA,aAAKunK,WAAL,CAAiB96J,IAAjB,CAAsB,SAAtB;AACH;;;aACD,wBAAe;AACX,aAAKq7J,cAAL,GAAsBh4J,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKnO,OAAvB,CAAtB;AACH;;;aACD,0BAAiB;AACb,aAAKgmK,UAAL,GAAkB,UAAlB;AACA,aAAKoB,aAAL;AACH;;;aACD,yBAAgB;AACZ,aAAKC,YAAL;AACA,YAAMC,GAAG,GAAG,KAAKC,cAAjB;AACA,aAAKvnK,OAAL,GAAekO,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKnO,OAAvB,EAAgC;AAC3C1B,UAAAA,MAAM,EAAEgpK,GAAG,CAAChpK,MAD+B;AAE3C7D,UAAAA,IAAI,EAAE,CAFqC;AAG3CwI,UAAAA,QAAQ,EAAE,OAHiC;AAI3C7E,UAAAA,KAAK,EAAE,WAJoC;AAK3C5D,UAAAA,GAAG,EAAE,CALsC;AAM3CuH,UAAAA,KAAK,EAAEulK,GAAG,CAACvlK;AANgC,SAAhC,CAAf;AAQA,aAAK4jK,WAAL,CAAiB96J,IAAjB,CAAsB,WAAtB;AACH;;;aACD,0BAAiB;AACb,aAAKm7J,UAAL,GAAkB,UAAlB;AACA,aAAKwB,aAAL;AACH;;;aACD,yBAAgB;AACZ,aAAKH,YAAL;AACA,aAAKrnK,OAAL,GAAekO,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKnO,OAAvB,EAAgC;AAC3C1B,UAAAA,MAAM,EAAE,IADmC;AAE3C6kK,UAAAA,SAAS,EAAE,CAFgC;AAG3C/kK,UAAAA,KAAK,EAAE;AAHoC,SAAhC,CAAf;AAKA,aAAKunK,WAAL,CAAiB96J,IAAjB,CAAsB,WAAtB;AACH;AACD;AACJ;AACA;AACA;;;;aACI,4BAAmB;AACf,YAAMzM,KAAK,GAAG,KAAK4B,OAAL,CAAa5B,KAA3B;;AACA,gBAAQA,KAAR;AACI,eAAK,SAAL;AACI,iBAAKqpK,WAAL;AACA,iBAAKN,YAAL;AACA;;AACJ,eAAK,WAAL;AACI,iBAAKM,WAAL;AACA,iBAAKL,aAAL;AACA;;AACJ,eAAK,WAAL;AACI,iBAAKI,aAAL;AACA;;AACJ;AACI;AAbR;AAeH;;;aACD,uBAAc;AACV,aAAK3lK,KAAL,CAAWgJ,IAAX;AACH;;;aACD,uBAAc;AACV,YAAM68J,YAAY,GAAG3sH,oEAAM,CAAC,KAAK7pD,MAAL,CAAYoS,aAAb,CAA3B;;AACA,YAAI,CAAC+zG,SAAS,CAAC,KAAKr3G,OAAL,CAAa+B,KAAd,CAAd,EAAoC;AAChC,eAAK/B,OAAL,CAAa+B,KAAb,GAAqB2lK,YAAY,CAAC3lK,KAAlC;AACA,eAAK0P,MAAL,CAAY5G,IAAZ,CAAiB;AAAE9I,YAAAA,KAAK,EAAE2lK,YAAY,CAAC3lK;AAAtB,WAAjB;AACH;AACJ;;;aACD,uBAAc;AACV,YAAI,KAAK/B,OAAL,CAAa1B,MAAb,KAAwB,CAA5B,EAA+B;AAC3B,iBAAO,KAAK0B,OAAL,CAAa1B,MAApB;AACH;;AACD,YAAI,KAAK0B,OAAL,CAAamjK,SAAb,KAA2B,CAA/B,EAAkC;AAC9B,iBAAO,KAAKnjK,OAAL,CAAamjK,SAApB;AACH;AACJ;;;aACD,kBAAS;AACL,YAAI,KAAKnjK,OAAL,CAAa5B,KAAb,KAAuB,WAA3B,EAAwC;AACpC;AACH;;AACD,YAAI7D,MAAM,GAAGw2I,4EAAc,CAAC,KAAK7/I,MAAL,CAAYoS,aAAb,CAA3B;AACA,YAAIgkK,GAAG,GAAG,KAAKC,cAAf;AACA,YAAIpmD,OAAO,GAAGpmE,oEAAM,CAAC,KAAK7pD,MAAL,CAAYoS,aAAb,CAApB;AACA,YAAI4+J,EAAE,GAAG,EAAT;;AACA,YAAI,CAAC7qD,SAAS,CAAC,KAAKr3G,OAAL,CAAavF,IAAd,CAAd,EAAmC;AAC/B,eAAKuF,OAAL,CAAavF,IAAb,GAAoBF,MAAM,CAACoP,CAAP,GAAWqwB,IAAI,CAACF,GAAL,CAAS,CAAT,EAAY,CAACwtI,GAAG,CAACvlK,KAAJ,GAAYo/G,OAAO,CAACp/G,KAArB,IAA8B,CAA1C,CAA/B;AACAmgK,UAAAA,EAAE,CAACznK,IAAH,GAAU,KAAKuF,OAAL,CAAavF,IAAvB;AACH;;AACD,YAAI,CAAC48G,SAAS,CAAC,KAAKr3G,OAAL,CAAaxF,GAAd,CAAd,EAAkC;AAC9B,eAAKwF,OAAL,CAAaxF,GAAb,GAAmBD,MAAM,CAAC+tD,CAAP,GAAWtuB,IAAI,CAACF,GAAL,CAAS,CAAT,EAAY,CAACwtI,GAAG,CAAChpK,MAAJ,GAAa6iH,OAAO,CAAC7iH,MAAtB,IAAgC,CAA5C,CAA9B;AACA4jK,UAAAA,EAAE,CAAC1nK,GAAH,GAAS,KAAKwF,OAAL,CAAaxF,GAAtB;AACH;;AACD,aAAKiX,MAAL,CAAY5G,IAAZ,CAAiBq3J,EAAjB;AACH;;;aACD,oCAA2B;AACvB,YAAM7tD,CAAC,GAAG,KAAKr0G,OAAf;AACA,YAAM2nK,GAAG,GAAG5sH,oEAAM,CAAC,KAAK7pD,MAAL,CAAYoS,aAAb,CAAlB;AACA,eAAO4K,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKsgF,eAAL,EAAlB,EAA0C;AAC7CnwF,UAAAA,MAAM,EAAE+1G,CAAC,CAAC/1G,MAAF,GAAW+1G,CAAC,CAAC/1G,MAAb,GAAsBqpK,GAAG,CAACrpK,MADW;AAE7CyD,UAAAA,KAAK,EAAEsyG,CAAC,CAACtyG,KAAF,GAAUsyG,CAAC,CAACtyG,KAAZ,GAAoB4lK,GAAG,CAAC5lK;AAFc,SAA1C,CAAP;AAIH;;;aACD,2BAAkB;AACd,YAAMsyG,CAAC,GAAG,KAAKr0G,OAAf;;AACA,YAAI,CAACq0G,CAAC,CAAC75G,GAAH,IAAU,CAAC65G,CAAC,CAAC55G,IAAjB,EAAuB;AACnB,eAAKmtK,WAAL;AACH;;AACD,eAAO;AACHj+J,UAAAA,CAAC,EAAE,KAAK3J,OAAL,CAAavF,IADb;AAEH6tD,UAAAA,CAAC,EAAE,KAAKtoD,OAAL,CAAaxF;AAFb,SAAP;AAIH;;;aACD,uBAAc;AACV,YAAM2mH,OAAO,GAAGo8C,gFAAkB,CAAC,KAAKrsK,MAAL,CAAYoS,aAAb,EAA4Bk6J,gFAAkB,CAAC,KAAKtsK,MAAL,CAAYoS,aAAb,CAA9C,CAAlC;AACA,aAAKtD,OAAL,CAAavF,IAAb,GAAoB0mH,OAAO,CAAC1mH,IAA5B;AACA,aAAKuF,OAAL,CAAaxF,GAAb,GAAmB2mH,OAAO,CAAC3mH,GAA3B;AACH;;;aACD,0BAAiB0D,KAAjB,EAAwByD,KAAxB,EAA+B;AAC3B,YAAI01G,SAAS,CAAC,KAAK6uD,cAAN,CAAb,EAAoC;AAChC,eAAKA,cAAL,CAAoBhoK,KAApB,IAA6ByD,KAA7B;AACH;AACJ;;;WACD,eAAyB;AACrB,eAAOujK,SAAP;AACH;;;WACD,eAAiB;AACb,eAAOA,SAAS,EAAhB;AACH;;;WACD,eAAqB;AACjB,eAAOzH,+EAAiB,CAAC,KAAKvsK,MAAL,CAAYoS,aAAb,CAAxB;AACH;;;;;;AAELoiK,EAAAA,iBAAiB,CAACjqI,IAAlB;AAAA,qBAA+GiqI,iBAA/G,EAt7C0Gr0K,uDAs7C1G,CAAkJA,kDAAlJ;AAAA;;AACAq0K,EAAAA,iBAAiB,CAAC9pI,KAAlB,kBAv7C0GvqC,iEAu7C1G;AAAA,WAAmHq0K,iBAAnH;AAAA,aAAmHA,iBAAnH;AAAA;SAvRMA;;;AAwRN;AAAA;AAAA;AAIA;AACA;AACA;;;IACMmC;MAAAA;AACF,mCAAYn5C,SAAZ,EAAuBzzG,EAAvB,EAA2B9kB,QAA3B,EAAqCglB,OAArC,EAA8C;AAAA;;AAC1C,WAAKuzG,SAAL,GAAiBA,SAAjB;AACA,WAAKzzG,EAAL,GAAUA,EAAV;AACA,WAAK9kB,QAAL,GAAgBA,QAAhB;AACA,WAAKglB,OAAL,GAAeA,OAAf;AACA,WAAK6tG,aAAL,GAAqB,IAAIzS,+CAAJ,EAArB;AACH;;;;WACD,eAAgB;AACZ,eAAO,IAAP;AACH;;;aACD,oBAAW;AAAA;;AACP,aAAKuxD,UAAL;AACA,aAAK3xK,QAAL,CAAcK,QAAd,CAAuB,KAAKykB,EAAL,CAAQ3X,aAA/B,EAA8C,cAAc,KAAKskC,SAAjE;AACA,aAAKohF,aAAL,CAAmBzlF,GAAnB,CAAuBuxD,yCAAE,CAAC,KAAK45B,SAAN,CAAF,CAAmBz9H,SAAnB,CAA6B,UAAAigB,MAAM,EAAI;AAC1D,iBAAI,CAACiK,OAAL,CAAa4sJ,QAAb,CAAsB72J,MAAtB,EAA8B,OAAI,CAAC02B,SAAnC;AACH,SAFsB,CAAvB;AAGA,aAAKohF,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKpoB,OAAL,CAAa2qJ,WAAb,CAAyB70K,SAAzB,CAAmC,UAACoZ,GAAD,EAAS;AAC/D,cAAIA,GAAG,KAAK,OAAI,CAACu9B,SAAjB,EAA4B;AACxB,mBAAI,CAACkgI,UAAL,CAAgB,MAAhB;AACH;AACJ,SAJsB,CAAvB;AAKA,aAAK9+C,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKpoB,OAAL,CAAayqJ,SAAb,CAAuB30K,SAAvB,CAAiC,YAAM;AAC1D,iBAAI,CAAC62K,UAAL,CAAgB,MAAhB;AACH,SAFsB,CAAvB;AAGA,aAAK9+C,aAAL,CAAmBzlF,GAAnB,CAAuBzjC,4CAAK,CAAC,KAAKqb,OAAL,CAAa4qJ,SAAd,EAAyB,KAAK5qJ,OAAL,CAAa0qJ,OAAtC,CAAL,CAAoD50K,SAApD,CAA8D,YAAM;AACvF,iBAAI,CAAC62K,UAAL,CAAgB,OAAhB;AACH,SAFsB,CAAvB;AAGA,aAAK9+C,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKpoB,OAAL,CAAawqJ,WAAb,CAAyB10K,SAAzB,CAAmC,UAACmN,KAAD,EAAW;AACjE,iBAAI,CAAC0pK,UAAL,CAAgB1pK,KAAK,KAAK,SAAV,GAAsB,OAAtB,GAAgC,MAAhD;AACH,SAFsB,CAAvB;AAGH;;;aACD,uBAAc;AACV,aAAK4qH,aAAL,CAAmB53H,WAAnB;AACH;;;aACD,sBAA4B;AAAA,YAAjBuQ,KAAiB,uEAAT,OAAS;AACxB,aAAKxL,QAAL,CAAc29D,QAAd,CAAuB,KAAK74C,EAAL,CAAQ3X,aAA/B,EAA8C,SAA9C,EAAyD,KAAK6X,OAAL,CAAanb,OAAb,CAAqB5B,KAArB,KAA+B,SAA/B,GAA2CuD,KAA3C,GAAmD,MAA5G;AACH;;;;;;AAELkmK,EAAAA,qBAAqB,CAACpsI,IAAtB;AAAA,qBAAmHosI,qBAAnH,EAt+C0Gx2K,gEAs+C1G,CAA0J0iI,+EAA1J,MAt+C0G1iI,gEAs+C1G,CAA0MA,sDAA1M,GAt+C0GA,gEAs+C1G,CAAoOA,qDAApO,GAt+C0GA,gEAs+C1G,CAA6Pq0K,iBAA7P;AAAA;;AACAmC,EAAAA,qBAAqB,CAAC5rI,IAAtB,kBAv+C0G5qC,gEAu+C1G;AAAA,UAAuGw2K,qBAAvG;AAAA;AAAA;AAAA;AAAA;AAv+C0Gx2K,QAAAA,0DAu+C1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;SAxCMw2K;;;AAyCN;AAAA;AAAA;;IAcMG;MAAAA;AACF,qCAAY/sJ,EAAZ,EAAgBE,OAAhB,EAAyB04D,MAAzB,EAAiC;AAAA;;AAC7B,WAAK54D,EAAL,GAAUA,EAAV;AACA,WAAK44D,MAAL,GAAcA,MAAd;AACA,WAAK14D,OAAL,GAAeA,OAAf;AACH;;;;aACD,oBAAW;AACP,aAAK8sJ,aAAL,GAAqB,IAAI95C,+EAAJ,CAAuB,KAAKlzG,EAA5B,EAAgC,KAAK44D,MAArC,CAArB;AACA,aAAKo0F,aAAL,CAAmB/mH,QAAnB;;AACA,YAAI,KAAKgnH,WAAT,EAAsB;AAClB,eAAKC,aAAL;AACH;;AACD,aAAKC,oBAAL;AACH;;;aACD,uBAAc;AACV,aAAKH,aAAL,CAAmBI,WAAnB;AACA,aAAKC,eAAL;AACA,aAAKC,gBAAL;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgB;AAAA;;AACZ,aAAKD,eAAL;AACA,aAAKrC,gBAAL,GAAwBnxE,yCAAE,CAAC,KAAKmzE,aAAN,CAAF,CAAuBh3K,SAAvB,CAAiC,UAAAu3K,QAAQ,EAAI;AACjE,iBAAI,CAACrtJ,OAAL,CAAastJ,MAAb,CAAoBD,QAApB;AACH,SAFuB,CAAxB;AAGH;AACD;AACJ;AACA;;;;aACI,gCAAuB;AAAA;;AACnB,aAAKE,iBAAL,GAAyB,KAAKvtJ,OAAL,CAAawqJ,WAAb,CAAyB10K,SAAzB,CAAmC,UAACmN,KAAD,EAAW;AACnE,cAAI,OAAI,CAAC+c,OAAL,CAAanb,OAAb,CAAqB0uH,SAAzB,EAAoC;AAChC,gBAAItwH,KAAK,KAAK,WAAd,EAA2B;AACvB,qBAAI,CAACkqK,eAAL;AACH,aAFD,MAGK;AACD,qBAAI,CAACH,aAAL;AACH;AACJ;AACJ,SATwB,CAAzB;AAUH;AACD;AACJ;AACA;;;;aACI,2BAAkB;AACd,YAAI,KAAKlC,gBAAT,EAA2B;AACvB,eAAK9qJ,OAAL,CAAa8qJ,gBAAb,CAA8B70K,WAA9B;AACA,eAAK60K,gBAAL,CAAsB70K,WAAtB;AACA,eAAK60K,gBAAL,GAAwB,IAAxB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,4BAAmB;AACf,YAAI,KAAKyC,iBAAT,EAA4B;AACxB,eAAKA,iBAAL,CAAuBt3K,WAAvB;AACA,eAAKs3K,iBAAL,GAAyB,IAAzB;AACH;AACJ;;;WACD,eAAgB;AACZ,eAAO,IAAP;AACH;;;WACD,eAAkB;AACd,YAAI,KAAKR,WAAT,EAAsB;AAClB,iBAAO,MAAP;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAOhG,EAAP,EAAW;AACP,YAAMvnK,MAAM,GAAGunK,EAAE,CAACvnK,MAAlB;AACA,YAAMyD,KAAK,GAAG,KAAK+c,OAAL,CAAanb,OAAb,CAAqB5B,KAAnC;;AACA,YAAI,CAACkyH,UAAU,CAAC31H,MAAD,EAAS,QAAT,CAAX,IAAiC,CAAC60H,WAAW,CAAC70H,MAAD,EAAS,KAAT,CAA7C,IAAgE,KAAKwgB,OAAL,CAAanb,OAAb,CAAqBolK,SAAzF,EAAoG;AAChG,cAAIhnK,KAAK,KAAK,SAAd,EAAyB;AACrB,iBAAK+c,OAAL,CAAawtJ,cAAb;AACH,WAFD,MAGK,IAAIvqK,KAAK,KAAK,WAAd,EAA2B;AAC5B,iBAAK+c,OAAL,CAAaytJ,aAAb;AACH;AACJ;AACJ;;;WACD,eAAkB;AACd,YAAM5oK,OAAO,GAAG,KAAKmb,OAAL,CAAanb,OAA7B;AACA,eAAOA,OAAO,CAAC0uH,SAAR,IAAqB1uH,OAAO,CAAC5B,KAAR,KAAkB,WAA9C;AACH;;;;;;AAEL4pK,EAAAA,uBAAuB,CAACvsI,IAAxB;AAAA,qBAAqHusI,uBAArH,EAhlD0G32K,gEAglD1G,CAA8JA,sDAA9J,GAhlD0GA,gEAglD1G,CAAwLq0K,iBAAxL,GAhlD0Gr0K,gEAglD1G,CAAsNA,kDAAtN;AAAA;;AACA22K,EAAAA,uBAAuB,CAAC7pI,IAAxB,kBAjlD0G9sC,gEAilD1G;AAAA,UAAyG22K,uBAAzG;AAAA;AAAA;AAAA;AAAA;AAjlD0G32K,QAAAA,yDAilD1G;AAAA,iBAAyG,kBAAzG;AAAA;AAAA;;AAAA;AAjlD0GA,QAAAA,0DAilD1G;AAjlD0GA,QAAAA,0DAilD1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAjlD0GA,QAAAA,8DAilD1G;AAjlD0GA,QAAAA,yDAklDtG,yEADJ;AAjlD0GA,QAAAA,yDAmlDtG,sDAFJ;AAAA;;AAAA;AAjlD0GA,QAAAA,yDAklDzF,uBADjB;AAjlD0GA,QAAAA,wDAqlDhD,GAJ1D;AAjlD0GA,QAAAA,yDAqlDhD,sBAJ1D;AAAA;AAAA;AAAA,iBAM0CisK,kDAN1C,EAM2HA,8DAN3H;AAAA;AAAA;SA3FM0K;;;AAkGN;AAAA;AAAA;AA4BA;AACA;AACA;;;IACMtoD;MAAAA;AACF,+BAAYxuH,MAAZ,EAAoB2iF,MAApB,EAA4B;AAAA;;AACxB,WAAK3iF,MAAL,GAAcA,MAAd;AACA,WAAK2iF,MAAL,GAAcA,MAAd;AACH;;;;aACD,iBAAQquF,EAAR,EAAY;AAAA;;AACR,YAAMz1J,GAAG,GAAGy1J,EAAE,CAACnzE,OAAf;;AACA,gBAAQtiF,GAAR;AACI,eAAKspG,IAAI,CAACk7B,EAAV;AACA,eAAKl7B,IAAI,CAAC8yD,IAAV;AACA,eAAK9yD,IAAI,CAACt7G,IAAV;AACA,eAAKs7G,IAAI,CAACl7D,KAAV;AAAiB;AACbqnH,cAAAA,EAAE,CAACh9J,cAAH;AACA,mBAAK2uE,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,uBAAI,CAACgiI,WAAL,CAAiBr8J,GAAjB,EAAsBy1J,EAAtB;AACH,eAFD;AAGA;AACH;;AACD,eAAKnsD,IAAI,CAAC8J,GAAV;AACI,iBAAKhsC,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,qBAAI,CAACiiI,YAAL;AACH,aAFD;AAGA;;AACJ;AACI;AAjBR;AAmBH;;;aACD,qBAAYt8J,GAAZ,EAAiBy1J,EAAjB,EAAqB;AACjB,YAAMliK,OAAO,GAAG,KAAK9O,MAAL,CAAY8O,OAA5B;;AACA,YAAIkiK,EAAE,CAAC5hD,MAAP,EAAe;AACX,eAAK0oD,iBAAL,CAAuBv8J,GAAvB,EAA4BzM,OAAO,CAAC5B,KAApC;AACA;AACH;;AACD,YAAI,CAAC8jK,EAAE,CAACt8B,OAAH,IAAcs8B,EAAE,CAACr8B,OAAlB,KAA8B7lI,OAAO,CAAC5B,KAAR,KAAkB,SAApD,EAA+D;AAC3D,eAAKyoK,YAAL,CAAkBp6J,GAAlB;AACH,SAFD,MAGK;AACD,eAAK85J,UAAL,CAAgB95J,GAAhB;AACH;AACJ;;;aACD,wBAAe;AACX,aAAKvb,MAAL,CAAY+3K,WAAZ;AACH;;;aACD,oBAAWx8J,GAAX,EAAgB;AACZ,YAAIzM,OAAO,GAAG,KAAK9O,MAAL,CAAY8O,OAA1B;;AACA,YAAI,CAACA,OAAO,CAAC0uH,SAAb,EAAwB;AACpB;AACH;;AACD,YAAM3zE,MAAM,GAAG,KAAK7pD,MAAL,CAAYw1K,wBAAZ,EAAf;AACA,YAAIR,cAAc,GAAG,KAAKh1K,MAAL,CAAYg1K,cAAjC;AACA,YAAIhE,EAAE,GAAG,EAAT;AACA,YAAIl3E,KAAK,GAAG,EAAZ;;AACA,YAAIv+E,GAAG,KAAKspG,IAAI,CAACt7G,IAAb,IAAqBgS,GAAG,KAAKspG,IAAI,CAACk7B,EAAtC,EAA0C;AACtCjmD,UAAAA,KAAK,IAAI,CAAC,CAAV;AACH;;AACD,gBAAQv+E,GAAR;AACI,eAAKspG,IAAI,CAACt7G,IAAV;AACA,eAAKs7G,IAAI,CAACl7D,KAAV;AAAiB;AACbqnH,cAAAA,EAAE,CAACznK,IAAH,GAAUsgD,MAAM,CAACpxC,CAAP,GAAWqhF,KAArB;AACAhrF,cAAAA,OAAO,CAACvF,IAAR,GAAeynK,EAAE,CAACznK,IAAlB;AACA;AACH;;AACD,eAAKs7G,IAAI,CAACk7B,EAAV;AACA,eAAKl7B,IAAI,CAAC8yD,IAAV;AAAgB;AACZ3G,cAAAA,EAAE,CAAC1nK,GAAH,GAASugD,MAAM,CAACuN,CAAP,GAAW0iC,KAApB;AACAhrF,cAAAA,OAAO,CAACxF,GAAR,GAAc0nK,EAAE,CAAC1nK,GAAjB;AACA;AACH;;AACD;AACI;AAdR;;AAgBA,YAAIwF,OAAO,CAAC5B,KAAR,KAAkB,WAAlB,IAAiCi5G,SAAS,CAAC6uD,cAAD,CAA9C,EAAgE;AAC5DA,UAAAA,cAAc,CAACzrK,IAAf,GAAsBuF,OAAO,CAACvF,IAA9B;AACAyrK,UAAAA,cAAc,CAAC1rK,GAAf,GAAqBwF,OAAO,CAACxF,GAA7B;AACH;;AACD,aAAKtJ,MAAL,CAAYugB,MAAZ,CAAmB5G,IAAnB,CAAwBq3J,EAAxB;AACH;;;aACD,sBAAaz1J,GAAb,EAAkB;AAAA;;AACd,YAAMzM,OAAO,GAAG,KAAK9O,MAAL,CAAY8O,OAA5B;;AACA,YAAI,CAACA,OAAO,CAAColK,SAAb,EAAwB;AACpB;AACH;;AACD,YAAMrqH,MAAM,GAAG,KAAK7pD,MAAL,CAAYw1K,wBAAZ,EAAf;AACA,YAAIK,QAAJ;AACA,YAAIC,SAAJ;AACA,YAAI9E,EAAE,GAAG,EAAT;AACA,YAAIl3E,KAAK,GAAG,EAAZ;;AACA,YAAIv+E,GAAG,KAAKspG,IAAI,CAACt7G,IAAb,IAAqBgS,GAAG,KAAKspG,IAAI,CAACk7B,EAAtC,EAA0C;AACtCjmD,UAAAA,KAAK,IAAI,CAAC,CAAV;AACH;;AACD,gBAAQv+E,GAAR;AACI,eAAKspG,IAAI,CAACt7G,IAAV;AACA,eAAKs7G,IAAI,CAACl7D,KAAV;AAAiB;AACbksH,cAAAA,QAAQ,GAAGhsH,MAAM,CAACh5C,KAAP,GAAeipF,KAA1B;;AACA,kBAAI+7E,QAAQ,KAAK/mK,OAAO,CAAC+B,KAArB,IAA8BglK,QAAQ,IAAI/mK,OAAO,CAAC+qF,QAAtD,EAAgE;AAC5Dm3E,gBAAAA,EAAE,CAACngK,KAAH,GAAWglK,QAAX;AACH;;AACD;AACH;;AACD,eAAKhxD,IAAI,CAACk7B,EAAV;AACA,eAAKl7B,IAAI,CAAC8yD,IAAV;AAAgB;AACZ7B,cAAAA,SAAS,GAAGjsH,MAAM,CAACz8C,MAAP,GAAgB0sF,KAA5B;;AACA,kBAAIg8E,SAAS,KAAKhnK,OAAO,CAAC1B,MAAtB,IAAgC0oK,SAAS,IAAIhnK,OAAO,CAACmjK,SAAzD,EAAoE;AAChEjB,gBAAAA,EAAE,CAAC5jK,MAAH,GAAY0oK,SAAZ;AACH;;AACD;AACH;;AACD;AACI;AAlBR;;AAoBA,YAAI3vD,SAAS,CAAC6qD,EAAE,CAACngK,KAAJ,CAAT,IAAuBs1G,SAAS,CAAC6qD,EAAE,CAAC5jK,MAAJ,CAApC,EAAiD;AAC7CqgK,UAAAA,aAAa,CAACtnK,OAAd,CAAsB,UAAC6G,KAAD,EAAW;AAC7B,gBAAIm5G,SAAS,CAAC6qD,EAAE,CAAChkK,KAAD,CAAH,CAAb,EAA0B;AACtB,qBAAI,CAAChN,MAAL,CAAY8O,OAAZ,CAAoB9B,KAApB,IAA6BgkK,EAAE,CAAChkK,KAAD,CAA/B;AACH;AACJ,WAJD;AAKA,eAAKhN,MAAL,CAAYugB,MAAZ,CAAmB5G,IAAnB,CAAwBq3J,EAAxB;AACH;AACJ;;;aACD,2BAAkBz1J,GAAlB,EAAuBrO,KAAvB,EAA8B;AAC1B,YAAKA,KAAK,KAAK,WAAV,IAAyBqO,GAAG,KAAKspG,IAAI,CAACk7B,EAAvC,IACC7yI,KAAK,KAAK,WAAV,IAAyBqO,GAAG,KAAKspG,IAAI,CAAC8yD,IAD3C,EACkD;AAC9C,eAAK33K,MAAL,CAAY03K,aAAZ;AACA;AACH;;AACD,YAAIxqK,KAAK,KAAK,SAAd,EAAyB;AACrB,cAAIqO,GAAG,KAAKspG,IAAI,CAACk7B,EAAjB,EAAqB;AACjB,iBAAK//I,MAAL,CAAYy3K,cAAZ;AACH,WAFD,MAGK,IAAIl8J,GAAG,KAAKspG,IAAI,CAAC8yD,IAAjB,EAAuB;AACxB,iBAAK33K,MAAL,CAAYg4K,cAAZ;AACH;AACJ;AACJ;;;;;;AAELxpD,EAAAA,iBAAiB,CAACjkF,IAAlB;AAAA,qBAA+GikF,iBAA/G,EA9vD0GruH,uDA8vD1G,CAAkJq0K,iBAAlJ,GA9vD0Gr0K,uDA8vD1G,CAAgLA,kDAAhL;AAAA;;AACAquH,EAAAA,iBAAiB,CAAC9jF,KAAlB,kBA/vD0GvqC,iEA+vD1G;AAAA,WAAmHquH,iBAAnH;AAAA,aAAmHA,iBAAnH;AAAA;SAxIMA;;;AAyIN;AAAA;AAAA;;IAIMypD;MAAAA;;;;;AACF,2CAAYluJ,EAAZ,EAAgB9kB,QAAhB,EAA0Bm8C,QAA1B,EAAoCknE,YAApC,EAAkD3lC,MAAlD,EAA0D;AAAA;;AAAA;;AACtD,mCAAM54D,EAAN,EAAU9kB,QAAV,EAAoB,IAApB,EAA0BqjH,YAA1B,EAAwC3lC,MAAxC;AACA,cAAK2iF,UAAL,GAAkB,QAAlB;AACA,cAAKtlK,MAAL,GAAcohD,QAAd;AACA,cAAKmmE,QAAL,GAAgB,MAAhB;AACA,cAAKnwG,IAAL,GAAY,iBAAZ;AALsD;AAMzD;AACD;AACJ;AACA;;;;;aACI,mBAAU;AACN,YAAI,CAAC,KAAK+5B,UAAV,EAAsB;AAClB,eAAKnxC,MAAL,CAAYg4K,cAAZ;AACH;AACJ;;;WACD,eAAc;AACV,eAAO,KAAKh4K,MAAL,CAAY8O,OAAZ,CAAoB5B,KAApB,KAA8B,SAA9B,GAA0C,aAA1C,GAA0D,MAAjE;AACH;;;;IAlBuCqvH;;AAoB5C07C,EAAAA,6BAA6B,CAAC1tI,IAA9B;AAAA,qBAA2H0tI,6BAA3H,EAxxD0G93K,gEAwxD1G,CAA0KA,sDAA1K,GAxxD0GA,gEAwxD1G,CAAoMA,qDAApM,GAxxD0GA,gEAwxD1G,CAA6Nq0K,iBAA7N,MAxxD0Gr0K,gEAwxD1G,CAA2QkE,8EAA3Q,GAxxD0GlE,gEAwxD1G,CAA8SA,kDAA9S;AAAA;;AACA83K,EAAAA,6BAA6B,CAACltI,IAA9B,kBAzxD0G5qC,gEAyxD1G;AAAA,UAA+G83K,6BAA/G;AAAA;AAAA;AAAA;AAAA;AAzxD0G93K,QAAAA,yDAyxD1G;AAAA,iBAA+G,aAA/G;AAAA;AAAA;;AAAA;AAzxD0GA,QAAAA,0DAyxD1G;AAzxD0GA,QAAAA,0DAyxD1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAzxD0GA,iEAyxD1G,CAAsW,CAC9V+kH,8EAD8V,EAE9V;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAF8V,CAAtW,GAzxD0GvD,yEAyxD1G;AAAA;SArBM83K;;;AA4BN;AAAA;AAAA;;IA4BMC;MAAAA;;;;;AACF,2CAAYnuJ,EAAZ,EAAgB9kB,QAAhB,EAA0Bm8C,QAA1B,EAAoCknE,YAApC,EAAkD3lC,MAAlD,EAA0D;AAAA;;AAAA;;AACtD,mCAAM54D,EAAN,EAAU9kB,QAAV,EAAoB,IAApB,EAA0BqjH,YAA1B,EAAwC3lC,MAAxC;AACA,cAAK2iF,UAAL,GAAkB,QAAlB;AACA,cAAKtlK,MAAL,GAAcohD,QAAd;AACA,cAAKmmE,QAAL,GAAgB,MAAhB;AACA,cAAKnwG,IAAL,GAAY,iBAAZ;AALsD;AAMzD;AACD;AACJ;AACA;;;;;aACI,mBAAU;AACN,YAAI,CAAC,KAAK+5B,UAAV,EAAsB;AAClB,eAAKnxC,MAAL,CAAYy3K,cAAZ;AACH;AACJ;;;WACD,eAAc;AACV,eAAO,KAAKz3K,MAAL,CAAY8O,OAAZ,CAAoB5B,KAApB,KAA8B,SAA9B,GAA0C,aAA1C,GAA0D,MAAjE;AACH;;;;IAlBuCqvH;;AAoB5C27C,EAAAA,6BAA6B,CAAC3tI,IAA9B;AAAA,qBAA2H2tI,6BAA3H,EAh1D0G/3K,gEAg1D1G,CAA0KA,sDAA1K,GAh1D0GA,gEAg1D1G,CAAoMA,qDAApM,GAh1D0GA,gEAg1D1G,CAA6Nq0K,iBAA7N,MAh1D0Gr0K,gEAg1D1G,CAA2QkE,8EAA3Q,GAh1D0GlE,gEAg1D1G,CAA8SA,kDAA9S;AAAA;;AACA+3K,EAAAA,6BAA6B,CAACntI,IAA9B,kBAj1D0G5qC,gEAi1D1G;AAAA,UAA+G+3K,6BAA/G;AAAA;AAAA;AAAA;AAAA;AAj1D0G/3K,QAAAA,yDAi1D1G;AAAA,iBAA+G,aAA/G;AAAA;AAAA;;AAAA;AAj1D0GA,QAAAA,0DAi1D1G;AAj1D0GA,QAAAA,0DAi1D1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAj1D0GA,iEAi1D1G,CAAsW,CAC9V+kH,8EAD8V,EAE9V;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAF8V,CAAtW,GAj1D0GvD,yEAi1D1G;AAAA;SArBM+3K;;;AA4BN;AAAA;AAAA;;IA4BMC;MAAAA;;;;;AACF,0CAAYpuJ,EAAZ,EAAgB9kB,QAAhB,EAA0Bm8C,QAA1B,EAAoCknE,YAApC,EAAkD3lC,MAAlD,EAA0D;AAAA;;AAAA;;AACtD,mCAAM54D,EAAN,EAAU9kB,QAAV,EAAoB,IAApB,EAA0BqjH,YAA1B,EAAwC3lC,MAAxC;AACA,cAAK2iF,UAAL,GAAkB,QAAlB;AACA,cAAKtlK,MAAL,GAAcohD,QAAd;AACA,cAAKmmE,QAAL,GAAgB,MAAhB;AACA,cAAKnwG,IAAL,GAAY,gBAAZ;AALsD;AAMzD;AACD;AACJ;AACA;;;;;aACI,mBAAU;AACN,YAAI,CAAC,KAAK+5B,UAAV,EAAsB;AAClB,eAAKnxC,MAAL,CAAY03K,aAAZ;AACH;AACJ;;;WACD,eAAc;AACV,eAAO,KAAK13K,MAAL,CAAY8O,OAAZ,CAAoB5B,KAApB,KAA8B,SAA9B,GAA0C,MAA1C,GAAmD,aAA1D;AACH;;;;IAlBsCqvH;;AAoB3C47C,EAAAA,4BAA4B,CAAC5tI,IAA7B;AAAA,qBAA0H4tI,4BAA1H,EAx4D0Gh4K,gEAw4D1G,CAAwKA,sDAAxK,GAx4D0GA,gEAw4D1G,CAAkMA,qDAAlM,GAx4D0GA,gEAw4D1G,CAA2Nq0K,iBAA3N,MAx4D0Gr0K,gEAw4D1G,CAAyQkE,8EAAzQ,GAx4D0GlE,gEAw4D1G,CAA4SA,kDAA5S;AAAA;;AACAg4K,EAAAA,4BAA4B,CAACptI,IAA7B,kBAz4D0G5qC,gEAy4D1G;AAAA,UAA8Gg4K,4BAA9G;AAAA;AAAA;AAAA;AAAA;AAz4D0Gh4K,QAAAA,yDAy4D1G;AAAA,iBAA8G,aAA9G;AAAA;AAAA;;AAAA;AAz4D0GA,QAAAA,0DAy4D1G;AAz4D0GA,QAAAA,0DAy4D1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAz4D0GA,iEAy4D1G,CAAmW,CAC3V+kH,8EAD2V,EAE3V;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAF2V,CAAnW,GAz4D0GvD,yEAy4D1G;AAAA;SArBMg4K;;;AA4BN;AAAA;AAAA;;IA4BMC;MAAAA;;;;;AACF,wCAAYruJ,EAAZ,EAAgB9kB,QAAhB,EAA0Bm8C,QAA1B,EAAoCknE,YAApC,EAAkD3lC,MAAlD,EAA0D;AAAA;;AAAA;;AACtD,mCAAM54D,EAAN,EAAU9kB,QAAV,EAAoB,IAApB,EAA0BqjH,YAA1B,EAAwC3lC,MAAxC;AACA,cAAK2iF,UAAL,GAAkB,QAAlB;AACA,cAAKtlK,MAAL,GAAcohD,QAAd;AACA,cAAKmmE,QAAL,GAAgB,MAAhB;AACA,cAAKnwG,IAAL,GAAY,OAAZ;AALsD;AAMzD;AACD;AACJ;AACA;;;;;aACI,mBAAU;AACN,YAAI,CAAC,KAAK+5B,UAAV,EAAsB;AAClB,eAAKnxC,MAAL,CAAY+3K,WAAZ;AACH;AACJ;;;;IAfoCx7C;;AAiBzC67C,EAAAA,0BAA0B,CAAC7tI,IAA3B;AAAA,qBAAwH6tI,0BAAxH,EA77D0Gj4K,gEA67D1G,CAAoKA,sDAApK,GA77D0GA,gEA67D1G,CAA8LA,qDAA9L,GA77D0GA,gEA67D1G,CAAuNq0K,iBAAvN,MA77D0Gr0K,gEA67D1G,CAAqQkE,8EAArQ,GA77D0GlE,gEA67D1G,CAAwSA,kDAAxS;AAAA;;AACAi4K,EAAAA,0BAA0B,CAACrtI,IAA3B,kBA97D0G5qC,gEA87D1G;AAAA,UAA4Gi4K,0BAA5G;AAAA;AAAA;AAAA;AAAA;AA97D0Gj4K,QAAAA,yDA87D1G;AAAA,iBAA4G,aAA5G;AAAA;AAAA;;AAAA;AA97D0GA,QAAAA,0DA87D1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA97D0GA,iEA87D1G,CAA4T,CACpT+kH,8EADoT,EAEpT;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAFoT,CAA5T,GA97D0GvD,yEA87D1G;AAAA;SAlBMi4K;;;AAyBN;AAAA;AAAA;AAyBA;AACA;AACA;;;IACMC;MAAAA;AACF,6BAAYtuJ,EAAZ,EAAgB9kB,QAAhB,EAA0BglB,OAA1B,EAAmCwO,UAAnC,EAA+CkqD,MAA/C,EAAuD2lC,YAAvD,EAAqE;AAAA;;AAAA;;AACjE,WAAKv+F,EAAL,GAAUA,EAAV;AACA,WAAK9kB,QAAL,GAAgBA,QAAhB;AACA,WAAKglB,OAAL,GAAeA,OAAf;AACA,WAAKwO,UAAL,GAAkBA,UAAlB;AACA,WAAKkqD,MAAL,GAAcA,MAAd;AACA,WAAK2lC,YAAL,GAAoBA,YAApB;AACA;AACR;AACA;AACA;;AACQ,WAAKgwD,WAAL,GAAmB,KAAnB;AACA;AACR;AACA;;AACQ,WAAK5D,SAAL,GAAiB,IAAI3hK,wDAAJ,EAAjB;AACA;AACR;AACA;;AACQ,WAAK4hK,OAAL,GAAe,IAAI5hK,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAK6hK,WAAL,GAAmB,IAAI7hK,wDAAJ,EAAnB;AACA;AACR;AACA;;AACQ,WAAK8hK,SAAL,GAAiB,IAAI9hK,wDAAJ,EAAjB;AACA;AACR;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;AACA;;AACQ,WAAKwlK,WAAL,GAAmB,IAAIxlK,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;;AACQ,WAAKylK,YAAL,GAAoB,IAAIzlK,wDAAJ,EAApB;AACA;AACR;AACA;AACA;;AACQ,WAAK0lK,SAAL,GAAiB,IAAI1lK,wDAAJ,EAAjB;AACA;AACR;AACA;AACA;;AACQ,WAAK2lK,UAAL,GAAkB,IAAI3lK,wDAAJ,EAAlB;AACA;AACR;AACA;AACA;;AACQ,WAAK0hK,WAAL,GAAmB,IAAI1hK,wDAAJ,EAAnB;AACA;AACR;AACA;;AACQ,WAAK4lK,QAAL,GAAgB,EAAhB;AACA,WAAKtwH,QAAL,GAAgB,CAAhB;AACA,WAAKuwH,MAAL,GAAc,KAAd;AACA,WAAKC,OAAL,GAAe,KAAf;AACA,WAAKC,kBAAL,GAA0B,IAAIzzD,+CAAJ,EAA1B;AACA,WAAK6qD,OAAL,GAAe,IAAI7qD,+CAAJ,EAAf;AACAC,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAKlvE,SAAL,GAAiB,KAAK4xE,YAAL,CAAkBW,GAAlB,GAAwB,KAAxB,GAAgC,KAAjD;AACA,WAAKgiC,8BAAL,GAAsC,KAAK3iC,YAAL,CAAkBv5G,OAAlB,CACjChP,SADiC,CACvB;AAAA,YAAGkpH,GAAH,SAAGA,GAAH;AAAA,eAAa,OAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA5C;AAAA,OADuB,CAAtC;AAEA,WAAK8vD,gBAAL,GAAwBvL,iBAAxB;AACA,WAAKhgD,eAAL;AACH;AACD;AACJ;AACA;AACA;;;;;WAII,eAAgB;AACZ,eAAO,KAAK1+G,OAAL,CAAa0uH,SAApB;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAc/sH,KAAd,EAAqB;AACjB,aAAK3B,OAAL,CAAa0uH,SAAb,GAAyB/sH,KAAzB;AACH;;;WAWD,eAAgB;AACZ,eAAO,KAAK3B,OAAL,CAAaolK,SAApB;AACH;AACD;AACJ;AACA;;WARI,aAAczjK,KAAd,EAAqB;AACjB,aAAK3B,OAAL,CAAaolK,SAAb,GAAyBzjK,KAAzB;AACH;;;WAWD,eAAe;AACX,eAAO,KAAK8/J,SAAZ;AACH;AACD;AACJ;AACA;;WATI,aAAajkH,OAAb,EAAsB;AAClB,aAAKkkH,iBAAL,CAAuB,KAAKD,SAA5B,EAAuCjkH,OAAvC;AACA,aAAKikH,SAAL,GAAiBjkH,OAAjB;AACH;;;WAoBD,eAAqB;AACjB,eAAO,KAAK+jH,eAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAxBI,aAAmB1vE,UAAnB,EAA+B;AAC3BksE,QAAAA,iBAAiB,CAAClsE,UAAD,EAAa,KAAK17F,QAAlB,EAA4B,KAAK8kB,EAAL,CAAQ3X,aAApC,CAAjB;AACA,YAAM2X,EAAE,GAAG,KAAKA,EAAL,CAAQ3X,aAAnB;AACA,YAAM+G,GAAG,GAAG4Q,EAAE,CAAC4gD,YAAH,CAAgB,KAAhB,CAAZ;AACA,YAAM2lG,MAAM,GAAGvmJ,EAAE,CAAC4gD,YAAH,CAAgB,UAAhB,CAAf;;AACA,YAAI,KAAKj0B,SAAL,KAAmBv9B,GAAvB,EAA4B;AACxB,eAAKu9B,SAAL,GAAiBv9B,GAAjB;AACH;;AACD,YAAI,KAAKkvC,QAAL,KAAkBioH,MAAtB,EAA8B;AAC1B,eAAKjoH,QAAL,GAAgBioH,MAAhB;AACH;;AACD,aAAKD,eAAL,GAAuB1vE,UAAvB;AACH;;;WAgBD,eAAY;AACR,eAAO,KAAK7xF,OAAL,CAAa5B,KAApB;AACH;AACD;AACJ;AACA;AACA;AACA;;WAVI,aAAUuD,KAAV,EAAiB;AACb,aAAK3B,OAAL,CAAa5B,KAAb,GAAqBuD,KAArB;AACH;;;WAYD,eAAe;AACX,eAAO,KAAK3B,OAAL,CAAa+qF,QAApB;AACH;AACD;AACJ;AACA;AACA;AACA;;WAVI,aAAappF,KAAb,EAAoB;AAChB,aAAKuoK,SAAL,CAAe,UAAf,EAA2BvoK,KAA3B;AACH;;;WAYD,eAAgB;AACZ,eAAO,KAAK3B,OAAL,CAAamjK,SAApB;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAcxhK,KAAd,EAAqB;AACjB,aAAKuoK,SAAL,CAAe,WAAf,EAA4BvoK,KAA5B;AACH;;;WAWD,eAAY;AACR,eAAO,KAAK3B,OAAL,CAAa+B,KAApB;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAUJ,KAAV,EAAiB;AACb,aAAKuoK,SAAL,CAAe,OAAf,EAAwBvoK,KAAxB;AACH;;;WAWD,eAAa;AACT,eAAO,KAAK3B,OAAL,CAAa1B,MAApB;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAWqD,KAAX,EAAkB;AACd,aAAKuoK,SAAL,CAAe,QAAf,EAAyBvoK,KAAzB;AACH;;;WAWD,eAAU;AACN,eAAO,KAAK3B,OAAL,CAAaxF,GAApB;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAQmH,KAAR,EAAe;AACX,aAAKuoK,SAAL,CAAe,KAAf,EAAsBvoK,KAAtB;AACH;;;WAWD,eAAW;AACP,eAAO,KAAK3B,OAAL,CAAavF,IAApB;AACH;WALD,aAASkH,KAAT,EAAgB;AACZ,aAAKuoK,SAAL,CAAe,MAAf,EAAuBvoK,KAAvB;AACH;;;WAID,eAAuB;AACnB,YAAI,KAAKkoK,QAAL,IAAiB,KAAKA,QAAL,CAAchK,UAAnC,EAA+C;AAC3C,iBAAO,KAAKgK,QAAL,CAAchK,UAArB;AACH;;AACD,eAAO,KAAKrmD,YAAL,CAAkBnsG,GAAlB,CAAsB,YAAtB,CAAP;AACH;;;WACD,eAAyB;AACrB,YAAI,KAAKw8J,QAAL,IAAiB,KAAKA,QAAL,CAAcM,YAAnC,EAAiD;AAC7C,iBAAO,KAAKN,QAAL,CAAcM,YAArB;AACH;;AACD,eAAO,KAAK3wD,YAAL,CAAkBnsG,GAAlB,CAAsB,cAAtB,CAAP;AACH;;;WACD,eAA0B;AACtB,YAAI,KAAKw8J,QAAL,IAAiB,KAAKA,QAAL,CAAcO,aAAnC,EAAkD;AAC9C,iBAAO,KAAKP,QAAL,CAAcO,aAArB;AACH;;AACD,eAAO,KAAK5wD,YAAL,CAAkBnsG,GAAlB,CAAsB,eAAtB,CAAP;AACH;;;WACD,eAA0B;AACtB,YAAI,KAAKw8J,QAAL,IAAiB,KAAKA,QAAL,CAAcQ,aAAnC,EAAkD;AAC9C,iBAAO,KAAKR,QAAL,CAAcQ,aAArB;AACH;;AACD,eAAO,KAAK7wD,YAAL,CAAkBnsG,GAAlB,CAAsB,eAAtB,CAAP;AACH;;;WACD,eAAkB;AACd,eAAO,IAAP;AACH;;;WACD,eAAU;AACN,eAAO,KAAKu6B,SAAZ;AACH;;;aACD,2BAAkB;AAAA;;AACd,aAAK0iI,aAAL;AACA,aAAKzI,kBAAL;AACA,aAAKhuF,MAAL,CAAY3tC,iBAAZ,CAA8B;AAAA,iBAAM9mC,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B;AAAA,mBAAM,OAAI,CAACu7K,gBAAL,EAAN;AAAA,WAA3B,CAAN;AAAA,SAA9B;AACA,aAAKvI,aAAL;AACH;;;aACD,oBAAW;AACP,aAAK7rK,QAAL,CAAc2lE,eAAd,CAA8B,KAAK7gD,EAAL,CAAQ3X,aAAtC,EAAqD,OAArD;AACA,aAAK6X,OAAL,CAAam2G,IAAb,CAAkB,KAAKr2G,EAAvB;AACH;;;aACD,qBAAYhb,OAAZ,EAAqB;AAAA;;AACjB0+J,QAAAA,aAAa,CAACtnK,OAAd,CAAsB,UAAC6G,KAAD,EAAW;AAC7B,cAAI83G,0EAAS,CAAC93G,KAAD,EAAQ+B,OAAR,CAAb,EAA+B;AAC3B,mBAAI,CAAC6zD,QAAL,CAAc51D,KAAd,EAAqB,OAAI,CAAC8B,OAAL,CAAa9B,KAAb,CAArB;AACH;AACJ,SAJD;;AAKA,YAAI83G,0EAAS,CAAC,WAAD,EAAc/1G,OAAd,CAAb,EAAqC;AACjC,cAAMuoK,QAAQ,GAAGnxD,SAAS,CAAC,KAAKmzD,eAAN,CAAT,GAAkC,KAAKA,eAAvC,GAAyD,KAAKC,YAA/E;;AACA,cAAI/M,QAAQ,CAACz9J,OAAO,CAACyuH,SAAR,CAAkBruF,YAAnB,CAAZ,EAA8C;AAC1CmoI,YAAAA,QAAQ,CAACL,aAAT;AACH,WAFD,MAGK;AACDK,YAAAA,QAAQ,CAACF,eAAT;AACH;AACJ;;AACD,YAAItyD,0EAAS,CAAC,OAAD,EAAU/1G,OAAV,CAAb,EAAiC;AAC7B,cAAIo3G,SAAS,CAAC,KAAKl8F,OAAL,CAAa6qJ,UAAd,CAAb,EAAwC;AACpC,iBAAK7qJ,OAAL,CAAa6qJ,UAAb,GAA0B,IAA1B;AACH,WAFD,MAGK;AACD,iBAAK7qJ,OAAL,CAAauvJ,gBAAb;AACA,iBAAKC,eAAL;AACH;AACJ;AACJ;;;aACD,uBAAc;AACV,YAAI,KAAKX,kBAAT,EAA6B;AACzB,eAAKA,kBAAL,CAAwB54K,WAAxB;AACH;;AACD,YAAI,KAAKgwK,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahwK,WAAb;AACH;;AACD,aAAK+qJ,8BAAL,CAAoC/qJ,WAApC;AACH;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAM+vH,OAAO,GAAG,KAAKlmG,EAAL,CAAQ3X,aAAxB;;AACA,YAAI+zG,SAAS,CAAC8J,OAAD,CAAb,EAAwB;AACpBA,UAAAA,OAAO,CAAC5tE,KAAR;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,wBAAe;AACX,aAAK+2H,aAAL;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,sBAAa91B,SAAb,EAAwB7yI,KAAxB,EAA+B;AAC3B,aAAKuoK,SAAL,CAAe11B,SAAf,EAA0B7yI,KAA1B;AACA,aAAKmyD,QAAL,CAAc0gF,SAAd,EAAyB7yI,KAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,mBAAUo5C,MAAV,EAAkBp5C,KAAlB,EAAyB;AACrB,aAAKuoK,SAAL,CAAenvH,MAAf,EAAuBp5C,KAAvB;AACA,aAAKmyD,QAAL,CAAc/Y,MAAd,EAAsBp5C,KAAtB;AACH;;;WACD,eAA0B;AACtB,eAAO,CAAC01G,SAAS,CAAC,KAAKmzD,eAAN,CAAjB;AACH;;;WACD,eAAoB;AAChB,eAAO,KAAKz/E,QAAL,GAAgB,IAAvB;AACH;;;WACD,eAAqB;AACjB,eAAO,KAAKo4E,SAAL,GAAiB,IAAxB;AACH;;;WACD,eAAoB;AAChB,eAAO,KAAKnjK,OAAL,CAAaiD,QAApB;AACH;;;WACD,eAA4B;AACxB,eAAO,KAAK7E,KAAL,KAAe,WAAtB;AACH;;;WACD,eAA4B;AACxB,eAAO,KAAKA,KAAL,KAAe,WAAtB;AACH;AACD;AACJ;AACA;;;;aACI,4BAAmB;AACf,aAAKjI,QAAL,CAAcK,QAAd,CAAuB,KAAKykB,EAAL,CAAQ3X,aAA/B,EAA8C,SAA9C;AACA,aAAKgnK,aAAL;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkB;AACd,aAAKn0K,QAAL,CAAcc,WAAd,CAA0B,KAAKgkB,EAAL,CAAQ3X,aAAlC,EAAiD,SAAjD;AACH;;;aACD,2BAAkB;AAAA;;AACd,YAAI,CAACwyG,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,aAAKk0D,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAao4B,KAAb,CAAmBtiD,SAAnB,CAA6B,YAAM;AAC3D,iBAAI,CAACgqB,EAAL,CAAQ3X,aAAR,CAAsBiwC,KAAtB;AACH,SAF2B,CAA5B;AAGA,aAAKy2H,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAayqJ,SAAb,CAAuB30K,SAAvB,CAAiC,YAAM;AAC/D,iBAAI,CAAC64K,MAAL,GAAc,IAAd;;AACA,iBAAI,CAACj2F,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,mBAAI,CAAC8+H,SAAL,CAAe/6J,IAAf;AACH,WAFD;AAGH,SAL2B,CAA5B;AAMA,aAAKm/J,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAa0qJ,OAAb,CAAqB50K,SAArB,CAA+B,YAAM;AAC7D,cAAI,OAAI,CAAC64K,MAAT,EAAiB;AACb,mBAAI,CAACA,MAAL,GAAc,KAAd;;AACA,mBAAI,CAACj2F,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,qBAAI,CAAC++H,OAAL,CAAah7J,IAAb;AACH,aAFD;AAGH;AACJ,SAP2B,CAA5B;AAQA,aAAKm/J,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAatZ,KAAb,CAAmB5Q,SAAnB,CAA6B,YAAM;AAC3D,iBAAI,CAAC4Q,KAAL,CAAWgJ,IAAX;AACH,SAF2B,CAA5B;AAGA,aAAKm/J,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAa2qJ,WAAb,CAAyB70K,SAAzB,CAAmC,YAAM;AACjE,iBAAI,CAAC84K,OAAL,GAAe,IAAf;;AACA,iBAAI,CAACl2F,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,mBAAI,CAACg/H,WAAL,CAAiBj7J,IAAjB;AACH,WAFD;AAGH,SAL2B,CAA5B;AAMA,aAAKm/J,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAa4qJ,SAAb,CAAuB90K,SAAvB,CAAiC,YAAM;AAC/D,cAAI,OAAI,CAAC84K,OAAT,EAAkB;AACd,mBAAI,CAACA,OAAL,GAAe,KAAf;;AACA,mBAAI,CAACl2F,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClB,qBAAI,CAACi/H,SAAL,CAAel7J,IAAf;AACH,aAFD;AAGH;AACJ,SAP2B,CAA5B;AAQA,aAAKm/J,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAa1J,MAAb,CAAoBxgB,SAApB,CAA8B,UAACixK,EAAD,EAAQ;AAC9DvD,UAAAA,aAAa,CAACtnK,OAAd,CAAsB,UAAC6G,KAAD,EAAW;AAC7B,gBAAIm5G,SAAS,CAAC6qD,EAAE,CAAChkK,KAAD,CAAH,CAAb,EAA0B;AACtB,qBAAI,CAAC41D,QAAL,CAAc51D,KAAd,EAAqBgkK,EAAE,CAAChkK,KAAD,CAAvB;;AACA,kBAAI,OAAI,CAACE,KAAL,KAAe,WAAnB,EAAgC;AAC5B,oBAAM8vH,OAAO,GAAG,OAAI,CAAChwH,KAAK,GAAG,QAAT,CAApB;;AACA,oBAAIgwH,OAAO,CAACv7B,SAAR,CAAkB7rF,MAAtB,EAA8B;AAC1B,yBAAI,CAAC+sE,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AAClBonF,oBAAAA,OAAO,CAACrjH,IAAR,CAAaq3J,EAAE,CAAChkK,KAAD,CAAf;AACH,mBAFD;AAGH;AACJ;AACJ;AACJ,WAZD;AAaH,SAd2B,CAA5B;AAeA,aAAK8rK,kBAAL,CAAwBzmI,GAAxB,CAA4B,KAAKpoB,OAAL,CAAawqJ,WAAb,CAAyB10K,SAAzB,CAAmC,UAACmN,KAAD,EAAW;AACtE,cAAIi5G,SAAS,CAAC,OAAI,CAACl8F,OAAL,CAAa6qJ,UAAd,CAAb,EAAwC;AACpC,mBAAI,CAAC2E,eAAL;;AACA,mBAAI,CAAChF,WAAL,CAAiB96J,IAAjB,CAAsBzM,KAAtB;AACH;AACJ,SAL2B,CAA5B;AAMH;;;aACD,yBAAgB;AAAA;;AACZ,YAAI,CAAC,KAAK6c,EAAV,EAAc;AACV;AACH;;AACD,aAAK44D,MAAL,CAAY3tC,iBAAZ,CAA8B,YAAM;AAChC,iBAAI,CAACk7H,OAAL,CAAa79H,GAAb,CAAiB,OAAI,CAACptC,QAAL,CAAc0tE,MAAd,CAAqB,OAAI,CAAC5oD,EAAL,CAAQ3X,aAA7B,EAA4C,SAA5C,EAAuD,UAAC4+J,EAAD,EAAQ;AAC5E,mBAAI,CAAC5rH,SAAL,CAAe4rH,EAAf;AACH,WAFgB,CAAjB;AAGH,SAJD;AAKH;;;aACD,mBAAUlxK,KAAV,EAAiB;AACb,YAAIs/H,UAAU,CAACt/H,KAAK,CAAC2J,MAAP,EAAekjK,cAAf,CAAd,EAA8C;AAC1C,eAAKl0I,UAAL,CAAgB04F,OAAhB,CAAwBrxH,KAAxB;AACH;AACJ;;;aACD,2BAAkBqxK,SAAlB,EAA6B1gK,KAA7B,EAAoC;AAAA;;AAChC,YAAMsZ,EAAE,GAAG,KAAKA,EAAL,CAAQ3X,aAAnB;;AACA,YAAI++J,SAAJ,EAAe;AACXrE,UAAAA,kBAAkB,CAACqE,SAAD,CAAlB,CAA8BhrK,OAA9B,CAAsC,UAAAsjC,SAAS,EAAI;AAC/C,mBAAI,CAACxkC,QAAL,CAAcc,WAAd,CAA0BgkB,EAA1B,EAA8B0f,SAA9B;AACH,WAFD;AAGH;;AACD,YAAIh5B,KAAJ,EAAW;AACPq8J,UAAAA,kBAAkB,CAACr8J,KAAD,CAAlB,CAA0BtK,OAA1B,CAAkC,UAAAsjC,SAAS,EAAI;AAC3C,mBAAI,CAACxkC,QAAL,CAAcK,QAAd,CAAuBykB,EAAvB,EAA2B0f,SAA3B;AACH,WAFD;AAGH;AACJ;;;aACD,yBAAgB;AACZ,YAAMiwI,aAAa,GAAG,KAAK3vJ,EAAL,CAAQ3X,aAAR,CAAsBpF,KAAtB,CAA4B,SAA5B,CAAtB;AACA,YAAM2sK,kBAAkB,GAAG,KAAK1vJ,OAAL,CAAa0vJ,kBAAxC;;AACA,YAAI,CAACD,aAAD,IAAmBC,kBAAkB,GAAGD,aAArB,GAAqC,CAA5D,EAAgE;AAC5D,eAAKz0K,QAAL,CAAc29D,QAAd,CAAuB,KAAK74C,EAAL,CAAQ3X,aAA/B,EAA8C,SAA9C,EAAyD,KAAK6X,OAAL,CAAa2vJ,UAAtE;AACH;AACJ;;;aACD,4BAAmB;AACf,YAAI,KAAK1sK,KAAL,KAAe,WAAnB,EAAgC;AAC5B,eAAKusK,eAAL;;AACA,cAAI,CAACtzD,SAAS,CAAC,KAAK58G,IAAN,CAAV,IAAyB,CAAC48G,SAAS,CAAC,KAAK78G,GAAN,CAAvC,EAAmD;AAC/C,iBAAK2gB,OAAL,CAAayxG,MAAb;AACH;AACJ,SALD,MAMK;AACD,cAAMm+C,QAAQ,GAAG,KAAK5vJ,OAAL,CAAaosJ,cAA9B;AACA,eAAKzzG,QAAL,CAAc,OAAd,EAAuBi3G,QAAQ,CAAChpK,KAAhC;AACA,eAAK+xD,QAAL,CAAc,QAAd,EAAwBi3G,QAAQ,CAACzsK,MAAjC;AACA,eAAKw1D,QAAL,CAAc,KAAd,EAAqB,CAArB;AACA,eAAKA,QAAL,CAAc,MAAd,EAAsB,CAAtB;AACH;AACJ;;;aACD,2BAAkB;AAAA;;AACd6qG,QAAAA,aAAa,CAACtnK,OAAd,CAAsB,UAAC6G,KAAD,EAAW;AAC7B,cAAIm5G,SAAS,CAAC,OAAI,CAACn5G,KAAD,CAAL,CAAb,EAA4B;AACxB,mBAAI,CAAC41D,QAAL,CAAc51D,KAAd,EAAqB,OAAI,CAACA,KAAD,CAAzB;AACH,WAFD,MAGK;AACD,mBAAI,CAACy1D,WAAL,CAAiBz1D,KAAjB;AACH;AACJ,SAPD;AAQH;;;aACD,kBAASA,KAAT,EAAgByD,KAAhB,EAAuB;AACnB,aAAKxL,QAAL,CAAc29D,QAAd,CAAuB,KAAK74C,EAAL,CAAQ3X,aAA/B,EAA8CpF,KAA9C,EAAqDyD,KAAK,GAAG,IAA7D;AACH;;;aACD,qBAAYzD,KAAZ,EAAmB;AACf,aAAK/H,QAAL,CAAcw9D,WAAd,CAA0B,KAAK14C,EAAL,CAAQ3X,aAAlC,EAAiDpF,KAAjD;AACH;;;WACD,eAAc;AACV,eAAO,KAAKid,OAAL,CAAanb,OAApB;AACH;;;aACD,mBAAU9B,KAAV,EAAiByD,KAAjB,EAAwB;AACpB,YAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,QAAlD,EAA4D;AACxD;AACH;;AACD,YAAMqpK,WAAW,GAAI,OAAOrpK,KAAP,KAAiB,QAAlB,GAA8BA,KAA9B,GAAsCi4B,QAAQ,CAACj4B,KAAD,EAAQ,EAAR,CAAlE;AACA,aAAK3B,OAAL,CAAa9B,KAAb,IAAsB8sK,WAAtB;AACA,aAAK7vJ,OAAL,CAAa8vJ,gBAAb,CAA8B/sK,KAA9B,EAAqC8sK,WAArC;AACH;;;aACD,8BAAqB;AACjB,YAAM7pD,OAAO,GAAG,KAAKlmG,EAAL,CAAQ3X,aAAxB;;AACA,YAAI,KAAKk/J,kBAAT,EAA6B;AACzB,cAAMC,uBAAuB,GAAGthD,OAAO,CAACxtE,aAAR,CAAsB,KAAK6uH,kBAA3B,CAAhC;;AACA,cAAIC,uBAAJ,EAA6B;AACzBA,YAAAA,uBAAuB,CAAClvH,KAAxB;AACH;AACJ,SALD,MAMK;AACD,eAAKA,KAAL;AACH;AACJ;;;;;;AAELg2H,EAAAA,eAAe,CAAC9tI,IAAhB;AAAA,qBAA6G8tI,eAA7G,EAj9E0Gl4K,gEAi9E1G,CAA8IA,sDAA9I,GAj9E0GA,gEAi9E1G,CAAwKA,qDAAxK,GAj9E0GA,gEAi9E1G,CAAiMq0K,iBAAjM,GAj9E0Gr0K,gEAi9E1G,CAA+NquH,iBAA/N,GAj9E0GruH,gEAi9E1G,CAA6PA,kDAA7P,GAj9E0GA,gEAi9E1G,CAAmRkE,8EAAnR;AAAA;;AACAg0K,EAAAA,eAAe,CAACprI,IAAhB,kBAl9E0G9sC,gEAk9E1G;AAAA,UAAiGk4K,eAAjG;AAAA;AAAA;AAAA;AAl9E0Gl4K,QAAAA,6DAk9E1G,WAQ4E22K,uBAR5E;AAAA;;AAAA;AAAA;;AAl9E0G32K,QAAAA,6DAk9E1G,MAl9E0GA,0DAk9E1G;AAAA;AAAA;AAAA;AAAA;AAl9E0GA,QAAAA,0DAk9E1G,CAQiM22K,uBARjM;AAl9E0G32K,QAAAA,0DAk9E1G,CAQ2Rw2K,qBAR3R;AAAA;;AAAA;AAAA;;AAl9E0Gx2K,QAAAA,6DAk9E1G,MAl9E0GA,0DAk9E1G;AAl9E0GA,QAAAA,6DAk9E1G,MAl9E0GA,0DAk9E1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAl9E0GA,QAAAA,yDAk9E1G;AAAA,iBAAiG,sBAAjG;AAAA;AAAA,iBAAiG,qBAAjG;AAAA;AAAA;;AAAA;AAl9E0GA,QAAAA,0DAk9E1G;AAl9E0GA,QAAAA,0DAk9E1G;AAl9E0GA,QAAAA,0DAk9E1G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAl9E0GA,iEAk9E1G,CAA2lC,CACnlCq0K,iBADmlC,EAEnlChmD,iBAFmlC,EAGnlCtJ,8EAHmlC,EAInlC;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAJmlC,CAA3lC,GAl9E0GvD,mEAk9E1G;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAl9E0GA,QAAAA,8DAk9E1G;AAl9E0GA,QAAAA,sEA29ElG,SATR;AAl9E0GA,QAAAA,yDA0+ElG,wFAxBR;AAl9E0GA,QAAAA,yDAm/ElG,iEAjCR;AAl9E0GA,QAAAA,yDAq/ElG,mDAnCR;AAl9E0GA,QAAAA,yDA6/ElG,mEA3CR;AAl9E0GA,QAAAA,oEAw+ElG,IAtBR;AAAA;;AAAA;AAl9E0GA,QAAAA,wDA0+E1E,GAxBhC;AAl9E0GA,QAAAA,yDA0+E1E,iCAxBhC;AAl9E0GA,QAAAA,wDAm/EtD,GAjCpD;AAl9E0GA,QAAAA,yDAm/EtD,kCAjCpD;AAl9E0GA,QAAAA,wDAq/E5F,GAnCd;AAl9E0GA,QAAAA,yDAq/E5F,sDAnCd;AAl9E0GA,QAAAA,wDA6/ErF,GA3CrB;AAl9E0GA,QAAAA,yDA6/ErF,uBA3CrB;AAAA;AAAA;AAAA,iBAkD4C22K,uBAlD5C,EAkDsJhU,0BAlDtJ,EAkDoUsJ,kDAlDpU,EAkDqZ6L,6BAlDrZ,EAkD0iBC,6BAlD1iB,EAkD+rBC,4BAlD/rB,EAkDi1BC,0BAlDj1B,EAkD69BhM,8DAlD79B,EAkDqlCA,qDAlDrlC,EAkD+rCuK,qBAlD/rC,EAkD8xC9zC,+EAlD9xC;AAAA;AAAA;SAjfMw1C;;;AAoiBN;AAAA;AAAA;AA+IA;AACA;AACA;;;IACM2B;;;AAGN;AACA;AACA;AACA;AACA;;;IACM/0J;;;AAGN;AACA;AACA;AACA;;;IACMg1J;;;AAGN;AACA;AACA;;;IACMC;MAAAA;;;;;;;WAIF,eAAgB;AACZ,eAAOA,sBAAsB,CAAC/pH,SAA9B;AACH;WALD,aAAcA,SAAd,EAAyB;AACrB+pH,QAAAA,sBAAsB,CAAC/pH,SAAvB,GAAmCA,SAAnC;AACH;;;;;;AAKL+pH,EAAAA,sBAAsB,CAAC/pH,SAAvB,GAAmC,IAAnC;;AACA+pH,EAAAA,sBAAsB,CAAC3vI,IAAvB;AAAA,qBAAoH2vI,sBAApH;AAAA;;AACAA,EAAAA,sBAAsB,CAACxvI,KAAvB,kBAtrF0GvqC,iEAsrF1G;AAAA,WAAwH+5K,sBAAxH;AAAA,aAAwHA,sBAAxH;AAAA;SAVMA;;;AAWN;AAAA;AAAA;;AAIA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAC/7K,SAAD;AAAA,SAAe2qC,QAAQ,CAAC3qC,SAAD,CAAR,IAAuBA,SAAS,YAAYkQ,uDAA3D;AAAA,CAAvB;;IACM8rK;AACF,0BAAYC,YAAZ,EAA0BxH,cAA1B,EAA0C;AAAA;;AACtC,SAAKwH,YAAL,GAAoBA,YAApB;AACA,SAAKxH,cAAL,GAAsBA,cAAtB;AACH;;;;WACD,aAAIrlJ,KAAJ,EAAWslJ,aAAX,EAA0B;AACtB,UAAItlJ,KAAK,KAAKvI,SAAd,EAAyB;AACrB,eAAO,KAAKo1J,YAAL,EAAP;AACH;;AACD,aAAO,KAAKxH,cAAL,CAAoB12J,GAApB,CAAwBqR,KAAxB,EAA+BslJ,aAA/B,CAAP;AACH;;;;;AAEL;AACA;AACA;AACA;;;IACMwH;MAAAA;AACF;AACA;AACJ;AACA;AACItH,IAAAA,QAJA,EAIUC,gBAJV,EAI4B;AAAA;;AACxB,WAAKD,QAAL,GAAgBA,QAAhB;AACA,WAAKC,gBAAL,GAAwBA,gBAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;aACI,cAAK1gD,QAAL,EAAe;AACX,YAAMxkH,OAAO,GAAG,KAAKilK,QAAL,CAActjH,uBAAd,CAAsC2oH,eAAtC,CAAhB;AACA,YAAMloH,SAAS,GAAGoiE,QAAQ,CAACzkC,QAAT,IAAqB,KAAKmlF,gBAAL,CAAsB9iH,SAA7D;;AACA,YAAI,CAACA,SAAL,EAAgB;AACZ,gBAAM,IAAIjrC,KAAJ,kQAAN;AAIH;;AACD,YAAMq1J,SAAS,GAAG;AACd5pK,UAAAA,KAAK,EAAE,iBAAM,CAAG,CADF;AAEdqzD,UAAAA,OAAO,EAAE,IAFK;AAGdt8B,UAAAA,MAAM,EAAE,IAHM;AAId1nC,UAAAA,MAAM,EAAE;AAJM,SAAlB;AAMA,YAAMgkE,OAAO,GAAG,KAAKovG,WAAL,CAAiB7gD,QAAQ,CAACvuD,OAA1B,EAAmC7T,SAAnC,EAA8CoqH,SAA9C,CAAhB;AACA,YAAMv6K,MAAM,GAAGmwD,SAAS,CAACR,eAAV,CAA0B5hD,OAA1B,EAAmCigB,SAAnC,EAA8CA,SAA9C,EAAyDg2C,OAAO,CAACT,KAAjE,CAAf;AACAg3G,QAAAA,SAAS,CAACv6K,MAAV,GAAmBA,MAAnB;AACA,aAAKqzK,YAAL,CAAkBrzK,MAAM,CAAC+uD,QAAzB,EAAmCwjE,QAAnC;AACA,YAAM+gD,QAAQ,GAAG,IAAIj1J,0CAAJ,EAAjB;;AACA,YAAM1N,KAAK,GAAG,SAARA,KAAQ,CAACxH,CAAD,EAAO;AACjBmqK,UAAAA,QAAQ,CAACp2J,IAAT,CAAc/T,CAAC,IAAI,IAAI6wK,iBAAJ,EAAnB;;AACA,cAAIh2G,OAAO,CAACP,YAAZ,EAA0B;AACtBO,YAAAA,OAAO,CAACP,YAAR,CAAqBY,OAArB;AACH;;AACDrkE,UAAAA,MAAM,CAACqkE,OAAP;AACH,SAND;;AAOA,YAAM38B,MAAM,GAAG94B,4CAAK,CAAC0kK,QAAD,EAAWtzK,MAAM,CAAC+uD,QAAP,CAAgBp+C,KAAhB,CAAsB9Q,IAAtB,CAA2BoP,oDAAG,CAAC,UAAA9F,CAAC;AAAA,iBAAKA,CAAC,GAAGA,CAAH,GAAO,IAAI6wK,iBAAJ,EAAb;AAAA,SAAF,CAA9B,EAAwE16K,uDAAM,CAAC,UAAC6J,CAAD,EAAO;AACjH,cAAIopH,QAAQ,CAACvrD,YAAb,EAA2B;AACvB;AACA,gBAAMwzG,kBAAkB,GAAGL,cAAc,CAAC5nD,QAAQ,CAACvuD,OAAV,CAAd,GAAmCh2C,SAAnC,GAA+CusJ,SAA1E;AACA,mBAAO,CAAChoD,QAAQ,CAACvrD,YAAT,CAAsB79D,CAAtB,EAAyBqxK,kBAAzB,CAAR;AACH;;AACD,iBAAO,IAAP;AACH,SAP4G,CAA9E,CAAX,CAAL,CAOV36K,IAPU,CAOLkyB,qDAAI,CAAC,CAAD,CAPC,EAQf;AACA;AACA;AACAI,QAAAA,sDAAK,EAXU,CAAf;AAYAuV,QAAAA,MAAM,CAAC3nC,SAAP,CAAiB4Q,KAAjB;AACA4pK,QAAAA,SAAS,CAAC5pK,KAAV,GAAkBA,KAAlB;AACA4pK,QAAAA,SAAS,CAAC7yI,MAAV,GAAmBA,MAAnB;AACA1nC,QAAAA,MAAM,CAACkwD,iBAAP,CAAyBvqD,YAAzB;AACA,eAAO40K,SAAP;AACH;;;aACD,sBAAaxrH,QAAb,EAAuBjgD,OAAvB,EAAgC;AAC5B,YAAIq3G,SAAS,CAACr3G,OAAO,CAAC+kK,cAAT,CAAb,EAAuC;AACnC9kH,UAAAA,QAAQ,CAAC8kH,cAAT,GAA0B/kK,OAAO,CAAC+kK,cAAlC;AACH;;AACD,YAAI1tD,SAAS,CAACr3G,OAAO,CAACq/J,QAAT,CAAb,EAAiC;AAC7Bp/G,UAAAA,QAAQ,CAACo/G,QAAT,GAAoBr/J,OAAO,CAACq/J,QAA5B;AACH;;AACD,YAAIhoD,SAAS,CAACr3G,OAAO,CAACxQ,KAAT,CAAb,EAA8B;AAC1BywD,UAAAA,QAAQ,CAACzwD,KAAT,GAAiBwQ,OAAO,CAACxQ,KAAzB;AACH;;AACD,YAAI6nH,SAAS,CAACr3G,OAAO,CAACwpK,WAAT,CAAb,EAAoC;AAChCvpH,UAAAA,QAAQ,CAACupH,WAAT,GAAuBxpK,OAAO,CAACwpK,WAA/B;AACH;;AACD,YAAInyD,SAAS,CAACr3G,OAAO,CAAC+B,KAAT,CAAb,EAA8B;AAC1Bk+C,UAAAA,QAAQ,CAACl+C,KAAT,GAAiB/B,OAAO,CAAC+B,KAAzB;AACH;;AACD,YAAIs1G,SAAS,CAACr3G,OAAO,CAAC+qF,QAAT,CAAb,EAAiC;AAC7B9qC,UAAAA,QAAQ,CAAC8qC,QAAT,GAAoB/qF,OAAO,CAAC+qF,QAA5B;AACH;;AACD,YAAIssB,SAAS,CAACr3G,OAAO,CAAC1B,MAAT,CAAb,EAA+B;AAC3B2hD,UAAAA,QAAQ,CAAC3hD,MAAT,GAAkB0B,OAAO,CAAC1B,MAA1B;AACH;;AACD,YAAI+4G,SAAS,CAACr3G,OAAO,CAACmjK,SAAT,CAAb,EAAkC;AAC9BljH,UAAAA,QAAQ,CAACkjH,SAAT,GAAqBnjK,OAAO,CAACmjK,SAA7B;AACH;;AACD,YAAI9rD,SAAS,CAACr3G,OAAO,CAACvF,IAAT,CAAb,EAA6B;AACzBwlD,UAAAA,QAAQ,CAACxlD,IAAT,GAAgBuF,OAAO,CAACvF,IAAxB;AACH;;AACD,YAAI48G,SAAS,CAACr3G,OAAO,CAACxF,GAAT,CAAb,EAA4B;AACxBylD,UAAAA,QAAQ,CAACzlD,GAAT,GAAewF,OAAO,CAACxF,GAAvB;AACH;;AACD,YAAI68G,SAAS,CAACr3G,OAAO,CAAC0uH,SAAT,CAAb,EAAkC;AAC9BzuE,UAAAA,QAAQ,CAACyuE,SAAT,GAAqB1uH,OAAO,CAAC0uH,SAA7B;AACH;;AACD,YAAIrX,SAAS,CAACr3G,OAAO,CAAColK,SAAT,CAAb,EAAkC;AAC9BnlH,UAAAA,QAAQ,CAACmlH,SAAT,GAAqBplK,OAAO,CAAColK,SAA7B;AACH;;AACD,YAAI/tD,SAAS,CAACr3G,OAAO,CAAC6pK,QAAR,IAAoB7pK,OAAO,CAAC6pK,QAAR,CAAiBhK,UAAtC,CAAb,EAAgE;AAC5D5/G,UAAAA,QAAQ,CAAC4pH,QAAT,CAAkBhK,UAAlB,GAA+B7/J,OAAO,CAAC6pK,QAAR,CAAiBhK,UAAhD;AACH;;AACD,YAAIxoD,SAAS,CAACr3G,OAAO,CAAC6pK,QAAR,IAAoB7pK,OAAO,CAAC6pK,QAAR,CAAiBM,YAAtC,CAAb,EAAkE;AAC9DlqH,UAAAA,QAAQ,CAAC4pH,QAAT,CAAkBM,YAAlB,GAAiCnqK,OAAO,CAAC6pK,QAAR,CAAiBM,YAAlD;AACH;;AACD,YAAI9yD,SAAS,CAACr3G,OAAO,CAAC6pK,QAAR,IAAoB7pK,OAAO,CAAC6pK,QAAR,CAAiBO,aAAtC,CAAb,EAAmE;AAC/DnqH,UAAAA,QAAQ,CAAC4pH,QAAT,CAAkBO,aAAlB,GAAkCpqK,OAAO,CAAC6pK,QAAR,CAAiBO,aAAnD;AACH;;AACD,YAAI/yD,SAAS,CAACr3G,OAAO,CAAC6pK,QAAR,IAAoB7pK,OAAO,CAAC6pK,QAAR,CAAiBQ,aAAtC,CAAb,EAAmE;AAC/DpqH,UAAAA,QAAQ,CAAC4pH,QAAT,CAAkBQ,aAAlB,GAAkCrqK,OAAO,CAAC6pK,QAAR,CAAiBQ,aAAnD;AACH;;AACD,YAAIhzD,SAAS,CAACr3G,OAAO,CAACwiK,kBAAT,CAAb,EAA2C;AACvCviH,UAAAA,QAAQ,CAACuiH,kBAAT,GAA8BxiK,OAAO,CAACwiK,kBAAtC;AACH;;AACD,YAAInrD,SAAS,CAACr3G,OAAO,CAAC5B,KAAT,CAAb,EAA8B;AAC1B6hD,UAAAA,QAAQ,CAAC7hD,KAAT,GAAiB4B,OAAO,CAAC5B,KAAzB;;AACA,cAAI4B,OAAO,CAAC5B,KAAR,KAAkB,WAAtB,EAAmC;AAC/B6hD,YAAAA,QAAQ,CAACupH,WAAT,GAAuB,IAAvB;AACH;AACJ;;AACD,YAAIxpK,OAAO,CAACk1D,OAAR,YAA2B11D,uDAA/B,EAA4C;AACxCygD,UAAAA,QAAQ,CAAC1L,eAAT,GAA2Bv0C,OAAO,CAACk1D,OAAnC;AACH;;AACD,YAAIl1D,OAAO,CAACwqK,eAAR,YAAmChrK,uDAAvC,EAAoD;AAChDygD,UAAAA,QAAQ,CAAC0rH,gBAAT,GAA4B3rK,OAAO,CAACwqK,eAApC;AACH;AACJ;;;aACD,qBAAYt1G,OAAZ,EAAqB7T,SAArB,EAAgCoqH,SAAhC,EAA2C;AACvC,YAAMt1K,QAAQ,GAAGkrD,SAAS,CAAC3tC,QAAV,CAAmBrG,GAAnB,CAAuBzX,qDAAvB,CAAjB;AACA,YAAI6+D,KAAK,GAAG,EAAZ;AACA,YAAIE,YAAY,GAAG,IAAnB;;AACA,YAAI,OAAOO,OAAP,KAAmB,QAAvB,EAAiC;AAC7BT,UAAAA,KAAK,GAAG,CAACt+D,QAAQ,CAACw/D,UAAT,CAAoBT,OAApB,CAAD,CAAR;AACH,SAFD,MAGK,IAAIA,OAAO,IAAI,EAAEA,OAAO,YAAY11D,uDAArB,CAAf,EAAkD;AACnD,cAAMkU,QAAQ,GAAG,IAAI43J,cAAJ,CAAmB;AAAA,mBAAMG,SAAN;AAAA,WAAnB,EAAoCpqH,SAAS,CAAC3tC,QAA9C,CAAjB;AACA,cAAMzU,OAAO,GAAG,KAAKilK,QAAL,CAActjH,uBAAd,CAAsCsU,OAAtC,CAAhB;AACAP,UAAAA,YAAY,GAAGtT,SAAS,CAACR,eAAV,CAA0B5hD,OAA1B,EAAmCigB,SAAnC,EAA8CxL,QAA9C,CAAf;AACA+gD,UAAAA,KAAK,GAAG,CAACE,YAAY,CAAC5T,QAAb,CAAsBz9C,aAAvB,CAAR;AACAmoK,UAAAA,SAAS,CAACv2G,OAAV,GAAoBP,YAApB;AACH;;AACD,eAAO;AACHA,UAAAA,YAAY,EAAZA,YADG;AAEHF,UAAAA,KAAK,EAAE,CACH,EADG,EAEHA,KAFG,CAEG;AAFH;AAFJ,SAAP;AAOH;;;;;;AAEL+2G,EAAAA,aAAa,CAAC/vI,IAAd;AAAA,qBAA2G+vI,aAA3G,EA73F0Gn6K,uDA63F1G,CAA0IA,oEAA1I,GA73F0GA,uDA63F1G,CAAkL+5K,sBAAlL;AAAA;;AACAI,EAAAA,aAAa,CAAC5vI,KAAd,kBA93F0GvqC,iEA83F1G;AAAA,WAA+Gm6K,aAA/G;AAAA,aAA+GA,aAA/G;AAAA;SAlLMA;;;AAmLN;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMI;MAAAA,qOACF,kCAAYvqH,SAAZ,EAAuBlmC,OAAvB,EAAgC;AAAA;;AAC5BA,IAAAA,OAAO,CAACkmC,SAAR,GAAoBA,SAApB;AACH;;AAELuqH,EAAAA,wBAAwB,CAACnwI,IAAzB;AAAA,qBAAsHmwI,wBAAtH,EAr5F0Gv6K,gEAq5F1G,CAAgKA,4DAAhK,GAr5F0GA,gEAq5F1G,CAAgMoyK,sBAAhM;AAAA;;AACAmI,EAAAA,wBAAwB,CAAC3vI,IAAzB,kBAt5F0G5qC,gEAs5F1G;AAAA,UAA0Gu6K,wBAA1G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,qCAAY1wJ,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,cAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;;WACD,eAAe;AACX,eAAO,IAAP;AACH;;;;IAPiCsnG;;AAStCopD,EAAAA,uBAAuB,CAACpwI,IAAxB;AAAA,qBAAqHowI,uBAArH,EA36F0Gx6K,gEA26F1G,CAA8JkE,8EAA9J;AAAA;;AACAs2K,EAAAA,uBAAuB,CAAC5vI,IAAxB,kBA56F0G5qC,gEA46F1G;AAAA,UAAyGw6K,uBAAzG;AAAA;AAAA,eA56F0Gx6K,iEA46F1G,CAAuM,CAC/L;AACIoD,MAAAA,OAAO,EAAEguH,QADb;AAEIhhF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMuqJ,uBAAN;AAAA,OAAD;AAF3B,KAD+L,CAAvM,GA56F0Gx6K,yEA46F1G;AAAA;SAVMw6K;;;AAgBN;AAAA;AAAA;AAcA;AACA;AACA;;;AACA,IAAMC,iBAAiB,GAAG,CACtB/M,sBADsB,EAEtB8M,uBAFsB,EAGtB7X,0BAHsB,CAA1B;AAKA;AACA;AACA;;IACMthK;MAAAA;;;;AAENA,EAAAA,YAAY,CAAC+oC,IAAb;AAAA,qBAA0G/oC,YAA1G;AAAA;;AACAA,EAAAA,YAAY,CAAC8sC,IAAb,kBA98F0GnuC,+DA88F1G;AAAA,UAA2GqB;AAA3G;AAKAA,EAAAA,YAAY,CAACgtC,IAAb,kBAn9F0GruC,+DAm9F1G;AAAA,cAAmI,CAACM,0DAAD,CAAnI,EAAmJA,0DAAnJ;AAAA;SARMe;;;AASN;AAAA;AAAA;AASA;AACA;AACA;;;AACA,IAAMq5K,iBAAiB,GAAG,CACtB/K,eADsB,EAEtBpB,uBAFsB,CAA1B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMloJ;MAAAA;;;;AAENA,EAAAA,YAAY,CAAC+jB,IAAb;AAAA,qBAA0G/jB,YAA1G;AAAA;;AACAA,EAAAA,YAAY,CAAC8nB,IAAb,kBA7/F0GnuC,+DA6/F1G;AAAA,UAA2GqmB;AAA3G;AAGAA,EAAAA,YAAY,CAACgoB,IAAb,kBAhgG0GruC,+DAggG1G;AAAA,eAAoI,CAACoyK,sBAAD,EAAyBQ,aAAzB,CAApI;AAAA,cAAuL,CAACvxK,YAAD,CAAvL;AAAA;SANMglB;;;AAON;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMs0J;MAAAA,qOACF,kCAAY3qH,SAAZ,EAAuBlmC,OAAvB,EAAgC;AAAA;;AAC5BA,IAAAA,OAAO,CAACkmC,SAAR,GAAoBA,SAApB;AACH;;AAEL2qH,EAAAA,wBAAwB,CAACvwI,IAAzB;AAAA,qBAAsHuwI,wBAAtH,EA3hG0G36K,gEA2hG1G,CAAgKA,4DAAhK,GA3hG0GA,gEA2hG1G,CAAgM+5K,sBAAhM;AAAA;;AACAY,EAAAA,wBAAwB,CAAC/vI,IAAzB,kBA5hG0G5qC,gEA4hG1G;AAAA,UAA0G26K,wBAA1G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;;AAOA,IAAMC,iBAAiB,GAAG,CACtBpE,qBADsB,EAEtB0B,eAFsB,EAGtBvB,uBAHsB,EAItBsB,0BAJsB,EAKtBH,6BALsB,EAMtBC,6BANsB,EAOtBC,4BAPsB,CAA1B;AASA,IAAM6C,gBAAgB,GAAG,CACrB3C,eADqB,EAErBvB,uBAFqB,CAAzB;AAIA,IAAMz6C,eAAe,GAAG,CACpBg8C,eADoB,EAEpBD,0BAFoB,EAGpBH,6BAHoB,EAIpBC,6BAJoB,EAKpBC,4BALoB,EAMpBrB,uBANoB,CAAxB;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMmE;MAAAA;;;;AAENA,EAAAA,YAAY,CAAC1wI,IAAb;AAAA,qBAA0G0wI,YAA1G;AAAA;;AACAA,EAAAA,YAAY,CAAC3sI,IAAb,kBAllG0GnuC,+DAklG1G;AAAA,UAA2G86K;AAA3G;AAYAA,EAAAA,YAAY,CAACzsI,IAAb,kBA9lG0GruC,+DA8lG1G;AAAA,eAAoI,CAAC+5K,sBAAD,EAAyBI,aAAzB,CAApI;AAAA,cAAuL,CAAC94K,YAAD,EAAeq8H,4EAAf,CAAvL;AAAA;SAfMo9C;;;AAgBN;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMt0J;MAAAA;;;;AAENA,EAAAA,aAAa,CAAC4jB,IAAd;AAAA,qBAA2G5jB,aAA3G;AAAA;;AACAA,EAAAA,aAAa,CAAC2nB,IAAd,kBAtoG0GnuC,+DAsoG1G;AAAA,UAA4GwmB;AAA5G;AACAA,EAAAA,aAAa,CAAC6nB,IAAd,kBAvoG0GruC,+DAuoG1G;AAAA,cAAqIqmB,YAArI,EAAmJy0J,YAAnJ;AAAA;SAJMt0J;;;AAKN;AAAA;AAAA;AAOA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACp6GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AA6csGxmB,IAAAA,yDAi4C9F;;;;iBAj4C8FA;AAAAA,IAAAA,yDAk4C1F,oBAl4C0FA,8DAk4C1F;;;;;;AAl4C0FA,IAAAA,6DAu4CpD;AAv4CoDA,IAAAA,qDAu4CL;AAv4CKA,IAAAA,2DAu4Ca;;;;iBAv4CbA;AAAAA,IAAAA,yDAu4C9C;AAv4C8CA,IAAAA,wDAu4CL;AAv4CKA,IAAAA,gEAu4CL;;;;;;;;;;;;;;AAv4CKA,IAAAA,6DA03ClG;AA13CkGA,IAAAA,yDAi4C9F;AAj4C8FA,IAAAA,yDAu4C9F;AAv4C8FA,IAAAA,2DAw4ClG;;;;iBAx4CkGA;AAAAA,IAAAA,yDA23C9F;AA33C8FA,IAAAA,yDA43C9F,YA53C8FA,8DA43C9F;AA53C8FA,IAAAA,wDAi4ChF;AAj4CgFA,IAAAA,yDAi4ChF;AAj4CgFA,IAAAA,wDAu4CjF;AAv4CiFA,IAAAA,yDAu4CjF;;;;;;eAv4CiFA;;AAAAA,IAAAA,6DAm6CtF;AAn6CsFA,IAAAA,yDAw6ClF;AAx6CkFA,MAAAA,4DAw6ClF;AAAA,0BAx6CkFA,4DAw6ClF;AAAA,oBAx6CkFA,4DAw6ClF;AAAA,aAAU,8CAAV;AAAA;AAx6CkFA,IAAAA,2DAm6CtF;;;;wBAn6CsFA;kBAAAA;AAAAA,IAAAA,yDAu6ClF;;;;;;;;AAv6CkFA,IAAAA,yDA26CtF;;;;uBA36CsFA;kBAAAA;AAAAA,IAAAA,yDA46ClF,oBA56CkFA,8DA46ClF;;;;;;AA56CkFA,IAAAA,6DAi7CtD;AAj7CsDA,IAAAA,qDAi7CvB;AAj7CuBA,IAAAA,2DAi7CA;;;;uBAj7CAA;kBAAAA;AAAAA,IAAAA,wDAi7CvB;AAj7CuBA,IAAAA,gEAi7CvB;;;;;;;;;;;;;AAj7CuBA,IAAAA,6DAo5C1F;AAp5C0FA,IAAAA,yDAm6CtF;AAn6CsFA,IAAAA,yDA26CtF;AA36CsFA,IAAAA,yDAi7CtF;AAj7CsFA,IAAAA,2DAk7C1F;;;;;;kBAl7C0FA;AAAAA,IAAAA,yDA65CtF;AA75CsFA,IAAAA,yDAu5CtF,iNAv5CsFA,8DAu5CtF;AAv5CsFA,IAAAA,0DA25CtF;AA35CsFA,IAAAA,wDAo6CjF;AAp6CiFA,IAAAA,yDAo6CjF;AAp6CiFA,IAAAA,wDA26CxE;AA36CwEA,IAAAA,yDA26CxE;AA36CwEA,IAAAA,wDAi7CzE;AAj7CyEA,IAAAA,yDAi7CzE;;;;;;AAj7CyEA,IAAAA,yDAm5C7F;;;;iBAn5C6FA;AAAAA,IAAAA,yDAm5CF;;;;;;;;AAn5CEA,IAAAA,yDAk8C9E;;;;uBAl8C8EA;kBAAAA;AAAAA,IAAAA,yDAm8C1E,oBAn8C0EA,8DAm8C1E;;;;;;AAn8C0EA,IAAAA,qDAw8CzC;;;;uBAx8CyCA;AAAAA,IAAAA,gEAw8CzC;;;;;;AAx8CyCA,IAAAA,6DAq7C1F;AAr7C0FA,IAAAA,yDAk8C9E;AAl8C8EA,IAAAA,yDAw8C9E;AAx8C8EA,IAAAA,2DAy8ClF;;;;kBAz8CkFA;;;kBAAAA;AAAAA,IAAAA,yDAw7CtF;AAx7CsFA,IAAAA,0DAy7CtF;AAz7CsFA,IAAAA,yDA07CtF,YA17CsFA,8DA07CtF;AA17CsFA,IAAAA,0DA87CtF;AA97CsFA,IAAAA,wDAi8C5E;AAj8C4EA,IAAAA,yDAi8C5E;AAj8C4EA,IAAAA,wDAk8ChE;AAl8CgEA,IAAAA,yDAk8ChE;AAl8CgEA,IAAAA,wDAw8CjE;AAx8CiEA,IAAAA,yDAw8CjE;;;;;;;;AAx8CiEA,IAAAA,yDA29CtF;;;;uBA39CsFA;kBAAAA;AAAAA,IAAAA,yDA49ClF,oBA59CkFA,8DA49ClF;;;;;;AA59CkFA,IAAAA,6DAi+CtD;AAj+CsDA,IAAAA,qDAi+CvB;AAj+CuBA,IAAAA,2DAi+CM;;;;uBAj+CNA;kBAAAA;AAAAA,IAAAA,wDAi+CvB;AAj+CuBA,IAAAA,gEAi+CvB;;;;;;AAj+CuBA,IAAAA,6DA28C1F;AA38C0FA,IAAAA,yDA29CtF;AA39CsFA,IAAAA,yDAi+CtF;AAj+CsFA,IAAAA,2DAk+C1F;;;;kBAl+C0FA;;;kBAAAA;AAAAA,IAAAA,yDAq9CtF;AAr9CsFA,IAAAA,yDA+8CtF,sKA/8CsFA,8DA+8CtF;AA/8CsFA,IAAAA,0DAk9CtF;AAl9CsFA,IAAAA,wDA29CxE;AA39CwEA,IAAAA,yDA29CxE;AA39CwEA,IAAAA,wDAi+CzE;AAj+CyEA,IAAAA,yDAi+CzE;;;;;;AAj+CyEA,IAAAA,yDAq7C1F;AAr7C0FA,IAAAA,yDA28C1F;;;;;AA38C0FA,IAAAA,yDAs7CrF;AAt7CqFA,IAAAA,wDA48CrF;AA58CqFA,IAAAA,yDA48CrF;;;;;;AA58CqFA,IAAAA,yDAo7C7F;;;;iBAp7C6FA;AAAAA,IAAAA,yDAo7CX;;;;;;eAp7CWA;;AAAAA,IAAAA,6DAo+C9F;AAp+C8FA,IAAAA,yDAs+C1F;AAt+C0FA,MAAAA,4DAs+C1F;AAAA,oBAt+C0FA,4DAs+C1F;AAAA,aAAU,yBAAV;AAAA;AAt+C0FA,IAAAA,2DAw+C9F;;;;;;eAx+C8FA;;AAAAA,IAAAA,6DA0+ClG;AA1+CkGA,IAAAA,yDA4+CrE;AA5+CqEA,MAAAA,4DA4+CrE;AAAA,oBA5+CqEA,4DA4+CrE;AAAA,aAAU,yBAAV;AAAA;AA5+CqEA,IAAAA,2DA4+CxC;;;;iBA5+CwCA;AAAAA,IAAAA,wDA2+CzF;AA3+CyFA,IAAAA,0DA2+CzF;;;;;;;;;;cA3+CyFA;;AAAAA,IAAAA,6DA8lF9F;AA9lF8FA,IAAAA,yDAqmF1F;AArmF0FA,MAAAA,4DAqmF1F;AAAA,mBArmF0FA,4DAqmF1F;AAAA,aAAS,yBAAT;AAAA;AAAA,aACa,uBADb;AAAA;AArmF0FA,IAAAA,wDAwmF1F;AAxmF0FA,IAAAA,2DAymF9F;;;;iBAzmF8FA;AAAAA,IAAAA,0DAimF1F;AAjmF0FA,IAAAA,0DAkmF1F;;;;;;AAlmF0FA,IAAAA,wDA0mF9F;;;;;;;;;;;;;;AA1mF8FA,IAAAA,yDA6mF1F;;;;kBA7mF0FA;AAAAA,IAAAA,yDA8mFtF,oBA9mFsFA,8DA8mFtF;;;;;;;;AA9mFsFA,IAAAA,6DA6oFlF;AA7oFkFA,IAAAA,qDA6oF7E;AA7oF6EA,IAAAA,2DA6oF/C;;;;kBA7oF+CA;AAAAA,IAAAA,wDA6oF7E;AA7oF6EA,IAAAA,gEA6oF7E;;;;;;AA7oF6EA,IAAAA,6DAsoF1F;AAtoF0FA,IAAAA,yDAuoFtF;AAvoFsFA,IAAAA,yDA4oFtF;AA5oFsFA,IAAAA,2DA+oF1F;;;;kBA/oF0FA;AAAAA,IAAAA,wDAuoFzE;AAvoFyEA,IAAAA,yDAuoFzE,oDAvoFyEA,8DAuoFzE;AAvoFyEA,IAAAA,wDA4oFzE;AA5oFyEA,IAAAA,yDA4oFzE;;;;;;;;AA5oFyEA,IAAAA,yDAipF1F;;;;kBAjpF0FA;AAAAA,IAAAA,yDAkpFtF,oBAlpFsFA,8DAkpFtF;;;;;;eAlpFsFA;;AAAAA,IAAAA,yDA6mF1F;AA7mF0FA,IAAAA,6DAmnF1F;AAnnF0FA,IAAAA,yDAkoFtF;AAloFsFA,MAAAA,4DAkoFtF;AAAA,oBAloFsFA,4DAkoFtF;AAAA,aAAc,0BAAd;AAAA;AAloFsFA,IAAAA,2DAooF1F;AApoF0FA,IAAAA,yDAsoF1F;AAtoF0FA,IAAAA,yDAipF1F;;;;iBAjpF0FA;AAAAA,IAAAA,yDA6mF5E;AA7mF4EA,IAAAA,wDAqnFtF;AArnFsFA,IAAAA,yDAqnFtF;AArnFsFA,IAAAA,wDAsoFlE;AAtoFkEA,IAAAA,yDAsoFlE;AAtoFkEA,IAAAA,wDAipF5E;AAjpF4EA,IAAAA,yDAipF5E;;;;;;eAjpF4EA;;AAAAA,IAAAA,6DAwpF1F;AAxpF0FA,IAAAA,yDAwpFrE;AAxpFqEA,MAAAA,4DAwpFrE;AAAA,oBAxpFqEA,4DAwpFrE;AAAA,aAAU,kBAAV;AAAA;AAxpFqEA,IAAAA,2DAwpF/C;;;;;;;;;;;;;;cAxpF+CA;;AAAAA,IAAAA,6DAgrI9F;AAhrI8FA,IAAAA,yDAsrI1F;AAtrI0FA,MAAAA,4DAsrI1F;AAAA,mBAtrI0FA,4DAsrI1F;AAAA,aAAS,yBAAT;AAAA;AAtrI0FA,IAAAA,wDA2rI1F;AA3rI0FA,IAAAA,2DA4rI9F;;;;iBA5rI8FA;AAAAA,IAAAA,0DAmrI1F;AAnrI0FA,IAAAA,yDAurI1F,8BAvrI0FA,8DAurI1F;AAvrI0FA,IAAAA,0DAqrI1F;;;;;;;;AArrI0FA,IAAAA,yDA4sI1F;;;;iBA5sI0FA;AAAAA,IAAAA,yDA6sItF,oBA7sIsFA,8DA6sItF;;;;;;;;AA7sIsFA,IAAAA,6DA4uIlF;AA5uIkFA,IAAAA,qDA4uI7E;AA5uI6EA,IAAAA,2DA4uI/C;;;;kBA5uI+CA;AAAAA,IAAAA,wDA4uI7E;AA5uI6EA,IAAAA,gEA4uI7E;;;;;;AA5uI6EA,IAAAA,6DAquI1F;AAruI0FA,IAAAA,yDAsuItF;AAtuIsFA,IAAAA,yDA2uItF;AA3uIsFA,IAAAA,2DA8uI1F;;;;kBA9uI0FA;AAAAA,IAAAA,wDAsuIzE;AAtuIyEA,IAAAA,yDAsuIzE,oDAtuIyEA,8DAsuIzE;AAtuIyEA,IAAAA,wDA2uIzE;AA3uIyEA,IAAAA,yDA2uIzE;;;;;;;;AA3uIyEA,IAAAA,yDAgvI1F;;;;kBAhvI0FA;AAAAA,IAAAA,yDAivItF,oBAjvIsFA,8DAivItF;;;;;;eAjvIsFA;;AAAAA,IAAAA,yDA4sI1F;AA5sI0FA,IAAAA,6DAktI1F;AAltI0FA,IAAAA,yDAiuItF;AAjuIsFA,MAAAA,4DAiuItF;AAAA,oBAjuIsFA,4DAiuItF;AAAA,aAAc,0BAAd;AAAA;AAjuIsFA,IAAAA,2DAmuI1F;AAnuI0FA,IAAAA,yDAquI1F;AAruI0FA,IAAAA,yDAgvI1F;;;;iBAhvI0FA;AAAAA,IAAAA,yDA4sI5E;AA5sI4EA,IAAAA,wDAotItF;AAptIsFA,IAAAA,yDAotItF;AAptIsFA,IAAAA,wDAquIlE;AAruIkEA,IAAAA,yDAquIlE;AAruIkEA,IAAAA,wDAgvI5E;AAhvI4EA,IAAAA,yDAgvI5E;;;;;;eAhvI4EA;;AAAAA,IAAAA,6DAuvI1F;AAvvI0FA,IAAAA,yDAuvIrE;AAvvIqEA,MAAAA,4DAuvIrE;AAAA,oBAvvIqEA,4DAuvIrE;AAAA,aAAU,kBAAV;AAAA;AAvvIqEA,IAAAA,2DAuvI/C;;;;;;;;AAvvI+CA,IAAAA,yDAmvLtF;;;;iBAnvLsFA;AAAAA,IAAAA,yDAovLlF,oBApvLkFA,8DAovLlF;;;;;;AApvLkFA,IAAAA,qDAyvLjD;;;;iBAzvLiDA;AAAAA,IAAAA,gEAyvLjD;;;;;;eAzvLiDA;;AAAAA,IAAAA,6DAixLtF;AAjxLsFA,IAAAA,yDAixL3D;AAAA,aAAS,iCAAT;AAAA;AAjxL2DA,IAAAA,6DAkxLlF;AAlxLkFA,IAAAA,wDAsxL9E;AAtxL8EA,IAAAA,6DAuxL9E;AAvxL8EA,IAAAA,yDA8xL1E;AA9xL0EA,MAAAA,4DA8xL1E;AAAA,oBA9xL0EA,4DA8xL1E;AAAA;AAAA;AA9xL0EA,MAAAA,4DA8xL1E;AAAA,oBA9xL0EA,4DA8xL1E;AAAA,aAEW,uBAFX;AAAA;AA9xL0EA,MAAAA,4DA8xL1E;AAAA,oBA9xL0EA,4DA8xL1E;AAAA,aAGS,4BAHT;AAAA;AA9xL0EA,MAAAA,4DA8xL1E;AAAA,oBA9xL0EA,4DA8xL1E;AAAA,aAIS,uBAJT;AAAA;AA9xL0EA,MAAAA,4DA8xL1E;AAAA,oBA9xL0EA,4DA8xL1E;AAAA,aAKQ,yBALR;AAAA;AA9xL0EA,IAAAA,2DAuxL9E;;;;iBAvxL8EA;AAAAA,IAAAA,wDAoxL9E;AApxL8EA,IAAAA,yDAoxL9E;AApxL8EA,IAAAA,wDA4xL1E;AA5xL0EA,IAAAA,yDA4xL1E;AA5xL0EA,IAAAA,0DAwxL1E;;;;;;;;;;;;AAxxL0EA,IAAAA,6DAyyLtF;AAzyLsFA,IAAAA,qDA8yL9E;AA9yL8EA,IAAAA,2DA+yLlF;;;;iBA/yLkFA;AAAAA,IAAAA,yDA2yLlF;AA3yLkFA,IAAAA,wDA6yLlD;AA7yLkDA,IAAAA,yDA6yLlD,YA7yLkDA,8DA6yLlD;AA7yLkDA,IAAAA,wDA8yL9E;AA9yL8EA,IAAAA,iEA8yL9E;;;;;;;;AA9yL8EA,IAAAA,6DAmzLtF;AAnzLsFA,IAAAA,yDAwzL9E;AAxzL8EA,IAAAA,2DA8zLlF;;;;iBA9zLkFA;AAAAA,IAAAA,yDAqzLlF;AArzLkFA,IAAAA,wDAuzLlD;AAvzLkDA,IAAAA,yDAuzLlD,YAvzLkDA,8DAuzLlD;AAvzLkDA,IAAAA,wDAyzL1E;AAzzL0EA,IAAAA,yDAyzL1E,oBAzzL0EA,8DAyzL1E;;;;;;;;AAzzL0EA,IAAAA,yDAk0L1F;;;;kBAl0L0FA;AAAAA,IAAAA,yDAm0LtF,oBAn0LsFA,8DAm0LtF;;;;;;;;AAn0LsFA,IAAAA,6DAk2LlF;AAl2LkFA,IAAAA,qDAk2L7E;AAl2L6EA,IAAAA,2DAk2L/C;;;;kBAl2L+CA;AAAAA,IAAAA,wDAk2L7E;AAl2L6EA,IAAAA,gEAk2L7E;;;;;;AAl2L6EA,IAAAA,6DA21L1F;AA31L0FA,IAAAA,yDA41LtF;AA51LsFA,IAAAA,yDAi2LtF;AAj2LsFA,IAAAA,2DAo2L1F;;;;kBAp2L0FA;AAAAA,IAAAA,wDA41LzE;AA51LyEA,IAAAA,yDA41LzE,oDA51LyEA,8DA41LzE;AA51LyEA,IAAAA,wDAi2LzE;AAj2LyEA,IAAAA,yDAi2LzE;;;;;;;;AAj2LyEA,IAAAA,yDAs2L1F;;;;kBAt2L0FA;AAAAA,IAAAA,yDAu2LtF,oBAv2LsFA,8DAu2LtF;;;;;;eAv2LsFA;;AAAAA,IAAAA,yDAgxL1F;AAhxL0FA,IAAAA,yDAwyL1F;AAxyL0FA,IAAAA,yDAkzL1F;AAlzL0FA,IAAAA,yDAk0L1F;AAl0L0FA,IAAAA,6DAw0L1F;AAx0L0FA,IAAAA,yDAu1LtF;AAv1LsFA,MAAAA,4DAu1LtF;AAAA,oBAv1LsFA,4DAu1LtF;AAAA,aAAc,0BAAd;AAAA;AAv1LsFA,IAAAA,2DAy1L1F;AAz1L0FA,IAAAA,yDA21L1F;AA31L0FA,IAAAA,yDAs2L1F;;;;iBAt2L0FA;AAAAA,IAAAA,yDAgxL7E;AAhxL6EA,IAAAA,wDAwyL7E;AAxyL6EA,IAAAA,yDAwyL7E;AAxyL6EA,IAAAA,wDAkzL7E;AAlzL6EA,IAAAA,yDAkzL7E;AAlzL6EA,IAAAA,wDAk0L5E;AAl0L4EA,IAAAA,yDAk0L5E;AAl0L4EA,IAAAA,wDA00LtF;AA10LsFA,IAAAA,yDA00LtF;AA10LsFA,IAAAA,wDA21LlE;AA31LkEA,IAAAA,yDA21LlE;AA31LkEA,IAAAA,wDAs2L5E;AAt2L4EA,IAAAA,yDAs2L5E;;;;;;eAt2L4EA;;AAAAA,IAAAA,6DA62L1F;AA72L0FA,IAAAA,yDA62LrE;AA72LqEA,MAAAA,4DA62LrE;AAAA,oBA72LqEA,4DA62LrE;AAAA,aAAU,kBAAV;AAAA;AA72LqEA,IAAAA,2DA62L/C;;;;;;;;AA72L+CA,IAAAA,yDA46MtF;;;;;;;;AA56MsFA,IAAAA,yDA+6M9E;;;;iBA/6M8EA;iBAAAA;AAAAA,IAAAA,yDAg7M1E,oBAh7M0EA,8DAg7M1E;;;;;;AAh7M0EA,IAAAA,qDAq7MzC;;;;iBAr7MyCA;AAAAA,IAAAA,iEAq7MzC;;;;;;AAr7MyCA,IAAAA,6DA86MlF;AA96MkFA,IAAAA,yDA+6M9E;AA/6M8EA,IAAAA,yDAq7M9E;AAr7M8EA,IAAAA,2DAs7MlF;;;;iBAt7MkFA;AAAAA,IAAAA,wDA+6MhE;AA/6MgEA,IAAAA,yDA+6MhE;AA/6MgEA,IAAAA,wDAq7MjE;AAr7MiEA,IAAAA,yDAq7MjE;;;;;;;;AAr7MiEA,IAAAA,yDA07M9E;;;;iBA17M8EA;kBAAAA;AAAAA,IAAAA,yDA27M1E,oBA37M0EA,8DA27M1E;;;;;;AA37M0EA,IAAAA,qDAg8M9C;;;;kBAh8M8CA;;;kBAAAA;AAAAA,IAAAA,gEAg8M9C;;;;;;AAh8M8CA,IAAAA,6DAy7MlF;AAz7MkFA,IAAAA,yDA07M9E;AA17M8EA,IAAAA,yDAg8M9E;AAh8M8EA,IAAAA,2DAi8MlF;;;;iBAj8MkFA;AAAAA,IAAAA,wDA07MhE;AA17MgEA,IAAAA,yDA07MhE;AA17MgEA,IAAAA,wDAg8MjE;AAh8MiEA,IAAAA,yDAg8MjE;;;;;;;;;;;;;;;;;;;;;;;eAh8MiEA;;AAAAA,IAAAA,6DAu5M9F;AAv5M8FA,IAAAA,yDA46MtF;AA56MsFA,IAAAA,yDA66MtF,iFA76MsFA,qEA66MtF;AA76MsFA,IAAAA,yDAw7MtF,iFAx7MsFA,qEAw7MtF;AAx7MsFA,IAAAA,2DAm8M1F;AAn8M0FA,IAAAA,6DAq8M1F;AAr8M0FA,IAAAA,yDAu8MhD;AAAA,wBAv8MgDA,4DAu8MhD;AAAA;AAAA;AAAA,oBAv8MgDA,4DAu8MhD;AAAA,aAAa,2CAAb;AAAA;AAv8MgDA,IAAAA,2DAw8MlF;;;;;;;cAx8MkFA;;cAAAA;;iBAAAA;AAAAA,IAAAA,yDA45M1F,YA55M0FA,8DA45M1F;AA55M0FA,IAAAA,0DAy5M1F;AAz5M0FA,IAAAA,wDA46MxE;AA56MwEA,IAAAA,yDA46MxE;AA56MwEA,IAAAA,wDAs8M5D;AAt8M4DA,IAAAA,0DAs8M5D;;;;;;;;cAt8M4DA;;AAAAA,IAAAA,6DAo4P9F;AAp4P8FA,IAAAA,yDA24P1F;AA34P0FA,MAAAA,4DA24P1F;AAAA,mBA34P0FA,4DA24P1F;AAAA,aAAa,uBAAb;AAAA;AA34P0FA,IAAAA,wDA64P1F;AA74P0FA,IAAAA,2DA84P9F;;;;iBA94P8FA;AAAAA,IAAAA,0DAu4P1F;AAv4P0FA,IAAAA,0DAw4P1F;;;;;;AAx4P0FA,IAAAA,wDA+4P9F;;;;;;;;AA/4P8FA,IAAAA,yDAs5P1F;;;;iBAt5P0FA;AAAAA,IAAAA,yDAu5PtF,oBAv5PsFA,8DAu5PtF;;;;;;;;AAv5PsFA,IAAAA,yDAk6PlF;;;;kBAl6PkFA;AAAAA,IAAAA,yDAm6P9E,oBAn6P8EA,8DAm6P9E;;;;;;AAn6P8EA,IAAAA,qDAw6PvC;;;;kBAx6PuCA;AAAAA,IAAAA,gEAw6PvC;;;;;;AAx6PuCA,IAAAA,6DA45P1F;AA55P0FA,IAAAA,yDAk6PlF;AAl6PkFA,IAAAA,yDAw6PlF,oGAx6PkFA,qEAw6PlF;AAx6PkFA,IAAAA,wDAy6PlF;AAz6PkFA,IAAAA,2DA06PtF;;;;eA16PsFA;;kBAAAA;AAAAA,IAAAA,yDA+5PtF;AA/5PsFA,IAAAA,wDAi6PtB;AAj6PsBA,IAAAA,yDAi6PtB;AAj6PsBA,IAAAA,wDAk6PpE;AAl6PoEA,IAAAA,yDAk6PpE;;;;;;;;AAl6PoEA,IAAAA,6DAy8PlF;AAz8PkFA,IAAAA,qDAy8P7E;AAz8P6EA,IAAAA,2DAy8P/C;;;;kBAz8P+CA;AAAAA,IAAAA,wDAy8P7E;AAz8P6EA,IAAAA,gEAy8P7E;;;;;;AAz8P6EA,IAAAA,6DAk8P1F;AAl8P0FA,IAAAA,yDAm8PtF;AAn8PsFA,IAAAA,yDAw8PtF;AAx8PsFA,IAAAA,2DA28P1F;;;;kBA38P0FA;AAAAA,IAAAA,wDAm8PzE;AAn8PyEA,IAAAA,yDAm8PzE,oDAn8PyEA,8DAm8PzE;AAn8PyEA,IAAAA,wDAw8PzE;AAx8PyEA,IAAAA,yDAw8PzE;;;;;;;;AAx8PyEA,IAAAA,yDA68P1F;;;;kBA78P0FA;AAAAA,IAAAA,yDA88PtF,oBA98PsFA,8DA88PtF;;;;;;eA98PsFA;;AAAAA,IAAAA,yDAs5P1F;AAt5P0FA,IAAAA,yDA45P1F;AA55P0FA,IAAAA,6DA66P1F;AA76P0FA,IAAAA,yDA67PtF;AA77PsFA,MAAAA,4DA67PtF;AAAA,oBA77PsFA,4DA67PtF;AAAA,aAAc,0BAAd;AAAA;AA77PsFA,IAAAA,2DAg8P1F;AAh8P0FA,IAAAA,yDAk8P1F;AAl8P0FA,IAAAA,yDA68P1F;;;;iBA78P0FA;AAAAA,IAAAA,yDAs5P5E;AAt5P4EA,IAAAA,wDA65PrF;AA75PqFA,IAAAA,yDA65PrF;AA75PqFA,IAAAA,wDA+6PtF;AA/6PsFA,IAAAA,yDA+6PtF;AA/6PsFA,IAAAA,wDAk8PlE;AAl8PkEA,IAAAA,yDAk8PlE;AAl8PkEA,IAAAA,wDA68P5E;AA78P4EA,IAAAA,yDA68P5E;;;;;;eA78P4EA;;AAAAA,IAAAA,6DAo9P1F;AAp9P0FA,IAAAA,yDAo9PrE;AAp9PqEA,MAAAA,4DAo9PrE;AAAA,oBAp9PqEA,4DAo9PrE;AAAA,aAAU,kBAAV;AAAA;AAp9PqEA,IAAAA,2DAo9P/C;;;;;;;;cAp9P+CA;;AAAAA,IAAAA,6DAqkR9F;AArkR8FA,IAAAA,yDA2kR1F;AA3kR0FA,MAAAA,4DA2kR1F;AAAA,mBA3kR0FA,4DA2kR1F;AAAA,aAAS,yBAAT;AAAA;AA3kR0FA,IAAAA,wDAglR1F;AAhlR0FA,IAAAA,2DAilR9F;;;;iBAjlR8FA;AAAAA,IAAAA,0DAwkR1F;AAxkR0FA,IAAAA,yDA4kR1F,8BA5kR0FA,8DA4kR1F;AA5kR0FA,IAAAA,0DA0kR1F;;;;;;;;AA1kR0FA,IAAAA,yDAqmR1F;;;;iBArmR0FA;AAAAA,IAAAA,yDAumRtF,oBAvmRsFA,8DAumRtF;;;;;;AAvmRsFA,IAAAA,wDAynRlE;;;;qBAznRkEA;AAAAA,IAAAA,0DA2nR9D;;;;;;AA3nR8DA,IAAAA,sEAwnRtE;AAxnRsEA,IAAAA,yDAynRlE;AAznRkEA,IAAAA,oEA6nRtE;;;;;AA7nRsEA,IAAAA,wDA0nR7D;AA1nR6DA,IAAAA,yDA0nR7D;;;;;;AA1nR6DA,IAAAA,sEAwoR1D;AAxoR0DA,IAAAA,qDAyoRtD;AAzoRsDA,IAAAA,oEA0oR1D;;;;qBA1oR0DA;AAAAA,IAAAA,wDAyoRtD;AAzoRsDA,IAAAA,iEAyoRtD;;;;;;;;;;;;;;;;AAzoRsDA,IAAAA,yDA2oR1D;;;;qBA3oR0DA;AAAAA,IAAAA,yDA6oRtD,oBA7oRsDA,8DA6oRtD;;;;;;AA7oRsDA,IAAAA,6DAkoR9D;AAloR8DA,IAAAA,yDAwoR1D;AAxoR0DA,IAAAA,yDA2oR1D;AA3oR0DA,IAAAA,2DAopR9D;;;;qBAppR8DA;AAAAA,IAAAA,yDAqoR1D;AAroR0DA,IAAAA,wDAwoR3C;AAxoR2CA,IAAAA,yDAwoR3C;AAxoR2CA,IAAAA,wDA4oRrD;AA5oRqDA,IAAAA,yDA4oRrD;;;;;;AA5oRqDA,IAAAA,sEAioRlE;AAjoRkEA,IAAAA,yDAkoR9D;AAloR8DA,IAAAA,oEAqpRlE;;;;;AArpRkEA,IAAAA,wDAmoRzD;AAnoRyDA,IAAAA,yDAmoRzD;;;;;;AAnoRyDA,IAAAA,sEAsqR1E;AAtqR0EA,IAAAA,qDAuqRtE;AAvqRsEA,IAAAA,oEAwqR1E;;;;qBAxqR0EA;uBAAAA;kBAAAA;AAAAA,IAAAA,wDAuqRtE;AAvqRsEA,IAAAA,iEAuqRtE;;;;;;;;;;;;;;;;;AAvqRsEA,IAAAA,yDAyqR1E;;;;qBAzqR0EA;uBAAAA;AAAAA,IAAAA,yDA2qRtE,oBA3qRsEA,8DA2qRtE;;;;;;AA3qRsEA,IAAAA,6DA+pR9E;AA/pR8EA,IAAAA,yDAsqR1E;AAtqR0EA,IAAAA,yDAyqR1E;AAzqR0EA,IAAAA,2DAmrR9E;;;;qBAnrR8EA;AAAAA,IAAAA,0DAmqR1E;AAnqR0EA,IAAAA,yDAkqR1E;AAlqR0EA,IAAAA,wDAsqR3D;AAtqR2DA,IAAAA,yDAsqR3D;AAtqR2DA,IAAAA,wDA0qRrE;AA1qRqEA,IAAAA,yDA0qRrE;;;;;;AA1qRqEA,IAAAA,sEA8pRlF;AA9pRkFA,IAAAA,yDA+pR9E;AA/pR8EA,IAAAA,oEAorRlF;;;;;AAprRkFA,IAAAA,wDAgqRzE;AAhqRyEA,IAAAA,yDAgqRzE;;;;;;AAhqRyEA,IAAAA,yDA8pRlF;;;;kBA9pRkFA;AAAAA,IAAAA,yDA8pRjD;;;;;;;;AA9pRiDA,IAAAA,6DAwtR9E;AAxtR8EA,IAAAA,qDAwtRzE;AAxtRyEA,IAAAA,2DAwtR3C;;;;kBAxtR2CA;AAAAA,IAAAA,wDAwtRzE;AAxtRyEA,IAAAA,gEAwtRzE;;;;;;AAxtRyEA,IAAAA,6DA4sRtF;AA5sRsFA,IAAAA,yDAgtRlF;AAhtRkFA,IAAAA,yDAutRlF;AAvtRkFA,IAAAA,2DA0tRtF;;;;kBA1tRsFA;AAAAA,IAAAA,wDAitR9E;AAjtR8EA,IAAAA,yDAitR9E,oDAjtR8EA,8DAitR9E;AAjtR8EA,IAAAA,wDAutRrE;AAvtRqEA,IAAAA,yDAutRrE;;;;;;;;AAvtRqEA,IAAAA,sEA6tRtF;AA7tRsFA,IAAAA,6DA8tRlF;AA9tRkFA,IAAAA,yDAmuR9D;AAnuR8DA,IAAAA,2DAyuRlE;AAzuRkEA,IAAAA,oEA8uRtF;;;;kBA9uRsFA;AAAAA,IAAAA,wDAouR1D;AApuR0DA,IAAAA,yDAouR1D,oBApuR0DA,8DAouR1D;;;;;;eApuR0DA;;AAAAA,IAAAA,yDAqmR1F;AArmR0FA,IAAAA,6DA8mR1F;AA9mR0FA,IAAAA,yDAwnRtE;AAxnRsEA,IAAAA,2DA8nR1E;AA9nR0EA,IAAAA,6DA+nR1E;AA/nR0EA,IAAAA,yDAioRlE;AAjoRkEA,IAAAA,2DAspRtE;AAtpRsEA,IAAAA,yDA6pRtF,wGA7pRsFA,qEA6pRtF;AA7pRsFA,IAAAA,6DAwrRtF;AAxrRsFA,IAAAA,yDAssRlF;AAtsRkFA,MAAAA,4DAssRlF;AAAA,oBAtsRkFA,4DAssRlF;AAAA,aAAc,0BAAd;AAAA;AAtsRkFA,MAAAA,4DAssRlF;;AAAA,iBAtsRkFA,0DAssRlF;;AAAA,oBAtsRkFA,4DAssRlF;AAAA,aACc,iCADd;AAAA;AAtsRkFA,IAAAA,2DAysRtF;AAzsRsFA,IAAAA,yDA4sRtF;AA5sRsFA,IAAAA,yDA6tRtF;AA7tRsFA,IAAAA,2DAgvR1F;;;;eAhvR0FA;;iBAAAA;AAAAA,IAAAA,yDAsmRrF;AAtmRqFA,IAAAA,wDA8mRhE;AA9mRgEA,IAAAA,yDA8mRhE;AA9mRgEA,IAAAA,wDAwnRrC;AAxnRqCA,IAAAA,yDAwnRrC;AAxnRqCA,IAAAA,wDAioRjC;AAjoRiCA,IAAAA,yDAioRjC;AAjoRiCA,IAAAA,wDA0rRlF;AA1rRkFA,IAAAA,yDA0rRlF,+JA1rRkFA,8DA0rRlF;AA1rRkFA,IAAAA,wDA8sRjF;AA9sRiFA,IAAAA,yDA8sRjF;AA9sRiFA,IAAAA,wDA6tRvE;AA7tRuEA,IAAAA,yDA6tRvE;;;;;;eA7tRuEA;;AAAAA,IAAAA,6DAovR9F;AApvR8FA,IAAAA,yDAsvR1F;AAtvR0FA,MAAAA,4DAsvR1F;AAAA,oBAtvR0FA,4DAsvR1F;AAAA,aAAU,kBAAV;AAAA;AAtvR0FA,IAAAA,2DAwvR9F;;;;;;;;;;;AAxvR8FA,IAAAA,yDA2+TtF;;;;iBA3+TsFA;AAAAA,IAAAA,yDA4+TlF,oBA5+TkFA,8DA4+TlF;;;;;;AA5+TkFA,IAAAA,qDAi/ThD;;;;iBAj/TgDA;AAAAA,IAAAA,iEAi/ThD;;;;;;cAj/TgDA;;AAAAA,IAAAA,6DAo/T9F;AAp/T8FA,IAAAA,yDA0/T1F;AA1/T0FA,MAAAA,4DA0/T1F;AAAA,mBA1/T0FA,4DA0/T1F;AAAA,aAAS,yBAAT;AAAA;AA1/T0FA,IAAAA,wDA4/T1F;AA5/T0FA,IAAAA,2DA6/T9F;;;;iBA7/T8FA;AAAAA,IAAAA,0DAu/T1F;AAv/T0FA,IAAAA,0DAy/T1F;;;;;;;;;;;;eAz/T0FA;;AAAAA,IAAAA,6DA4gU1F;AA5gU0FA,IAAAA,wDAqhU9E;AArhU8EA,IAAAA,2DAshUlF;AAthUkFA,IAAAA,6DAuhUlF;AAvhUkFA,IAAAA,yDAyhU9E;AAzhU8EA,MAAAA,4DAyhU9E;AAAA,oBAzhU8EA,4DAyhU9E;AAAA,aAAS,8CAAT;AAAA;AAzhU8EA,MAAAA,4DAyhU9E;AAAA,oBAzhU8EA,4DAyhU9E;AAAA,aAEqB,6BAFrB;AAAA;AAzhU8EA,MAAAA,4DAyhU9E;AAAA,oBAzhU8EA,4DAyhU9E;AAAA,aAGuB,6BAHvB;AAAA;AAzhU8EA,MAAAA,4DAyhU9E;AAAA,oBAzhU8EA,4DAyhU9E;AAAA;AAAA;AAzhU8EA,IAAAA,2DAuhUlF;;;;iBAvhUkFA;AAAAA,IAAAA,wDAkhUlF;AAlhUkFA,IAAAA,yDAkhUlF;AAlhUkFA,IAAAA,wDA0hU9E;AA1hU8EA,IAAAA,yDA0hU9E,kHA1hU8EA,8DA0hU9E;;;;;;;;AA1hU8EA,IAAAA,yDA6iU1F;;;;kBA7iU0FA;AAAAA,IAAAA,yDA+iUtF,oBA/iUsFA,8DA+iUtF;;;;;;eA/iUsFA;;AAAAA,IAAAA,6DAmjU1F;AAnjU0FA,IAAAA,yDA0jUtF;AA1jUsFA,MAAAA,4DA0jUtF;AAAA,oBA1jUsFA,4DA0jUtF;AAAA;AAAA;AA1jUsFA,MAAAA,4DA0jUtF;AAAA,oBA1jUsFA,4DA0jUtF;AAAA,aAYY,0BAZZ;AAAA;AA1jUsFA,MAAAA,4DA0jUtF;AAAA,oBA1jUsFA,4DA0jUtF;AAAA,aAaW,6BAbX;AAAA;AA1jUsFA,MAAAA,4DA0jUtF;AAAA,oBA1jUsFA,4DA0jUtF;AAAA,aAcmB,iCAdnB;AAAA;AA1jUsFA,MAAAA,4DA0jUtF;AAAA,oBA1jUsFA,4DA0jUtF;AAAA,aAeU,+BAfV;AAAA;AA1jUsFA,MAAAA,4DA0jUtF;AAAA,oBA1jUsFA,4DA0jUtF;AAAA,aAgBY,iCAhBZ;AAAA;AA1jUsFA,IAAAA,2DA4kU1F;;;;kBA5kU0FA;AAAAA,IAAAA,0DAwjUtF;AAxjUsFA,IAAAA,yDAsjUtF;;;;;;;;AAtjUsFA,IAAAA,yDA8kU1F;;;;kBA9kU0FA;AAAAA,IAAAA,yDAglUtF,oBAhlUsFA,8DAglUtF;;;;;;;;AAhlUsFA,IAAAA,6DA4lUlF;AA5lUkFA,IAAAA,qDA4lU7E;AA5lU6EA,IAAAA,2DA4lU/C;;;;kBA5lU+CA;AAAAA,IAAAA,wDA4lU7E;AA5lU6EA,IAAAA,gEA4lU7E;;;;;;AA5lU6EA,IAAAA,6DAqlU1F;AArlU0FA,IAAAA,yDAslUtF;AAtlUsFA,IAAAA,yDA2lUtF;AA3lUsFA,IAAAA,2DA8lU1F;;;;kBA9lU0FA;AAAAA,IAAAA,wDAslUzE;AAtlUyEA,IAAAA,yDAslUzE,oDAtlUyEA,8DAslUzE;AAtlUyEA,IAAAA,wDA2lUzE;AA3lUyEA,IAAAA,yDA2lUzE;;;;;;AA3lUyEA,IAAAA,yDA4gU1F;AA5gU0FA,IAAAA,yDA6iU1F;AA7iU0FA,IAAAA,yDAmjU1F;AAnjU0FA,IAAAA,yDA8kU1F;AA9kU0FA,IAAAA,yDAqlU1F;;;;iBArlU0FA;AAAAA,IAAAA,yDA6gUrF;AA7gUqFA,IAAAA,wDA8iUrF;AA9iUqFA,IAAAA,yDA8iUrF;AA9iUqFA,IAAAA,wDAqjUrF;AArjUqFA,IAAAA,yDAqjUrF;AArjUqFA,IAAAA,wDA+kUrF;AA/kUqFA,IAAAA,yDA+kUrF;AA/kUqFA,IAAAA,wDAqlUlE;AArlUkEA,IAAAA,yDAqlUlE;;;;;;;;AArlUkEA,IAAAA,6DAo8X1F;AAp8X0FA,IAAAA,qDAu8XrD;AAv8XqDA,IAAAA,2DAu8XpC;;;;iBAv8XoCA;AAAAA,IAAAA,wDAu8XrD;AAv8XqDA,IAAAA,gEAu8XrD;;;;;;cAv8XqDA;;AAAAA,IAAAA,6DA08X9F;AA18X8FA,IAAAA,yDAg9X1F;AAh9X0FA,MAAAA,4DAg9X1F;AAAA,mBAh9X0FA,4DAg9X1F;AAAA,aAAS,uBAAT;AAAA;AAh9X0FA,IAAAA,wDAk9X1F;AAl9X0FA,IAAAA,2DAm9X9F;;;;iBAn9X8FA;AAAAA,IAAAA,0DA68X1F;;;;;;AA78X0FA,IAAAA,wDAo9X9F;;;;;;eAp9X8FA;;AAAAA,IAAAA,6DA09X1F;AA19X0FA,IAAAA,wDAm+X9E;AAn+X8EA,IAAAA,2DAo+XlF;AAp+XkFA,IAAAA,6DAq+XlF;AAr+XkFA,IAAAA,yDAu+X9E;AAv+X8EA,MAAAA,4DAu+X9E;AAAA,oBAv+X8EA,4DAu+X9E;AAAA,aAAS,8CAAT;AAAA;AAv+X8EA,MAAAA,4DAu+X9E;AAAA,oBAv+X8EA,4DAu+X9E;AAAA,aAEW,6BAFX;AAAA;AAv+X8EA,MAAAA,4DAu+X9E;AAAA,oBAv+X8EA,4DAu+X9E;AAAA;AAAA;AAv+X8EA,IAAAA,2DAq+XlF;;;;iBAr+XkFA;AAAAA,IAAAA,wDAg+XlF;AAh+XkFA,IAAAA,yDAg+XlF;AAh+XkFA,IAAAA,wDAw+X9E;AAx+X8EA,IAAAA,yDAw+X9E,kHAx+X8EA,8DAw+X9E;;;;;;;;AAx+X8EA,IAAAA,yDA0/X1F;;;;iBA1/X0FA;AAAAA,IAAAA,yDA4/XtF,oBA5/XsFA,8DA4/XtF;;;;;;eA5/XsFA;;AAAAA,IAAAA,6DAggY1F;AAhgY0FA,IAAAA,yDA+gYlF;AA/gYkFA,MAAAA,4DA+gYlF;AAAA,oBA/gYkFA,4DA+gYlF;AAAA,aAAsB,wCAAtB;AAAA;AA/gYkFA,MAAAA,4DA+gYlF;AAAA,oBA/gYkFA,4DA+gYlF;AAAA,aACW,6BADX;AAAA;AA/gYkFA,IAAAA,2DAigYtF;AAjgYsFA,IAAAA,6DAshYtF;AAthYsFA,IAAAA,yDAwhYlF;AAxhYkFA,MAAAA,4DAwhYlF;AAAA,oBAxhYkFA,4DAwhYlF;AAAA,aAAS,wBAAT;AAAA;AAAA,aACa,uBADb;AAAA;AAxhYkFA,IAAAA,qDA2hYlF;AA3hYkFA,IAAAA,2DA4hYtF;;;;AA5hYsFA,IAAAA;;eAAAA;;kBAAAA;AAAAA,IAAAA,wDAmgYlF;AAngYkFA,IAAAA,yDAmgYlF,gQAngYkFA,8DAmgYlF;AAngYkFA,IAAAA,wDA2hYlF;AA3hYkFA,IAAAA,iEA2hYlF;;;;;;;;AA3hYkFA,IAAAA,yDA6jY1F;;;;kBA7jY0FA;AAAAA,IAAAA,yDA+jYtF,oBA/jYsFA,8DA+jYtF;;;;;;;;AA/jYsFA,IAAAA,6DA2kYlF;AA3kYkFA,IAAAA,qDA2kY7E;AA3kY6EA,IAAAA,2DA2kY/C;;;;kBA3kY+CA;AAAAA,IAAAA,wDA2kY7E;AA3kY6EA,IAAAA,gEA2kY7E;;;;;;AA3kY6EA,IAAAA,6DAokY1F;AApkY0FA,IAAAA,yDAqkYtF;AArkYsFA,IAAAA,yDA0kYtF;AA1kYsFA,IAAAA,2DA6kY1F;;;;kBA7kY0FA;AAAAA,IAAAA,wDAqkYzE;AArkYyEA,IAAAA,yDAqkYzE,oDArkYyEA,8DAqkYzE;AArkYyEA,IAAAA,wDA0kYzE;AA1kYyEA,IAAAA,yDA0kYzE;;;;;;;;;;;;eA1kYyEA;;AAAAA,IAAAA,yDA09X1F;AA19X0FA,IAAAA,yDA0/X1F;AA1/X0FA,IAAAA,yDAggY1F;AAhgY0FA,IAAAA,6DA8hY1F;AA9hY0FA,IAAAA,yDAijYtF;AAjjYsFA,MAAAA,4DAijYtF;AAAA,oBAjjYsFA,4DAijYtF;AAAA,aAAW,6BAAX;AAAA;AAjjYsFA,MAAAA,4DAijYtF;AAAA,oBAjjYsFA,4DAijYtF;AAAA,aACa,+BADb;AAAA;AAjjYsFA,MAAAA,4DAijYtF;AAAA,oBAjjYsFA,4DAijYtF;AAAA,aAEU,+BAFV;AAAA;AAjjYsFA,MAAAA,4DAijYtF;AAAA,oBAjjYsFA,4DAijYtF;AAAA,aAGY,iCAHZ;AAAA;AAjjYsFA,MAAAA,4DAijYtF;AAAA,oBAjjYsFA,4DAijYtF;AAAA,aAIsB,wCAJtB;AAAA;AAjjYsFA,IAAAA,2DA2jY1F;AA3jY0FA,IAAAA,yDA6jY1F;AA7jY0FA,IAAAA,yDAokY1F;;;;iBApkY0FA;AAAAA,IAAAA,yDA29XrF;AA39XqFA,IAAAA,wDA2/XrF;AA3/XqFA,IAAAA,yDA2/XrF;AA3/XqFA,IAAAA,wDAggYpF;AAhgYoFA,IAAAA,yDAggYpF;AAhgYoFA,IAAAA,wDAkiYtF;AAliYsFA,IAAAA,0DAkiYtF;AAliYsFA,IAAAA,yDAgiYtF,qfAhiYsFA,8DAgiYtF;AAhiYsFA,IAAAA,wDA8jYrF;AA9jYqFA,IAAAA,yDA8jYrF;AA9jYqFA,IAAAA,wDAokYlE;AApkYkEA,IAAAA,yDAokYlE;;;;AAhhZpC,IAAMylH,eAAe,GAAG;AACpB7sG,EAAAA,IAAI,EAAE,mCADc;AAEpB8sG,EAAAA,WAAW,EAAE,sBAFO;AAGpBC,EAAAA,YAAY,EAAE,CAAC,gBAAD,EAAmB,iBAAnB,CAHM;AAIpBC,EAAAA,WAAW,EAAE,UAJO;AAKpBC,EAAAA,OAAO,EAAE,EALW;AAMpBC,EAAAA,gBAAgB,EAAE;AANE,CAAxB;AASA;;AACA;AACA;AACA;;AACA,IAAME,SAAS,GAAG,SAAZA,SAAY,CAAC11G,KAAD;AAAA,SAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKud,SAAvC;AAAA,CAAlB;AACA;AACA;AACA;;;AACA,IAAMgb,QAAQ,GAAG,SAAXA,QAAW,CAACv4B,KAAD;AAAA,SAAW,CAACw4B,KAAK,CAACx4B,KAAD,CAAjB;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAMu0G,IAAI,GAAG,SAAPA,IAAO,GAAM;AACf,MAAItjG,EAAE,GAAG,EAAT;AACA,MAAI65B,CAAJ;AACA,MAAIu1C,MAAJ;;AACA,OAAKv1C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,EAAhB,EAAoBA,CAAC,EAArB,EAAyB;AACrBu1C,IAAAA,MAAM,GAAGhoD,IAAI,CAACgoD,MAAL,KAAgB,EAAhB,GAAqB,CAA9B;;AACA,QAAIv1C,CAAC,KAAK,CAAN,IAAWA,CAAC,KAAK,EAAjB,IAAuBA,CAAC,KAAK,EAA7B,IAAmCA,CAAC,KAAK,EAA7C,EAAiD;AAC7C75B,MAAAA,EAAE,IAAI,GAAN;AACH;;AACDA,IAAAA,EAAE,IAAI,CAAC65B,CAAC,KAAK,EAAN,GAAW,CAAX,GAAgBA,CAAC,KAAK,EAAN,GAAYu1C,MAAM,GAAG,CAAT,GAAa,CAAzB,GAA8BA,MAA/C,EAAwD7oF,QAAxD,CAAiE,EAAjE,CAAN;AACH;;AACD,SAAOyZ,EAAP;AACH,CAZD;AAaA;AACA;AACA;;;AACA,IAAMs6J,UAAU,GAAG,SAAbA,UAAa,CAACrnB,KAAD,EAAQt5G,GAAR,EAAgB;AAC/B,SAAOs5G,KAAK,CAAC5wD,MAAN,CAAa1oD,GAAG,CAACl3B,MAAJ,CAAWk3B,GAAG,CAACzgC,WAAJ,GAAkBoJ,OAAlB,CAA0B2wI,KAAK,CAAC/5I,WAAN,EAA1B,IAAiD+5I,KAAK,CAAC/+I,MAAlE,CAAb,CAAP;AACH,CAFD;AAGA;AACA;AACA;;;AACA,IAAMuxH,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,SAAM,OAAOnnI,MAAP,KAAkB,WAAxB;AAAA,CAA1B;AACA;AACA;AACA;;;AACA,IAAMgsD,OAAO,GAAG,SAAVA,OAAU,CAACv7C,KAAD;AAAA,SAAWgP,KAAK,CAACusC,OAAN,CAAcv7C,KAAd,CAAX;AAAA,CAAhB;AACA;AACA;AACA;;;AACA,IAAMk+E,QAAQ,GAAG,SAAXA,QAAW,CAACl+E,KAAD;AAAA,SAAW01G,SAAS,CAAC11G,KAAD,CAAT,IAAoB,OAAOA,KAAP,KAAiB,QAAhD;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAMwrK,aAAa,GAAG,SAAhBA,aAAgB,CAACxrK,KAAD;AAAA,SAAW,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACmF,MAAN,KAAiB,CAAzD;AAAA,CAAtB;AACA;AACA;AACA;;;AACA,IAAMsmK,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,MAAD;AAAA,MAAS99K,IAAT,uEAAgB,EAAhB;AAAA,MAAoB+9K,UAApB;AAAA,SAAmCD,MAAM,CACjEltK,GAD2D,CACvD,UAAAwB,KAAK,EAAI;AACd,WAAOpS,IAAI,CAAC0X,IAAL,CAAU,UAAA4E,IAAI;AAAA,aAAI2kJ,MAAM,CAAC3kJ,IAAD,EAAOyhK,UAAP,CAAN,KAA6B3rK,KAAjC;AAAA,KAAd,CAAP;AACH,GAH+D,EAI3DnR,MAJ2D,CAIpD,UAAAmR,KAAK;AAAA,WAAIA,KAAK,KAAKud,SAAd;AAAA,GAJ+C,CAAnC;AAAA,CAA7B;AAKA;AACA;AACA;;;AACA,IAAMquJ,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACF,MAAD,EAASC,UAAT;AAAA,SAAwBpwH,OAAO,CAACmwH,MAAD,CAAP,IAAmBA,MAAM,CAAC78K,MAAP,CAAc,UAAAqb,IAAI,EAAI;AAC3F,WAAOg0E,QAAQ,CAACh0E,IAAD,CAAR,IAAkBwrG,SAAS,CAACm5C,MAAM,CAAC3kJ,IAAD,EAAOyhK,UAAP,CAAP,CAAlC;AACH,GAFwE,CAA3C;AAAA,CAA9B;AAGA;AACA;AACA;;;AACA,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAC7rK,KAAD,EAAQpS,IAAR,EAAc+9K,UAAd,EAA6B;AAClD,MAAMG,YAAY,GAAGF,qBAAqB,CAAC5rK,KAAD,EAAQ2rK,UAAR,CAArB,IAA4C,EAAjE;AACA,MAAMI,cAAc,GAAGN,oBAAoB,CAACzrK,KAAD,EAAQpS,IAAR,EAAc+9K,UAAd,CAApB,IAAiD,EAAxE;AACA,SAAOI,cAAc,CAACz4E,MAAf,CAAsBw4E,YAAtB,CAAP;AACH,CAJD;AAKA;AACA;AACA;;;AACA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACN,MAAD,EAAY;AAC9B,SAAOnwH,OAAO,CAACmwH,MAAD,CAAP,IAAmBA,MAAM,CAACvoF,KAAP,CAAa,UAAAj5E,IAAI;AAAA,WAAIg0E,QAAQ,CAACh0E,IAAD,CAAZ;AAAA,GAAjB,CAA1B;AACH,CAFD;AAGA;AACA;AACA;;;AACA,IAAM+hK,eAAe,GAAG,SAAlBA,eAAkB,CAACP,MAAD,EAAS99K,IAAT,EAAe+9K,UAAf,EAA8B;AAClD,MAAMO,eAAe,GAAGt+K,IAAI,CAAC4Q,GAAL,CAAS,UAAA0L,IAAI,EAAI;AACrC,WAAOwrG,SAAS,CAACxrG,IAAD,CAAT,IAAmBwrG,SAAS,CAACm5C,MAAM,CAAC3kJ,IAAD,EAAOyhK,UAAP,CAAP,CAA5B,GAAyD9c,MAAM,CAAC3kJ,IAAD,EAAOyhK,UAAP,CAA/D,GAAoFzhK,IAA3F;AACH,GAFuB,CAAxB;AAGA,SAAOwhK,MAAM,CAAC98H,MAAP,CAAc,UAACyJ,GAAD,EAAMnuC,IAAN,EAAe;AAChC,QAAMlK,KAAK,GAAG01G,SAAS,CAACxrG,IAAD,CAAT,IAAmBwrG,SAAS,CAACm5C,MAAM,CAAC3kJ,IAAD,EAAOyhK,UAAP,CAAP,CAA5B,GAAyD9c,MAAM,CAAC3kJ,IAAD,EAAOyhK,UAAP,CAA/D,GAAoFzhK,IAAlG;AACA,QAAMohB,KAAK,GAAG4gJ,eAAe,CAAC34J,OAAhB,CAAwBvT,KAAxB,CAAd;;AACA,QAAIsrB,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd+sB,MAAAA,GAAG,CAACpzC,IAAJ,CAASqmB,KAAT;AACH;;AACD,WAAO+sB,GAAP;AACH,GAPM,EAOJ,EAPI,CAAP;AAQH,CAZD;AAaA;AACA;AACA;;;AACA,IAAMw2G,MAAM,GAAG,SAATA,MAAS,CAACvxC,QAAD,EAAWua,KAAX,EAAqB;AAChC,MAAI,CAACniB,SAAS,CAAC4H,QAAD,CAAd,EAA0B;AACtB,WAAO,IAAP;AACH;;AACD,MAAI,CAAC5H,SAAS,CAACmiB,KAAD,CAAV,IAAqB,CAAC35C,QAAQ,CAACo/B,QAAD,CAAlC,EAA8C;AAC1C,WAAOA,QAAP;AACH,GAN+B,CAOhC;;;AACA,MAAM6uD,SAAS,GAAGxB,+DAAQ,CAAC9yC,KAAD,CAA1B;AACA,SAAOs0C,SAAS,CAAC7uD,QAAD,CAAhB;AACH,CAVD;AAWA;AACA;AACA;;;AACA,IAAM8uD,YAAY,GAAG,SAAfA,YAAe,CAACj8G,IAAD,EAAU;AAC3B,MAAImtD,QAAJ;;AACA,MAAI5H,SAAS,CAACvlD,IAAI,CAACnwD,KAAN,CAAb,EAA2B;AACvB,QAAMpS,IAAI,IAAIuiE,IAAI,CAACk8G,WAAT,4MAAyBl8G,IAAI,CAACviE,IAA9B,EAAV;AACA0vH,IAAAA,QAAQ,GAAG1vH,IAAI,CAAC0X,IAAL,CAAU,UAAAlD,OAAO;AAAA,aAAIysJ,MAAM,CAACzsJ,OAAD,EAAU+tD,IAAI,CAACw7G,UAAf,CAAN,KAAqCx7G,IAAI,CAACnwD,KAA9C;AAAA,KAAjB,CAAX;AACA,WAAO;AACHs9G,MAAAA,QAAQ,EAAEA,QADP;AAEHj2F,MAAAA,OAAO,EAAE8oC,IAAI,CAACviE,IAAL,CAAU2lB,OAAV,CAAkB+pG,QAAlB,CAFN;AAGHr2F,MAAAA,QAAQ,EAAEkpC,IAAI,CAACviE,IAAL,CAAU2lB,OAAV,CAAkB+pG,QAAlB;AAHP,KAAP;AAKH,GARD,MASK,IAAIntD,IAAI,CAAC7kC,KAAT,EAAgB;AACjBgyF,IAAAA,QAAQ,GAAGntD,IAAI,CAACviE,IAAL,CAAUuiE,IAAI,CAAC7kC,KAAf,CAAX;AACA,WAAO;AACHgyF,MAAAA,QAAQ,EAAEntD,IAAI,CAACviE,IAAL,CAAUuiE,IAAI,CAAC7kC,KAAf,CADP;AAEHjE,MAAAA,OAAO,EAAE8oC,IAAI,CAAC7kC,KAFX;AAGHrE,MAAAA,QAAQ,EAAEkpC,IAAI,CAAC7kC;AAHZ,KAAP;AAKH;;AACD,SAAO;AACHgyF,IAAAA,QAAQ,EAAEntD,IAAI,CAACk8G,WADZ;AAEHhlJ,IAAAA,OAAO,EAAE,CAAC,CAFP;AAGHJ,IAAAA,QAAQ,EAAE,CAAC;AAHR,GAAP;AAKH,CAxBD;AAyBA;AACA;AACA;;;AACA,IAAMqlJ,aAAa,GAAG,SAAhBA,aAAgB,CAACC,IAAD,EAAOC,SAAP,EAAqB;AACvC,OAAK,IAAI7mD,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG4mD,IAAI,CAACpnK,MAA7B,EAAqCwgH,GAAG,EAAxC,EAA4C;AACxC,QAAI4mD,IAAI,CAAChwE,MAAL,CAAYopB,GAAZ,MAAqB6mD,SAAzB,EAAoC;AAChC,aAAO,KAAP;AACH;AACJ;;AACD,SAAO,IAAP;AACH,CAPD;AAQA;AACA;AACA;;;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAC7+K,IAAD,EAAO8+K,UAAP,EAAmBL,WAAnB,EAAmC;AACnD,MAAIp1I,MAAM,GAAGrpC,IAAb;;AACA,MAAIy+K,WAAJ,EAAiB;AACbp1I,IAAAA,MAAM,GAAG,CAACo1I,WAAD,EAAc/4E,MAAd,CAAqBr8D,MAArB,CAAT;AACH;;AACD,SAAOA,MAAM,CAAC5sB,KAAP,CAAaqiK,UAAb,EAAyBp5E,MAAzB,CAAgCr8D,MAAM,CAAC5sB,KAAP,CAAa,CAAb,EAAgBqiK,UAAhB,CAAhC,CAAP;AACH,CAND;AAOA;AACA;AACA;;;AACA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACtkK,IAAD,EAAOkkK,IAAP,EAAaK,UAAb,EAA4B;AAC1C,MAAI,CAACl3D,SAAS,CAACrtG,IAAD,CAAd,EAAsB;AAClB,WAAO,KAAP;AACH;;AACD,MAAIwkK,IAAI,GAAG7oF,MAAM,CAAC37E,IAAD,CAAjB;;AACA,MAAIukK,UAAJ,EAAgB;AACZC,IAAAA,IAAI,GAAGA,IAAI,CAAC1iK,WAAL,EAAP;AACH;;AACD,SAAO0iK,IAAI,CAACt5J,OAAL,CAAag5J,IAAb,MAAuB,CAA9B;AACH,CATD;AAUA;AACA;AACA;;;AACA,IAAMO,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAC9kK,CAAD,EAAI2+C,CAAJ,EAAU;AAC/B,MAAI,CAACwtD,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,SAAO5/G,QAAQ,CAACu4K,gBAAT,CAA0B9kK,CAA1B,EAA6B2+C,CAA7B,CAAP;AACH,CALD;AAMA;AACA;AACA;AACA;AACA;;;AACA,IAAMomH,QAAQ,GAAG,SAAXA,QAAW,CAACl+H,GAAD,EAAMm+H,KAAN,EAAgB;AAC7B,MAAI,CAACt3D,SAAS,CAAC7mE,GAAD,CAAd,EAAqB;AACjB,WAAO,KAAP;AACH;;AACD,SAAOm+H,KAAK,CAAC7pF,KAAN,CAAY,UAAA1qC,IAAI;AAAA,WAAI5J,GAAG,CAAChkC,cAAJ,CAAmB4tC,IAAnB,CAAJ;AAAA,GAAhB,CAAP;AACH,CALD;AAMA;AACA;AACA;AACA;AACA;;;AACA,IAAMw0H,WAAW,GAAG,SAAdA,WAAc,CAAC7qK,OAAD;AAAA,SAAaA,OAAO,CAAC42B,SAAR,CAAkB5uB,QAAlB,CAA2B,cAA3B,CAAb;AAAA,CAApB;AACA;AACA;AACA;;;AACA,IAAM6pD,IAAI,GAAG,SAAPA,IAAO,CAACt+D,CAAD,EAAO,CAAG,CAAvB;AACA;AACA;AACA;AACA;;;AACA,IAAMyjC,OAAO,GAAG,SAAVA,OAAU,CAACh3B,OAAD,EAAUu3B,QAAV,EAAuB;AACnC,MAAMuzI,OAAO,GAAG9qK,OAAO,CAACg3B,OAAR,IAAmBh3B,OAAO,CAACi3B,iBAA3B,IAAgDj3B,OAAO,CAACk3B,qBAAxE;;AACA,MAAI,CAAC4zI,OAAL,EAAc;AACV,WAAO,KAAP;AACH;;AACD,SAAOA,OAAO,CAAC9uE,IAAR,CAAah8F,OAAb,EAAsBu3B,QAAtB,CAAP;AACH,CAND;AAOA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMR,OAAO,GAAG,SAAVA,OAAU,CAAC/2B,OAAD,EAAUu3B,QAAV,EAAuB;AACnC,MAAIp0B,MAAM,GAAGnD,OAAb;;AACA,SAAOmD,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACm0B,QAAP,KAAoB,CAA9C,EAAiD;AAC7C,QAAIN,OAAO,CAAC7zB,MAAD,EAASo0B,QAAT,CAAX,EAA+B;AAC3B,aAAOp0B,MAAP;AACH;;AACDA,IAAAA,MAAM,GAAGA,MAAM,CAACi0B,aAAP,IAAwBj0B,MAAM,CAACk0B,UAAxC;AACH;;AACD,SAAO,IAAP;AACH,CATD;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM0zI,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD,EAA2B;AAAA,MAArBj+H,YAAqB,uEAAN,CAAM;AAC3C,MAAMk+H,eAAe,GAAGl0C,MAAM,CAACi0C,GAAD,CAA9B;AACA,SAAO50I,KAAK,CAAC60I,eAAD,CAAL,GAAyBl+H,YAAzB,GAAwCk+H,eAA/C;AACH,CAHD;AAIA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACjuK,IAAD,EAAOrG,MAAP,EAAespH,QAAf,EAA4B;AAC3C,SAAOjjH,IAAI,CAACsC,aAAL,CAAmBzI,QAAnB,CAA4BF,MAA5B,KAAwCspH,QAAQ,IAAIA,QAAQ,CAACK,YAAT,CAAsBzpH,QAAtB,CAA+BF,MAA/B,CAA3D;AACH,CAFD;AAGA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMu0K,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACjiJ,KAAD,EAAW;AACxC,SAAO,CAACA,KAAK,IAAI,EAAV,EAAc3gB,KAAd,CAAoB,GAApB,EAAyBxF,MAAzB,GAAkC,CAAzC;AACH,CAFD;AAGA;AACA;AACA;AACA;AACA;;;AACA,IAAMqoK,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,MAAD,EAASC,gBAAT,EAA8B;AACvD,MAAI,CAACh4D,SAAS,CAAC+3D,MAAD,CAAV,IAAsBA,MAAM,CAAC3/K,QAAP,CAAgBqX,MAAhB,KAA2B,CAArD,EAAwD;AACpD,WAAO,EAAP;AACH;;AACD,MAAIq2B,WAAW,GAAGiyI,MAAM,CAAC3/K,QAAzB;;AACA,MAAI4nH,SAAS,CAACg4D,gBAAD,CAAb,EAAiC;AAC7BlyI,IAAAA,WAAW,GAAGA,WAAW,CAAC3sC,MAAZ,CAAmB,UAAA8+K,UAAU;AAAA,aAAID,gBAAgB,CAACC,UAAU,CAACzjK,IAAZ,CAApB;AAAA,KAA7B,CAAd;AACH;;AACDsxB,EAAAA,WAAW,CAAC9lC,OAAZ,CAAoB,UAAAutF,KAAK;AAAA,WAAIznD,WAAW,GAAGA,WAAW,CAAC83D,MAAZ,CAAmBk6E,oBAAoB,CAACvqF,KAAD,EAAQyqF,gBAAR,CAAvC,CAAlB;AAAA,GAAzB;AACA,SAAOlyI,WAAP;AACH,CAVD;AAWA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM2wI,SAAS,GAAG,SAAZA,SAAY,OAA6BR,UAA7B,EAA4C;AAAA,MAAzCruD,QAAyC,QAAzCA,QAAyC;AAAA,MAA/BhyF,KAA+B,QAA/BA,KAA+B;AAAA,MAAxBjnB,KAAwB,QAAxBA,KAAwB;AAC1D,MAAMupK,MAAM,GAAG5+J,KAAK,CAACusC,OAAN,CAAcowH,UAAd,IAA4BA,UAA5B,GAAyC,CAACA,UAAD,CAAxD,CAD0D,CAE1D;;AACA,MAAMkC,UAAU,GAAGn4D,SAAS,CAACrxG,KAAD,CAAT,GAAmBA,KAAnB,GAA2BkpK,wBAAwB,CAACjiJ,KAAD,CAAtE,CAH0D,CAI1D;;AACA,MAAMwiJ,eAAe,GAAGz1I,IAAI,CAACD,GAAL,CAASy1I,UAAT,EAAqBD,MAAM,CAACzoK,MAAP,GAAgB,CAArC,CAAxB;AACA,MAAM0yH,KAAK,GAAG+1C,MAAM,CAACE,eAAD,CAApB;AACA,SAAOnD,+DAAQ,CAAC9yC,KAAD,CAAR,CAAgBva,QAAhB,CAAP;AACH,CARD;AASA;AACA;AACA;AACA;;;AACA,IAAMqc,YAAY,GAAG,SAAfA,YAAe,CAAChsI,SAAD,EAAYsK,IAAZ,EAAqB;AACtC,MAAMwvH,YAAY,GAAG;AACjB,yBAAc95H,SAAd,QADiB;AAEjB,0BAAeA,SAAf,QAFiB;AAGjB,yBAAcA,SAAd;AAHiB,GAArB;AAKA,SAAO85H,YAAY,CAACxvH,IAAD,CAAnB;AACH,CAPD;AAQA;AACA;AACA;AACA;;;AACA,IAAM2hI,eAAe,GAAG,SAAlBA,eAAkB,CAAC1gB,OAAD,EAAa;AACjC,MAAMwO,eAAe,GAAG;AACpB,aAAS,cADW;AAEpB,cAAU,cAFU;AAGpB,aAAS,cAHW;AAIpB,YAAQ;AAJY,GAAxB;AAMA,SAAOA,eAAe,CAACxO,OAAD,CAAtB;AACH,CARD;AASA;AACA;AACA;AACA;;;AACA,IAAM2gB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAClsI,SAAD,EAAYmpH,QAAZ,EAAyB;AAC9C,MAAMgjB,gBAAgB,GAAG;AACrB,yBAAcnsI,SAAd,WADqB;AAErB,wBAAaA,SAAb,UAFqB;AAGrB,2BAAgBA,SAAhB;AAHqB,GAAzB;AAKA,SAAOmsI,gBAAgB,CAAChjB,QAAD,CAAvB;AACH,CAPD;AASA;AACA;AACA;;;IACMi3D;MAAAA;AACF,gCAAYl2D,YAAZ,EAA0BrjH,QAA1B,EAAoC;AAAA;;AAChC,WAAKqjH,YAAL,GAAoBA,YAApB;AACA,WAAKwyB,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA,WAAK0rK,OAAL,GAAe,IAAI1rK,wDAAJ,EAAf;AACA,WAAK2rK,UAAL,GAAkB,IAAI3rK,wDAAJ,EAAlB;AACA,WAAK4rK,cAAL,GAAsB,IAAtB;AACA,WAAKC,UAAL,GAAkB,EAAlB;AACA,WAAKC,cAAL,GAAsB,EAAtB;AACA,WAAKC,YAAL,GAAoB,EAApB;AACA,WAAKpoI,SAAL,GAAiB4xE,YAAY,CAACW,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;AACA,WAAKhkH,QAAL,GAAgBA,QAAhB;AACH;;;;WACD,eAAgB;AACZ,eAAO,KAAK25K,UAAZ;AACH;WACD,aAAcG,SAAd,EAAyB;AACrB,aAAKH,UAAL,GAAkBG,SAAS,IAAI,EAA/B;AACH;;;WACD,eAAY;AACR,eAAO,KAAKn8J,KAAL,CAAWxQ,aAAX,CAAyB3B,KAAhC;AACH;;;WAKD,eAAkB;AACd,eAAO,KAAKquK,YAAZ;AACH;WAND,aAAgBhmK,IAAhB,EAAsB;AAClB,aAAKgmK,YAAL,GAAoBhmK,IAAI,IAAI,EAA5B;AACA,aAAKkmK,YAAL;AACH;;;WAID,eAAmB;AACf,eAAO,KAAKtmK,IAAL,KAAc,UAAd,GAA2B,KAAKq7G,SAAhC,GAA4C,IAAnD;AACH;;;aACD,oBAAW;AAAA;;AACP,aAAKk3B,8BAAL,GAAsC,KAAK3iC,YAAL,CACjCv5G,OADiC,CACzBhP,SADyB,CACf;AAAA,cAAGkpH,GAAH,SAAGA,GAAH;AAAA,iBAAa,KAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA5C;AAAA,SADe,CAAtC;AAEH;;;aACD,qBAAYl6G,OAAZ,EAAqB;AACjB,YAAIkwK,iBAAJ;;AACA,YAAI,KAAKr8J,KAAL,KAAe7T,OAAO,CAACgwK,SAAR,IAAqBhwK,OAAO,CAACmwK,aAA5C,CAAJ,EAAgE;AAC5D,cAAInwK,OAAO,CAACgwK,SAAR,IAAqBhwK,OAAO,CAACgwK,SAAR,CAAkB7vI,aAA3C,EAA0D;AACtD,gBAAI,KAAK2vI,cAAL,KAAwB9vK,OAAO,CAACgwK,SAAR,CAAkB7vI,aAA9C,EAA6D;AACzD+vI,cAAAA,iBAAiB,GAAG,KAAKJ,cAAzB;AACH,aAFD,MAGK;AACDI,cAAAA,iBAAiB,GAAGlwK,OAAO,CAACgwK,SAAR,CAAkB5vI,YAAlB,IAAkC,EAAtD;AACH;AACJ,WAPD,MAQK;AACD8vI,YAAAA,iBAAiB,GAAG,KAAKJ,cAAzB;AACH;;AACD,cAAMM,UAAU,GAAG,KAAKv8J,KAAL,CAAWxQ,aAAX,CAAyByiJ,cAA5C;AACA,cAAMuqB,UAAU,GAAGH,iBAAiB,CAACrpK,MAAlB,KAA6BupK,UAAhD;AACA,eAAKE,eAAL,CAAqB,KAAKH,aAAL,GAAqBlD,UAAU,CAAC,KAAK+C,SAAN,EAAiB,KAAKG,aAAtB,CAA/B,GAAsE,KAAKH,SAAhG;;AACA,cAAI,KAAKG,aAAT,EAAwB;AACpB,iBAAKI,iBAAL,CAAuB,KAAKP,SAAL,CAAenpK,MAAtC,EAA8C,KAAKspK,aAAL,CAAmBtpK,MAAjE;AACH,WAFD,MAGK,IAAIwpK,UAAJ,EAAgB;AACjB,iBAAKE,iBAAL,CAAuB,KAAKP,SAAL,CAAenpK,MAAtC,EAA8C,KAAKmpK,SAAL,CAAenpK,MAA7D;AACH,WAFI,MAGA;AACD,iBAAK0pK,iBAAL,CAAuBH,UAAvB,EAAmCA,UAAnC;AACH;;AACD,eAAKN,cAAL,GAAsB,KAAKE,SAA3B;AACH;AACJ;;;aACD,uBAAc;AACV,YAAI,KAAK9zB,8BAAT,EAAyC;AACrC,eAAKA,8BAAL,CAAoC/qJ,WAApC;AACH;AACJ;;;aACD,yBAAgB4Y,IAAhB,EAAsB;AAClB,YAAI8rG,oFAAmB,EAAvB,EAA2B;AACvB,eAAK3/G,QAAL,CAAc4tC,WAAd,CAA0B,KAAKjwB,KAAL,CAAWxQ,aAArC,EAAoD,OAApD,EAA6D0G,IAA7D;AACH;AACJ;;;aACD,2BAAkBsiC,KAAlB,EAAyBC,GAAzB,EAA8B;AAC1B,YAAIupE,oFAAmB,MAAM,KAAKhiG,KAAL,CAAWxQ,aAAX,KAA6BpN,QAAQ,CAACorD,aAAnE,EAAkF;AAC9E,cAAI;AACA,iBAAKxtC,KAAL,CAAWxQ,aAAX,CAAyBkjJ,iBAAzB,CAA2Cl6G,KAA3C,EAAkDC,GAAlD;AACH,WAFD,CAGA,OAAOlyC,CAAP,EAAU,CACN;AACH;AACJ;AACJ;;;aACD,qBAAYrJ,KAAZ,EAAmB;AACf,YAAM2Q,KAAK,GAAG3Q,KAAK,CAAC2J,MAAN,CAAagH,KAA3B;;AACA,YAAIA,KAAK,KAAK,KAAKsuK,SAAnB,EAA8B;AAC1B,eAAKF,cAAL,GAAsBpuK,KAAtB;AACA,eAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsBlJ,KAAtB;AACH;AACJ;;;aACD,qBAAY3Q,KAAZ,EAAmB;AACf,aAAKqxD,OAAL,CAAax3C,IAAb,CAAkB7Z,KAAlB;AACH;;;aACD,oBAAWA,KAAX,EAAkB;AACd,aAAKuxD,MAAL,CAAY13C,IAAZ,CAAiB7Z,KAAjB;AACH;;;aACD,uBAAcA,KAAd,EAAqB;AACjB,YAAM+9F,OAAO,GAAG/9F,KAAK,CAAC+9F,OAAtB;AACA,YAAM3iF,IAAI,GAAG,CAAC2pG,yEAAD,EAAeA,2EAAf,EAA+BA,2EAA/B,EAA+CA,4EAA/C,EAAgEA,uEAAhE,EACTA,wEADS,EACIA,wEADJ,EACiBA,2EADjB,EACiCA,sEADjC,EAC4CA,qEAD5C,CAAb;;AAEA,YAAI3pG,IAAI,CAAC8I,OAAL,CAAa65E,OAAb,IAAwB,CAAC,CAA7B,EAAgC;AAC5B,eAAK6gF,UAAL,CAAgB/kK,IAAhB,CAAqB7Z,KAArB;AACH;AACJ;;;aACD,iBAAQ;AACJ,YAAI8kH,oFAAmB,EAAvB,EAA2B;AACvB,eAAKhiG,KAAL,CAAWxQ,aAAX,CAAyBiwC,KAAzB;AACH;AACJ;;;aACD,gBAAO;AACH,YAAIuiE,oFAAmB,EAAvB,EAA2B;AACvB,eAAKhiG,KAAL,CAAWxQ,aAAX,CAAyB+sF,IAAzB;AACH;AACJ;;;aACD,wBAAe;AACX,YAAMqgF,QAAQ,GAAG,SAAXA,QAAW,CAAA/mK,CAAC;AAAA,iBAAIA,CAAC,GAAGA,CAAC,CAAC7C,MAAL,GAAc,CAAnB;AAAA,SAAlB;;AACA,YAAMgN,KAAK,GAAG,KAAKA,KAAL,CAAWxQ,aAAzB;AACA,YAAMqtK,iBAAiB,GAAGD,QAAQ,CAAC,KAAKxkF,WAAN,CAAlC;AACA,YAAM0kF,UAAU,GAAGF,QAAQ,CAAC,KAAK/uK,KAAN,CAA3B;AACA,YAAM/H,IAAI,GAAGogC,IAAI,CAACF,GAAL,CAAS62I,iBAAT,EAA4BC,UAA5B,EAAwC,CAAxC,CAAb;AACA,aAAKz6K,QAAL,CAAc8C,YAAd,CAA2B6a,KAA3B,EAAkC,MAAlC,EAA0Cla,IAAI,CAACT,QAAL,EAA1C;AACH;;;;;;AAELu2K,EAAAA,kBAAkB,CAACj0I,IAAnB;AAAA,qBAAgHi0I,kBAAhH,EAAsGr+K,gEAAtG,CAAoJkE,8EAApJ,GAAsGlE,gEAAtG,CAAuLA,qDAAvL;AAAA;;AACAq+K,EAAAA,kBAAkB,CAACvxI,IAAnB,kBADsG9sC,gEACtG;AAAA,UAAoGq+K,kBAApG;AAAA;AAAA;AAAA;AADsGr+K,QAAAA,0DACtG;AAAA;;AAAA;AAAA;;AADsGA,QAAAA,6DACtG,MADsGA,0DACtG;AAAA;AAAA;AAAA;AAAA;AAAA;AADsGA,QAAAA,0DACtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eADsGA,mEACtG;AAAA;AAAA;AAAA;AAAA;AAAA;AADsGA,QAAAA,6DAE9F,kBADR;AADsGA,QAAAA,yDAS1F;AAAA,iBAAS,uBAAT;AAAA;AAAA,iBACW,yBADX;AAAA,UARZ;AADsGA,QAAAA,2DAE9F,EADR;AAAA;;AAAA;AADsGA,QAAAA,yDAQ1F,iBAPZ;AADsGA,QAAAA,yDAI1F,gIAJ0FA,8DAI1F,yDAHZ;AADsGA,QAAAA,0DAgB1F,6SAfZ;AAAA;AAAA;AAAA,iBA2B2C+6K,0FA3B3C;AAAA;AAAA;SAhIMsD;;;AA4JN;AAAA;AAAA;AA6EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMmB;MAAAA,kOACF,+BAAYvsJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELusJ,EAAAA,qBAAqB,CAACp1I,IAAtB;AAAA,qBAAmHo1I,qBAAnH,EA1IsGx/K,gEA0ItG,CAA0JA,uDAA1J;AAAA;;AACAw/K,EAAAA,qBAAqB,CAAC50I,IAAtB,kBA3IsG5qC,gEA2ItG;AAAA,UAAuGw/K,qBAAvG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,oOACF,iCAAYxsJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELwsJ,EAAAA,uBAAuB,CAACr1I,IAAxB;AAAA,qBAAqHq1I,uBAArH,EApLsGz/K,gEAoLtG,CAA8JA,uDAA9J;AAAA;;AACAy/K,EAAAA,uBAAuB,CAAC70I,IAAxB,kBArLsG5qC,gEAqLtG;AAAA,UAAyGy/K,uBAAzG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,oOACF,iCAAYzsJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELysJ,EAAAA,uBAAuB,CAACt1I,IAAxB;AAAA,qBAAqHs1I,uBAArH,EA9NsG1/K,gEA8NtG,CAA8JA,uDAA9J;AAAA;;AACA0/K,EAAAA,uBAAuB,CAAC90I,IAAxB,kBA/NsG5qC,gEA+NtG;AAAA,UAAyG0/K,uBAAzG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,mOACF,gCAAY1sJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAEL0sJ,EAAAA,sBAAsB,CAACv1I,IAAvB;AAAA,qBAAoHu1I,sBAApH,EA9QsG3/K,gEA8QtG,CAA4JA,uDAA5J;AAAA;;AACA2/K,EAAAA,sBAAsB,CAAC/0I,IAAvB,kBA/QsG5qC,gEA+QtG;AAAA,UAAwG2/K,sBAAxG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,wOACF,qCAAY3sJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAEL2sJ,EAAAA,2BAA2B,CAACx1I,IAA5B;AAAA,qBAAyHw1I,2BAAzH,EA9TsG5/K,gEA8TtG,CAAsKA,uDAAtK;AAAA;;AACA4/K,EAAAA,2BAA2B,CAACh1I,IAA5B,kBA/TsG5qC,gEA+TtG;AAAA,UAA6G4/K,2BAA7G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;;;IACMrnC;MAAAA;AACF,gCAAc;AAAA;;AACV,WAAKsnC,QAAL,GAAgB,IAAIjtK,wDAAJ,EAAhB;AACA,WAAK89B,QAAL,GAAgB,IAAI99B,wDAAJ,EAAhB;AACA,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA,WAAKq6H,KAAL,GAAa,CAAb;AACA,WAAKsvC,eAAL,GAAuB,EAAvB;AACH;;;;aACD,oBAAW;AACP,eAAO,KAAKtvC,KAAZ;AACH;;;aACD,oBAAWrxG,KAAX,EAAkB;AACd,eAAOoqF,SAAS,CAAC,KAAKu2D,eAAL,CAAqB3mK,IAArB,CAA0B,UAAAo/B,OAAO;AAAA,iBAAIA,OAAO,KAAKpZ,KAAhB;AAAA,SAAjC,CAAD,CAAhB;AACH;;;aACD,mBAAUA,KAAV,EAAiB;AACb,eAAOA,KAAK,KAAK,KAAKjE,OAAtB;AACH;;;aACD,eAAMiE,KAAN,EAAa;AACT,YAAI,KAAKgV,SAAL,CAAehV,KAAf,CAAJ,EAA2B;AACvB;AACH;;AACD,aAAKjE,OAAL,GAAeiE,KAAf;AACA,aAAKo1B,OAAL,CAAax3C,IAAb,CAAkBoiB,KAAlB;AACH;;;aACD,gBAAOA,KAAP,EAAc;AACV,YAAI,KAAKuwG,UAAL,CAAgBvwG,KAAhB,CAAJ,EAA4B;AACxB;AACH;;AACD,aAAK2gJ,eAAL,GAAuB,CAAC3gJ,KAAD,CAAvB;AACA,aAAKjE,OAAL,GAAeiE,KAAf;AACA,aAAKikJ,QAAL,CAAcrmK,IAAd,CAAmB;AACfsmK,UAAAA,OAAO,EAAE,CAAClkJ,KAAD,CADM;AAEfmkJ,UAAAA,YAAY,EAAE/5D,SAAS,CAACpqF,KAAD;AAFR,SAAnB;AAIH;;;aACD,aAAIA,KAAJ,EAAW;AACP,YAAI,KAAKuwG,UAAL,CAAgBvwG,KAAhB,CAAJ,EAA4B;AACxB;AACH;;AACD,aAAK2gJ,eAAL,CAAqBhnK,IAArB,CAA0BqmB,KAA1B;AACA,aAAKjE,OAAL,GAAeiE,KAAf;AACA,aAAK8U,QAAL,CAAcl3B,IAAd,CAAmB;AACfwmK,UAAAA,KAAK,EAAEpkJ,KADQ;AAEfkkJ,UAAAA,OAAO,EAAE,KAAKvD,eAAL,CAAqB5hK,KAArB;AAFM,SAAnB;AAIH;;;aACD,kBAASihB,KAAT,EAAgB;AACZ,YAAI,CAAC,KAAKuwG,UAAL,CAAgBvwG,KAAhB,CAAL,EAA6B;AACzB;AACH;;AACD,YAAMhqB,QAAQ,GAAG,KAAK2qK,eAAL,CAAqB14J,OAArB,CAA6B+X,KAA7B,CAAjB;AACA,aAAK2gJ,eAAL,CAAqB1gI,MAArB,CAA4BjqC,QAA5B,EAAsC,CAAtC;AACA,aAAK+lB,OAAL,GAAeiE,KAAf;AACA,aAAK8U,QAAL,CAAcl3B,IAAd,CAAmB;AACfsmK,UAAAA,OAAO,EAAE,KAAKvD,eAAL,CAAqB5hK,KAArB,EADM;AAEfslK,UAAAA,OAAO,EAAErkJ;AAFM,SAAnB;AAIH;;;aACD,gBAAOA,KAAP,EAAc;AACV,YAAMmkJ,YAAY,GAAG/5D,SAAS,CAACpqF,KAAD,CAAT,IAAoB,CAAC,KAAKuwG,UAAL,CAAgBvwG,KAAhB,CAA1C;AACA,aAAK2gJ,eAAL,GAAuB,CAAC3gJ,KAAD,CAAvB;AACA,aAAKjE,OAAL,GAAeiE,KAAf;AACA,aAAK8U,QAAL,CAAcl3B,IAAd,CAAmB;AACfsmK,UAAAA,OAAO,EAAE,CAAClkJ,KAAD,CADM;AAEfmkJ,UAAAA,YAAY,EAAEA;AAFC,SAAnB;AAIH;;;aACD,wBAAenkJ,KAAf,EAAsB;AAClB,aAAK2gJ,eAAL,GAAuB3gJ,KAAK,YAAYtc,KAAjB,GAAyBsc,KAAzB,GAAiC,CAACA,KAAD,CAAxD;AACA,aAAKjE,OAAL,GAAe,KAAK4kJ,eAAL,CAAqB,KAAKA,eAAL,CAAqB9mK,MAArB,GAA8B,CAAnD,CAAf;AACH;;;WACD,eAAe;AACX,eAAO,KAAK8mK,eAAL,CAAqB5hK,KAArB,EAAP;AACH;;;WACD,eAAc;AACV,eAAO,KAAK0xG,YAAZ;AACH;WACD,aAAYzwF,KAAZ,EAAmB;AACf,YAAI,KAAKywF,YAAL,KAAsBzwF,KAA1B,EAAiC;AAC7B,eAAKywF,YAAL,GAAoBzwF,KAApB;AACA,eAAKo1B,OAAL,CAAax3C,IAAb,CAAkBoiB,KAAlB;AACH;AACJ;;;;;;AAEL28G,EAAAA,gBAAgB,CAACnuG,IAAjB;AAAA,qBAA8GmuG,gBAA9G;AAAA;;AACAA,EAAAA,gBAAgB,CAAChuG,KAAjB,kBA/ZsGvqC,iEA+ZtG;AAAA,WAAkHu4I,gBAAlH;AAAA,aAAkHA,gBAAlH;AAAA;SArFMA;;;AAsFN;AAAA;AAAA;AAIA;AACA;AACA;;;AACA,IAAIpqB,gBAAgB;AACpB,GAAC,UAAUA,gBAAV,EAA4B;AACzB;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,WAAD,CAAhB,GAAgC,CAAjC,CAAhB,GAAsD,WAAtD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,MAAD,CAAhB,GAA2B,CAA5B,CAAhB,GAAiD,MAAjD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,OAAD,CAAhB,GAA4B,CAA7B,CAAhB,GAAkD,OAAlD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,OAAD,CAAhB,GAA4B,CAA7B,CAAhB,GAAkD,OAAlD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,KAAD,CAAhB,GAA0B,CAA3B,CAAhB,GAAgD,KAAhD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,KAAD,CAAhB,GAA0B,CAA3B,CAAhB,GAAgD,KAAhD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,QAAD,CAAhB,GAA6B,CAA9B,CAAhB,GAAmD,QAAnD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,WAAD,CAAhB,GAAgC,CAAjC,CAAhB,GAAsD,WAAtD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,MAAD,CAAhB,GAA2B,CAA5B,CAAhB,GAAiD,MAAjD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,KAAD,CAAhB,GAA0B,CAA3B,CAAhB,GAAgD,KAAhD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,IAAD,CAAhB,GAAyB,EAA1B,CAAhB,GAAgD,IAAhD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,MAAD,CAAhB,GAA2B,EAA5B,CAAhB,GAAkD,MAAlD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,MAAD,CAAhB,GAA2B,EAA5B,CAAhB,GAAkD,MAAlD;AACAA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,OAAD,CAAhB,GAA4B,EAA7B,CAAhB,GAAmD,OAAnD;AACH,GAhBD,EAgBGA,gBAAgB,KAAKA,gBAAgB,GAAG,EAAxB,CAhBnB,CADoB;;AAAA,SAAhBA,gBAAgB;AAAA,IAApB;;AAmBA;AACA;AACA;IACM+xD;MAAAA;AACF,2BAAc;AAAA;;AACV,WAAKC,OAAL,GAAe,KAAf;AACA,WAAKC,YAAL,GAAoB,EAApB;AACH;;;;WASD,eAAW;AACP,YAAI,KAAKD,OAAT,EAAkB;AACd,iBAAO,KAAKE,SAAZ;AACH;;AACD,eAAO,KAAKvqE,KAAZ;AACH;AACD;AACJ;AACA;AACA;;WAjBI,aAAS53G,IAAT,EAAe;AACX,aAAK43G,KAAL,GAAa53G,IAAb;AACA,aAAKiiL,OAAL,GAAe,KAAKG,SAAL,CAAepiL,IAAf,CAAf;;AACA,YAAI,KAAKiiL,OAAT,EAAkB;AACd,eAAKC,YAAL,GAAoB,KAAKG,eAAL,CAAqBriL,IAArB,CAApB;AACA,eAAKmiL,SAAL,GAAiB,KAAKG,OAAL,CAAatiL,IAAb,CAAjB;AACH;AACJ;;;WAWD,eAAiB;AACb,YAAI,CAAC8nH,SAAS,CAAC,KAAK9nH,IAAN,CAAV,IAAyB,KAAKA,IAAL,CAAUuX,MAAV,KAAqB,CAAlD,EAAqD;AACjD,iBAAO,CAAP;AACH;;AACD,YAAM4E,KAAK,GAAG,KAAK8lK,OAAL,GAAe,KAAKE,SAAL,CAAelhL,MAAf,CAAsB,UAAAqb,IAAI;AAAA,iBAAI,CAACA,IAAI,CAACisB,MAAV;AAAA,SAA1B,CAAf,GAA6D,KAAKvoC,IAAhF;AACA,eAAOmc,KAAK,CAAC5E,MAAb;AACH;AACD;AACJ;AACA;AACA;;;;aACI,mBAAUvX,IAAV,EAAgB;AACZ;AACA;AACA,eAAQ8nH,SAAS,CAAC9nH,IAAD,CAAT,IAAmBA,IAAI,CAACuX,MAAL,KAAgB,CAApC,IAA0CuwG,SAAS,CAAC9nH,IAAI,CAAC,CAAD,CAAL,CAAnD,IAAgEm/K,QAAQ,CAACn/K,IAAI,CAAC,CAAD,CAAL,EAAU,CAAC,YAAD,EAAe,OAAf,EAAwB,OAAxB,EAAiC,OAAjC,CAAV,CAA/E;AACH;AACD;AACJ;AACA;AACA;;;;aACI,yBAAgBA,IAAhB,EAAsB;AAClB,YAAIkiL,YAAY,GAAG,EAAnB;;AACA,aAAK,IAAIhlI,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIl9C,IAAI,CAACuX,MAAL,GAAc,CAAnC,EAAsC2lC,CAAC,EAAvC,EAA2C;AACvCglI,UAAAA,YAAY,CAAChlI,CAAD,CAAZ,GAAkB,CAACglI,YAAY,CAAChlI,CAAC,GAAG,CAAL,CAAZ,IAAuB,CAAxB,IAA6Bl9C,IAAI,CAACk9C,CAAD,CAAJ,CAAQ/gC,KAAR,CAAc5E,MAA7D;AACH;;AACD,eAAO2qK,YAAP;AACH;AACD;AACJ;AACA;AACA;;;;aACI,gBAAOxiD,SAAP,EAAkB;AACd,YAAIr2F,MAAM,GAAG,EAAb;;AACA,YAAI,KAAK+4I,SAAL,CAAe,KAAKpiL,IAApB,CAAJ,EAA+B;AAC3B,eAAK,IAAIk9C,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI,KAAKglI,YAAL,CAAkB3qK,MAAlB,GAA2B,CAAhD,EAAmD2lC,CAAC,EAApD,EAAwD;AACpD,gBAAM1R,QAAO,GAAG,KAAKxrC,IAAL,CAAUk9C,CAAV,EAAa/gC,KAAb,CAAmBlb,MAAnB,CAA0By+H,SAA1B,CAAhB;;AACA,gBAAIl0F,QAAJ,EAAa;AACTnC,cAAAA,MAAM,GAAGA,MAAM,CAACq8D,MAAP,CAAcl6D,QAAd,CAAT;AACH;AACJ;AACJ,SAPD,MAQK;AACDnC,UAAAA,MAAM,GAAG,KAAKrpC,IAAL,CAAUiB,MAAV,CAAiBy+H,SAAjB,CAAT;AACH;;AACD,eAAOr2F,MAAP;AACH;AACD;AACJ;AACA;AACA;;;;aACI,iBAAQ/sB,IAAR,EAA6B;AAAA,YAAfimK,SAAe,uEAAH,CAAG;;AACzB,YAAI7iD,SAAS,GAAG,mBAAClrH,OAAD,EAAa;AACzB,iBAAOA,OAAO,KAAK8H,IAAnB;AACH,SAFD;;AAGA,YAAI,KAAK2lK,OAAT,EAAkB;AACdviD,UAAAA,SAAS,GAAG,mBAAClrH,OAAD,EAAa;AACrB,mBAAOA,OAAO,CAACpC,KAAR,KAAkBkK,IAAzB;AACH,WAFD;AAGH;;AACD,eAAO,KAAKugC,SAAL,CAAe6iF,SAAf,EAA0B6iD,SAA1B,CAAP;AACH;AACD;AACJ;AACA;AACA;;;;aACI,mBAAU7iD,SAAV,EAAoC;AAAA,YAAf6iD,SAAe,uEAAH,CAAG;AAChC,YAAI7kJ,KAAK,GAAG,CAAC,CAAb;;AACA,YAAI,KAAKukJ,OAAT,EAAkB;AACd,cAAMjiL,IAAI,GAAG,KAAKmiL,SAAL,CAAelhL,MAAf,CAAsB,UAAAqb,IAAI;AAAA,mBAAI,CAACA,IAAI,CAACisB,MAAN,IAAgBjsB,IAAI,CAACkmK,WAAL,IAAoBD,SAAxC;AAAA,WAA1B,CAAb;;AACA7kJ,UAAAA,KAAK,GAAG19B,IAAI,CAAC68C,SAAL,CAAe6iF,SAAf,CAAR;AACAhiG,UAAAA,KAAK,GAAG19B,IAAI,CAAC09B,KAAD,CAAJ,GAAc19B,IAAI,CAAC09B,KAAD,CAAJ,CAAY8kJ,WAA1B,GAAwC,CAAC,CAAjD;AACH,SAJD,MAKK;AACD,cAAMxiL,KAAI,GAAG,KAAKA,IAAL,CAAUyc,KAAV,CAAgB8lK,SAAhB,CAAb;;AACA,cAAMz+B,SAAS,GAAG9jJ,KAAI,CAAC68C,SAAL,CAAe6iF,SAAf,CAAlB;;AACAhiG,UAAAA,KAAK,GAAGomH,SAAS,KAAK,CAAC,CAAf,GAAmBA,SAAS,GAAGy+B,SAA/B,GAA2C,CAAC,CAApD;AACH;;AACD,eAAO7kJ,KAAP;AACH;AACD;AACJ;AACA;AACA;;;;aACI,sBAAaA,KAAb,EAAoB;AAChB,aAAK,IAAIwf,CAAC,GAAGxf,KAAb,EAAoBwf,CAAC,IAAI,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC7B,cAAI,KAAKilI,SAAL,CAAejlI,CAAf,EAAkB3U,MAAtB,EAA8B;AAC1B,mBAAO,KAAK45I,SAAL,CAAejlI,CAAf,CAAP;AACH;AACJ;AACJ;AACD;AACJ;AACA;AACA;;;;aACI,cAAKwiF,SAAL,EAAgB;AACZ,YAAMhiG,KAAK,GAAG,KAAKmf,SAAL,CAAe6iF,SAAf,CAAd;AACA,eAAO,KAAK+iD,MAAL,CAAY/kJ,KAAZ,CAAP;AACH;AACD;AACJ;AACA;AACA;;;;aACI,mBAAUA,KAAV,EAAiB;AACb,YAAI,KAAKglJ,UAAL,KAAoB,CAAxB,EAA2B;AACvB,iBAAO,CAAC,CAAR;AACH;;AACD,YAAI,KAAKT,OAAT,EAAkB;AACd,cAAMnoK,KAAK,GAAG,KAAKqoK,SAAL,CAAezqK,IAAf,CAAoB,UAAC4E,IAAD;AAAA,mBAAU,CAACA,IAAI,CAACisB,MAAN,IAAgBjsB,IAAI,CAACkmK,WAAL,KAAqB9kJ,KAA/C;AAAA,WAApB,CAAd;;AACA,cAAI5jB,KAAJ,EAAW;AACP,mBAAOA,KAAK,CAAC4jB,KAAb;AACH;AACJ,SALD,MAMK;AACD,iBAAOA,KAAP;AACH;;AACD,eAAO,CAAC,CAAR;AACH;AACD;AACJ;AACA;AACA;;;;aACI,gBAAOA,KAAP,EAAc;AACV,YAAIgyF,QAAJ;;AACA,YAAI,KAAKgzD,UAAL,KAAoB,CAAxB,EAA2B;AACvB,iBAAOhzD,QAAP;AACH;;AACD,YAAI,KAAKuyD,OAAT,EAAkB;AACd,cAAMnoK,KAAK,GAAG,KAAKqoK,SAAL,CAAezqK,IAAf,CAAoB,UAAC4E,IAAD;AAAA,mBAAU,CAACA,IAAI,CAACisB,MAAN,IAAgBjsB,IAAI,CAACkmK,WAAL,KAAqB9kJ,KAA/C;AAAA,WAApB,CAAd;;AACA,cAAI5jB,KAAJ,EAAW;AACP41G,YAAAA,QAAQ,GAAG51G,KAAK,CAAC1H,KAAjB;AACH;AACJ,SALD,MAMK;AACDs9G,UAAAA,QAAQ,GAAG,KAAK1vH,IAAL,CAAU09B,KAAV,CAAX;AACH;;AACD,eAAOgyF,QAAP;AACH;AACD;AACJ;AACA;AACA;;;;aACI,iBAAQhyF,KAAR,EAAe;AACX,YAAI,KAAKglJ,UAAL,KAAoB,CAApB,IAAyB,CAAC,KAAKN,SAAnC,EAA8C;AAC1C;AACH;;AACD,eAAO,KAAKD,SAAL,CAAezqK,IAAf,CAAoB,UAAC4E,IAAD;AAAA,iBAAUA,IAAI,CAACisB,MAAL,IAAejsB,IAAI,CAACohB,KAAL,KAAeA,KAAxC;AAAA,SAApB,CAAP;AACH;AACD;AACJ;AACA;AACA;;;;aACI,sBAAa;AACT,YAAI,KAAKglJ,UAAL,KAAoB,CAApB,IAAyB,CAAC,KAAKN,SAAnC,EAA8C;AAC1C,iBAAO,IAAP;AACH;;AACD,eAAO,KAAKxqE,KAAL,CAAW,CAAX,EAAcqyB,KAArB;AACH;AACD;AACJ;AACA;AACA;;;;aACI,mBAAU3tH,IAAV,EAAgB;AACZ,YAAI,CAACA,IAAD,IAAS,KAAKomK,UAAL,KAAoB,CAA7B,IAAkC,CAAC,KAAKN,SAA5C,EAAuD;AACnD;AACH;;AACD,YAAMO,SAAS,GAAG,KAAKC,UAAL,EAAlB;;AACA,YAAID,SAAJ,EAAe;AACX,iBAAO1hB,MAAM,CAAC3kJ,IAAD,EAAOqmK,SAAP,CAAb;AACH;AACJ;;;aACD,iBAAQ3iL,IAAR,EAA6D;AAAA,YAA/CisB,KAA+C,uEAAvC0D,SAAuC;AAAA,YAA5B67B,MAA4B,uEAAnB,CAAmB;AAAA,YAAhBq3H,UAAgB,uEAAH,CAAG;AACzD,YAAIC,IAAI,GAAG,EAAX;;AACA,YAAIh7D,SAAS,CAAC77F,KAAD,CAAb,EAAsB;AAClB62J,UAAAA,IAAI,CAACzrK,IAAL,CAAU;AACNkxB,YAAAA,MAAM,EAAE,IADF;AAEN7K,YAAAA,KAAK,EAAEmlJ,UAAU,GAAGr3H,MAFd;AAGNg3H,YAAAA,WAAW,EAAEK,UAHP;AAINzwK,YAAAA,KAAK,EAAE6Z;AAJD,WAAV;AAMH;;AACD,aAAK,IAAIixB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGl9C,IAAI,CAACuX,MAAzB,EAAiC2lC,CAAC,EAAlC,EAAsC;AAClC,cAAI7T,MAAM,GAAG,EAAb;;AACA,cAAIrpC,IAAI,CAACk9C,CAAD,CAAJ,CAAQ/gC,KAAZ,EAAmB;AACfktB,YAAAA,MAAM,GAAG,KAAKi5I,OAAL,CAAatiL,IAAI,CAACk9C,CAAD,CAAJ,CAAQ/gC,KAArB,EAA4Bnc,IAAI,CAACk9C,CAAD,CAAJ,CAAQ9qC,KAApC,EAA2Co5C,MAA3C,EAAmDtO,CAAnD,CAAT;AACAsO,YAAAA,MAAM,GAAGA,MAAM,GAAGxrD,IAAI,CAACk9C,CAAD,CAAJ,CAAQ/gC,KAAR,CAAc5E,MAAhC;AACH,WAHD,MAIK;AACD8xB,YAAAA,MAAM,CAAChyB,IAAP,CAAY;AACRkxB,cAAAA,MAAM,EAAE,KADA;AAER7K,cAAAA,KAAK,EAAEmlJ,UAAU,GAAGr3H,MAAb,GAAsBtO,CAAtB,GAA0B,CAFzB;AAGRslI,cAAAA,WAAW,EAAEh3H,MAAM,GAAGtO,CAHd;AAIR9qC,cAAAA,KAAK,EAAEpS,IAAI,CAACk9C,CAAD;AAJH,aAAZ;AAMH;;AACD4lI,UAAAA,IAAI,GAAGA,IAAI,CAACp9E,MAAL,CAAYr8D,MAAZ,CAAP;AACH;;AACD,eAAOy5I,IAAP;AACH;;;;;;AAELd,EAAAA,WAAW,CAAC91I,IAAZ;AAAA,qBAAyG81I,WAAzG;AAAA;;AACAA,EAAAA,WAAW,CAAC31I,KAAZ,kBA5pBsGvqC,iEA4pBtG;AAAA,WAA6GkgL,WAA7G;AAAA,aAA6GA,WAA7G;AAAA;SA/NMA;;;AAgON;AAAA;AAAA;AAIA;AACA;AACA;;;IACMe;MAAAA;AACF,kCAAYC,WAAZ,EAAyB;AAAA;;AACrB,WAAKA,WAAL,GAAmBA,WAAnB;AACA,WAAKC,YAAL,GAAoB,IAApB;AACH;;;;aACD,yBAAgBvlJ,KAAhB,EAAuB;AACnB,YAAI,KAAKulJ,YAAT,EAAuB;AACnB,cAAM3mK,IAAI,GAAG,KAAK0mK,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAb;;AACA,cAAIoqF,SAAS,CAACxrG,IAAD,CAAb,EAAqB;AACjB,mBAAO,KAAK2mK,YAAL,CAAkB;AAAEvzD,cAAAA,QAAQ,EAAEpzG,IAAZ;AAAkBohB,cAAAA,KAAK,EAALA;AAAlB,aAAlB,CAAP;AACH,WAFD,MAGK,IAAIoqF,SAAS,CAAC,KAAK22D,WAAN,CAAb,EAAiC;AAClC,mBAAO,KAAKwE,YAAL,CAAkB;AAAEvzD,cAAAA,QAAQ,EAAE,KAAK+uD,WAAjB;AAA8B/gJ,cAAAA,KAAK,EAAE,CAAC;AAAtC,aAAlB,CAAP;AACH;AACJ;AACJ;;;aACD,wBAAephB,IAAf,EAAqB;AACjB,YAAI,KAAK2mK,YAAT,EAAuB;AACnB,cAAMvlJ,KAAK,GAAG,KAAKslJ,WAAL,CAAiBr9J,OAAjB,CAAyBrJ,IAAzB,CAAd;;AACA,cAAIohB,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd,mBAAO,KAAKulJ,YAAL,CAAkB;AAAEvzD,cAAAA,QAAQ,EAAEpzG,IAAZ;AAAkBohB,cAAAA,KAAK,EAALA;AAAlB,aAAlB,CAAP;AACH,WAFD,MAGK,IAAIoqF,SAAS,CAAC,KAAK22D,WAAN,CAAb,EAAiC;AAClC,mBAAO,KAAKwE,YAAL,CAAkB;AAAEvzD,cAAAA,QAAQ,EAAE,KAAK+uD,WAAjB;AAA8B/gJ,cAAAA,KAAK,EAAE,CAAC;AAAtC,aAAlB,CAAP;AACH;AACJ;AACJ;;;;;;AAELqlJ,EAAAA,oBAAoB,CAAC72I,IAArB;AAAA,qBAAkH62I,oBAAlH,EAhsBsGjhL,uDAgsBtG,CAAwJkgL,WAAxJ;AAAA;;AACAe,EAAAA,oBAAoB,CAAC12I,KAArB,kBAjsBsGvqC,iEAisBtG;AAAA,WAAsHihL,oBAAtH;AAAA,aAAsHA,oBAAtH;AAAA;SA7BMA;;;AA8BN;AAAA;AAAA;;AAIA,IAAMG,SAAS,GAAG,CAAlB;AACA;AACA;AACA;;IACMjhI;AACF;AACJ;AACA;AACI,yBAAYvkB,KAAZ,EAAmBu5F,aAAnB,EAAkC;AAAA;;AAC9B,OAAKv5F,KAAL,GAAaA,KAAb;AACA,OAAKu5F,aAAL,GAAqBA,aAArB;AACH;AAEL;AACA;AACA;;;IACM9G;MAAAA;AACF,+BAAYgzD,oBAAZ,EAAkCjnC,gBAAlC,EAAoD;AAAA;;AAChD,WAAKinC,oBAAL,GAA4BA,oBAA5B;AACA,WAAKjnC,gBAAL,GAAwBA,gBAAxB;AACA,WAAK3lI,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA,WAAKuvB,KAAL,GAAa,IAAIvvB,wDAAJ,EAAb;AACA,WAAKomE,GAAL,GAAW,IAAIpmE,wDAAJ,EAAX;AACA,WAAK47G,GAAL,GAAW,IAAI57G,wDAAJ,EAAX;AACA,WAAKgtI,EAAL,GAAU,IAAIhtI,wDAAJ,EAAV;AACA,WAAK42C,KAAL,GAAa,IAAI52C,wDAAJ,EAAb;AACA,WAAK4kK,IAAL,GAAY,IAAI5kK,wDAAJ,EAAZ;AACA,WAAKxJ,IAAL,GAAY,IAAIwJ,wDAAJ,EAAZ;AACA,WAAKiT,MAAL,GAAc,IAAIjT,wDAAJ,EAAd;AACA,WAAK6/I,SAAL,GAAiB,IAAI7/I,wDAAJ,EAAjB;AACA,WAAK0uK,IAAL,GAAY,IAAI1uK,wDAAJ,EAAZ;AACA,WAAKsoC,GAAL,GAAW,IAAItoC,wDAAJ,EAAX;AACH;;;;aACD,iBAAQ6tD,IAAR,EAAc;AACV,YAAMi9B,OAAO,GAAGj9B,IAAI,CAAC00D,aAAL,CAAmBz3B,OAAnC;AACA,YAAMuxB,MAAM,GAAGxuD,IAAI,CAAC00D,aAAL,CAAmBlG,MAAlC;AACA,YAAIrzF,KAAJ;AACA,YAAIm7E,MAAM,GAAGoX,gBAAgB,CAACQ,SAA9B;;AACA,YAAIM,MAAM,IAAIvxB,OAAO,KAAKgnB,2EAA1B,EAA0C;AACtC3N,UAAAA,MAAM,GAAGoX,gBAAgB,CAACe,IAA1B;AACH,SAFD,MAGK,IAAID,MAAM,IAAIvxB,OAAO,KAAKgnB,yEAA1B,EAAwC;AACzC3N,UAAAA,MAAM,GAAGoX,gBAAgB,CAACgB,KAA1B;AACH,SAFI,MAGA,IAAIzxB,OAAO,KAAKgnB,uEAAhB,EAA4B;AAC7B3N,UAAAA,MAAM,GAAGoX,gBAAgB,CAAC5pE,KAA1B;AACH,SAFI,MAGA,IAAIm5C,OAAO,KAAKgnB,wEAAhB,EAA6B;AAC9B3N,UAAAA,MAAM,GAAGoX,gBAAgB,CAACv5B,GAA1B;AACH,SAFI,MAGA,IAAI8I,OAAO,KAAKgnB,qEAAhB,EAA0B;AAC3B3N,UAAAA,MAAM,GAAGoX,gBAAgB,CAAC5lE,GAA1B;AACH,SAFI,MAGA,IAAIm1C,OAAO,KAAKgnB,yEAAhB,EAA8B;AAC/B9oF,UAAAA,KAAK,GAAG,KAAK7e,IAAL,CAAU;AAAEi4B,YAAAA,OAAO,EAAEyrB,IAAI,CAACzrB,OAAhB;AAAyBiG,YAAAA,KAAK,EAAEwlB,IAAI,CAAC/3B,GAArC;AAA0CwS,YAAAA,GAAG,EAAEulB,IAAI,CAACh4B,GAApD;AAAyDm0B,YAAAA,IAAI,EAAE,CAAC;AAAhE,WAAV,CAAR;AACAm6C,UAAAA,MAAM,GAAGoX,gBAAgB,CAACuc,EAA1B;AACH,SAHI,MAIA,IAAIhtC,OAAO,KAAKgnB,2EAAhB,EAAgC;AACjC9oF,UAAAA,KAAK,GAAG,KAAK7e,IAAL,CAAU;AAAEi4B,YAAAA,OAAO,EAAEyrB,IAAI,CAACzrB,OAAhB;AAAyBiG,YAAAA,KAAK,EAAEwlB,IAAI,CAAC/3B,GAArC;AAA0CwS,YAAAA,GAAG,EAAEulB,IAAI,CAACh4B,GAApD;AAAyDm0B,YAAAA,IAAI,EAAE,CAAC;AAAhE,WAAV,CAAR;AACAm6C,UAAAA,MAAM,GAAGoX,gBAAgB,CAACsc,IAA1B;AACH,SAHI,MAIA,IAAI/sC,OAAO,KAAKgnB,2EAAhB,EAAgC;AACjC9oF,UAAAA,KAAK,GAAG,KAAK7e,IAAL,CAAU;AAAEi4B,YAAAA,OAAO,EAAEyrB,IAAI,CAACzrB,OAAhB;AAAyBiG,YAAAA,KAAK,EAAEwlB,IAAI,CAAC/3B,GAArC;AAA0CwS,YAAAA,GAAG,EAAEulB,IAAI,CAACh4B,GAApD;AAAyDm0B,YAAAA,IAAI,EAAE;AAA/D,WAAV,CAAR;AACAm6C,UAAAA,MAAM,GAAGoX,gBAAgB,CAACyc,IAA1B;AACH,SAHI,MAIA,IAAIltC,OAAO,KAAKgnB,4EAAhB,EAAiC;AAClC9oF,UAAAA,KAAK,GAAG,KAAK7e,IAAL,CAAU;AAAEi4B,YAAAA,OAAO,EAAEyrB,IAAI,CAACzrB,OAAhB;AAAyBiG,YAAAA,KAAK,EAAEwlB,IAAI,CAAC/3B,GAArC;AAA0CwS,YAAAA,GAAG,EAAEulB,IAAI,CAACh4B,GAApD;AAAyDm0B,YAAAA,IAAI,EAAE;AAA/D,WAAV,CAAR;AACAm6C,UAAAA,MAAM,GAAGoX,gBAAgB,CAACwc,KAA1B;AACH,SAHI,MAIA,IAAIjtC,OAAO,KAAKgnB,sEAAhB,EAA2B;AAC5B9oF,UAAAA,KAAK,GAAG,KAAKoV,UAAL,CAAgBowI,SAAhB,IAA6B3gH,IAAI,CAACzrB,OAAlC,GAA4CosI,SAApD;AACArqE,UAAAA,MAAM,GAAGoX,gBAAgB,CAACjqE,IAA1B;AACH,SAHI,MAIA,IAAIw5C,OAAO,KAAKgnB,qEAAhB,EAA0B;AAC3B9oF,UAAAA,KAAK,GAAG,KAAKoV,UAAL,CAAgByvB,IAAI,CAACh4B,GAArB,IAA4Bg4B,IAAI,CAACzrB,OAAjC,GAA2CyrB,IAAI,CAACh4B,GAAxD;AACAsuE,UAAAA,MAAM,GAAGoX,gBAAgB,CAAClqE,GAA1B;AACH,SAHI,MAIA,IAAIy5C,OAAO,KAAKgnB,wEAAhB,EAA6B;AAC9B3N,UAAAA,MAAM,GAAGoX,gBAAgB,CAACixD,MAA1B;AACH,SAFI,MAGA,IAAI1hF,OAAO,KAAKgnB,2EAAhB,EAAgC;AACjC3N,UAAAA,MAAM,GAAGoX,gBAAgB,CAACt5B,SAA1B;AACH;;AACD,YAAMk8B,SAAS,GAAG,IAAI5wE,eAAJ,CAAoBvkB,KAApB,EAA2B6kC,IAAI,CAAC00D,aAAhC,CAAlB;;AACA,YAAIpe,MAAM,KAAKoX,gBAAgB,CAACQ,SAAhC,EAA2C;AACvC,eAAKR,gBAAgB,CAACpX,MAAD,CAAhB,CAAyBt8F,WAAzB,EAAL,EAA6CjB,IAA7C,CAAkDu3G,SAAlD;AACH;;AACD,eAAOha,MAAP;AACH;;;aACD,cAAKt2C,IAAL,EAAW;AACP,YAAQzrB,OAAR,GAAsCyrB,IAAtC,CAAQzrB,OAAR;AAAA,YAAiBiG,KAAjB,GAAsCwlB,IAAtC,CAAiBxlB,KAAjB;AAAA,YAAwBC,GAAxB,GAAsCulB,IAAtC,CAAwBvlB,GAAxB;AAAA,YAA6B0hB,IAA7B,GAAsC6D,IAAtC,CAA6B7D,IAA7B;AACA,YAAMwkC,SAAS,GAAG,CAAC4kB,SAAS,CAAChxE,OAAD,CAAV,GAAsBiG,KAAtB,GAA8B,KAAKsmI,UAAL,CAAgBvsI,OAAO,GAAG4nB,IAA1B,EAAgC3hB,KAAhC,EAAuCC,GAAvC,CAAhD;AACA,YAAMsmI,mBAAmB,GAAG,KAAKA,mBAAL,CAAyBpgF,SAAzB,EAAoCnmD,KAApC,EAA2CC,GAA3C,EAAgD0hB,IAAhD,CAA5B;;AACA,YAAIopD,SAAS,CAACw7D,mBAAD,CAAb,EAAoC;AAChC,iBAAOA,mBAAP;AACH;;AACD,YAAI,KAAKpnC,gBAAL,CAAsBjO,UAAtB,CAAiCn3F,OAAjC,KAA6CA,OAAO,IAAIiG,KAA5D,EAAmE;AAC/D,iBAAOjG,OAAP;AACH;;AACD,YAAMysI,YAAY,GAAG,CAAC,CAAD,GAAK7kH,IAA1B;AACA,eAAO,KAAK4kH,mBAAL,CAAyBpgF,SAAzB,EAAoCnmD,KAApC,EAA2CC,GAA3C,EAAgDumI,YAAhD,CAAP;AACH;;;aACD,oBAAW7lJ,KAAX,EAAkB8M,GAAlB,EAAuBD,GAAvB,EAA4B;AACxB,YAAI,CAACu9E,SAAS,CAACpqF,KAAD,CAAV,IAAqBA,KAAK,GAAG8M,GAAjC,EAAsC;AAClC,iBAAOA,GAAP;AACH;;AACD,YAAI9M,KAAK,GAAG6M,GAAZ,EAAiB;AACb,iBAAOA,GAAP;AACH;;AACD,eAAO7M,KAAP;AACH;;;aACD,6BAAoB8lJ,UAApB,EAAgCh5I,GAAhC,EAAqCD,GAArC,EAA0Cm0B,IAA1C,EAAgD;AAC5C,eAAOl0B,GAAG,IAAIg5I,UAAP,IAAqBA,UAAU,IAAIj5I,GAA1C,EAA+C;AAC3C,cAAI,CAAC,KAAKuI,UAAL,CAAgB0wI,UAAhB,CAAL,EAAkC;AAC9B,mBAAOA,UAAP;AACH;;AACDA,UAAAA,UAAU,IAAI9kH,IAAd;AACH;;AACD,eAAO/uC,SAAP;AACH;;;aACD,oBAAW+N,KAAX,EAAkB;AACd,YAAI,KAAKylJ,oBAAT,EAA+B;AAC3B,iBAAO,KAAKA,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAP;AACH;AACJ;;;;;;AAELyyF,EAAAA,iBAAiB,CAACjkF,IAAlB;AAAA,qBAA+GikF,iBAA/G,EAr0BsGruH,uDAq0BtG,CAAkJihL,oBAAlJ,GAr0BsGjhL,uDAq0BtG,CAAmLu4I,gBAAnL;AAAA;;AACAlqB,EAAAA,iBAAiB,CAAC9jF,KAAlB,kBAt0BsGvqC,iEAs0BtG;AAAA,WAAmHquH,iBAAnH;AAAA,aAAmHA,iBAAnH;AAAA;SAhHMA;;;AAiHN;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMuzD;MAAAA,oOACF,iCAAY3uJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAEL2uJ,EAAAA,uBAAuB,CAACx3I,IAAxB;AAAA,qBAAqHw3I,uBAArH,EA52BsG5hL,gEA42BtG,CAA8JA,uDAA9J;AAAA;;AACA4hL,EAAAA,uBAAuB,CAACh3I,IAAxB,kBA72BsG5qC,gEA62BtG;AAAA,UAAyG4hL,uBAAzG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;;;IACM/1D;AACF,8BAAc;AAAA;;AACV,SAAKC,SAAL,GAAiB,KAAjB;AACH;AACD;AACJ;AACA;AACA;;;;;WACI,0BAAiB;AACb,WAAKA,SAAL,GAAiB,IAAjB;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WACI,8BAAqB;AACjB,aAAO,KAAKA,SAAZ;AACH;;;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM+1D;;;AAGN;AACA;AACA;;;AACA,IAAMC,QAAQ,GAAG;AACbp8J,EAAAA,QAAQ,EAAE,EADG;AAEbwvE,EAAAA,UAAU,EAAE;AAFC,CAAjB;AAIA;AACA;AACA;;AACA,IAAM6sF,+BAA+B,GAAG,SAAlCA,+BAAkC,CAAC3vD,QAAD,EAAW4vD,gBAAX,EAAgC;AACpE,MAAMhuE,QAAQ,GAAGn3F,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBglK,QAAlB,EAA4BE,gBAA5B,CAAjB;;AACA,MAAI5vD,QAAQ,KAAK,IAAjB,EAAuB;AACnB,WAAOpe,QAAP;AACH;;AACD,MAAI,CAACoe,QAAL,EAAe;AACX,WAAO,IAAP;AACH;;AACD,SAAOv1G,MAAM,CAACC,MAAP,CAAc;AAAE4I,IAAAA,QAAQ,EAAEo8J,QAAQ,CAACp8J;AAArB,GAAd,EAA+C0sG,QAA/C,CAAP;AACH,CATD;AAWA;AACA;AACA;;;AACA,IAAM8jC,aAAa,GAAG,IAAItxI,0DAAJ,CAAmB,yBAAnB,CAAtB;AAEA;AACA;AACA;;IACMq9J;MAAAA,8NACF,2BAAYvvK,OAAZ,EAAqB;AAAA;;AACjB,SAAKA,OAAL,GAAeA,OAAf;AACH;;AAELuvK,EAAAA,iBAAiB,CAAC73I,IAAlB;AAAA,qBAA+G63I,iBAA/G,EAz7BsGjiL,gEAy7BtG,CAAkJA,sDAAlJ;AAAA;;AACAiiL,EAAAA,iBAAiB,CAACr3I,IAAlB,kBA17BsG5qC,gEA07BtG;AAAA,UAAmGiiL,iBAAnG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;;;IACM30D;MAAAA;AACF,sCAAYr5C,gBAAZ,EAA8B;AAAA;;AAC1B,WAAKA,gBAAL,GAAwBA,gBAAxB;AACH;;;;WACD,aAAoBx5C,OAApB,EAA6B;AACzB,YAAI,KAAK8yF,eAAT,EAA0B;AACtB,eAAKt5C,gBAAL,CAAsB3nB,MAAtB,CAA6B,KAAK2nB,gBAAL,CAAsBpwD,OAAtB,CAA8B,KAAK0pG,eAAnC,CAA7B;AACA,eAAKA,eAAL,GAAuB1/F,SAAvB;AACH;;AACD,YAAI4M,OAAO,CAACxH,WAAZ,EAAyB;AACrB,eAAKs6F,eAAL,GAAuB,KAAKt5C,gBAAL,CAAsB9P,kBAAtB,CAAyC1pC,OAAO,CAACxH,WAAjD,EAA8DwH,OAA9D,CAAvB;AACH;AACJ;;;;;;AAEL6yF,EAAAA,wBAAwB,CAACljF,IAAzB;AAAA,qBAAsHkjF,wBAAtH,EAn9BsGttH,gEAm9BtG,CAAgKA,4DAAhK;AAAA;;AACAstH,EAAAA,wBAAwB,CAAC1iF,IAAzB,kBAp9BsG5qC,gEAo9BtG;AAAA,UAA0GstH,wBAA1G;AAAA;AAAA;AAAA;AAAA;AAAA;SAfMA;;;AAgBN;AAAA;AAAA;AASA;AACA;AACA;;;IACM40D;MAAAA;AACF,iCAAY9nC,gBAAZ,EAA8B;AAAA;;AAC1B,WAAK+nC,UAAL,GAAkB;AAAEp+K,QAAAA,OAAO,EAAE;AAAX,OAAlB,CAD0B,CAE1B;AACA;;AACA,WAAKq+K,iBAAL,GAAyB,KAAzB;AACA,WAAKhoC,gBAAL,GAAwBA,gBAAxB;AACH;;;;WACD,eAAuB;AACnB,eAAO,KAAKA,gBAAL,CAAsBxpG,SAAtB,CAAgC,KAAKhV,KAArC,CAAP;AACH;;;WACD,eAAwB;AACpB,eAAO,CAAC,KAAKumJ,UAAL,CAAgBp+K,OAAjB,IAA4B,KAAKq2I,gBAAL,CAAsBjO,UAAtB,CAAiC,KAAKvwG,KAAtC,CAAnC;AACH;;;aACD,iBAAQj8B,KAAR,EAAe;AACXA,QAAAA,KAAK,CAAC8kD,eAAN;;AACA,YAAI,KAAK09H,UAAL,CAAgBp+K,OAAhB,IAA2B,CAAC,KAAKo+K,UAAL,CAAgBE,YAAhD,EAA8D;AAC1D;AACH;;AACD,YAAI,KAAKD,iBAAT,EAA4B;AACxB,cAAI,KAAKhoC,gBAAL,CAAsBjO,UAAtB,CAAiC,KAAKvwG,KAAtC,CAAJ,EAAkD;AAC9C,iBAAKw+G,gBAAL,CAAsBjyD,QAAtB,CAA+B,KAAKvsD,KAApC;AACH,WAFD,MAGK;AACD,iBAAKw+G,gBAAL,CAAsBloG,GAAtB,CAA0B,KAAKtW,KAA/B;AACH;AACJ,SAPD,MAQK;AACD,eAAKw+G,gBAAL,CAAsBh6H,MAAtB,CAA6B,KAAKwb,KAAlC;AACH;AACJ;;;;;;AAELsmJ,EAAAA,mBAAmB,CAAC93I,IAApB;AAAA,qBAAiH83I,mBAAjH,EAjgCsGliL,gEAigCtG,CAAsJu4I,gBAAtJ;AAAA;;AACA2pC,EAAAA,mBAAmB,CAACt3I,IAApB,kBAlgCsG5qC,gEAkgCtG;AAAA,UAAqGkiL,mBAArG;AAAA;AAAA;AAAA;AAAA;AAlgCsGliL,QAAAA,yDAkgCtG;AAAA,iBAAqG,mBAArG;AAAA;AAAA;;AAAA;AAlgCsGA,QAAAA,0DAkgCtG;AAlgCsGA,QAAAA,0DAkgCtG;AAlgCsGA,QAAAA,0DAkgCtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;SAjCMkiL;;;AAkCN;AAAA;AAAA;AAiCA;AACA;AACA;;;IACM10D;MAAAA;AACF;AACA,2BAAY0zD,WAAZ,EAAyBpxD,OAAzB,EAAkCsqB,gBAAlC,EAAoDinC,oBAApD,EAA0Et8K,GAA1E,EAA+EmiD,IAA/E,EAAqFpiD,QAArF,EAA+F;AAAA;;AAAA;;AAC3F,WAAKo8K,WAAL,GAAmBA,WAAnB;AACA,WAAKpxD,OAAL,GAAeA,OAAf;AACA,WAAKsqB,gBAAL,GAAwBA,gBAAxB;AACA,WAAKinC,oBAAL,GAA4BA,oBAA5B;AACA,WAAKt8K,GAAL,GAAWA,GAAX;AACA,WAAKmiD,IAAL,GAAYA,IAAZ;AACA,WAAKpiD,QAAL,GAAgBA,QAAhB;AACA,WAAKyyB,QAAL,GAAgB,EAAhB;AACA,WAAKI,OAAL,GAAe,CAAC,CAAhB;AACA,WAAKphB,IAAL,GAAY,IAAZ;AACA,WAAK6rK,iBAAL,GAAyB,KAAzB;AACA,WAAK15K,IAAL,GAAY,MAAZ;AACA,WAAKy5K,UAAL,GAAkB;AAAEp+K,QAAAA,OAAO,EAAE;AAAX,OAAlB;AACA,WAAKylH,OAAL,GAAe,QAAf;AACA,WAAK80D,OAAL,GAAe,IAAI1rK,wDAAJ,EAAf;AACA,WAAKu8D,UAAL,GAAkB,IAAIv8D,wDAAJ,EAAlB;AACA,WAAK0vK,UAAL,GAAkB,IAAI1vK,wDAAJ,EAAlB;AACA,WAAK6tK,SAAL,GAAiB,CAAjB;AACA,WAAKvhC,UAAL,GAAkB,CAAlB;AACA,WAAKqjC,aAAL,GAAqB,CAArB;AACA,WAAKC,eAAL,GAAuB,KAAvB;AACA,WAAKh6D,KAAL,GAAa,QAAb;AACA,WAAKi6D,kBAAL,GAA0Bh0K,4CAAK,CAAC,KAAK2rI,gBAAL,CAAsBylC,QAAtB,CAA+BngL,IAA/B,CAAoCoP,oDAAG,CAAC,UAAC2xD,IAAD;AAAA,eAAUA,IAAI,CAACq/G,OAAL,CAAa,CAAb,CAAV;AAAA,OAAD,CAAvC,CAAD,EAAsE,KAAK1lC,gBAAL,CAAsBppF,OAA5F,CAAL,CACrBtxD,IADqB,EAE1B;AACA8O,MAAAA,0DAAS,CAAC,UAAA7O,KAAK;AAAA,eAAI,MAAI,CAACunD,IAAL,CAAU9E,QAAV,CAAmB1iD,IAAnB,CAAwBkyB,qDAAI,CAAC,CAAD,CAA5B,EAAiC9iB,oDAAG,CAAC;AAAA,iBAAMnP,KAAN;AAAA,SAAD,CAApC,CAAJ;AAAA,OAAN,CAHiB,EAIrBC,SAJqB,CAIX,KAAK8iL,YAAL,CAAkB34K,IAAlB,CAAuB,IAAvB,CAJW,CAA1B;AAKA,WAAK44K,cAAL;AACH;;;;WAID,eAAW;AACP,eAAO,KAAK7sE,KAAZ;AACH;WALD,aAAS53G,IAAT,EAAe;AACX,aAAK43G,KAAL,GAAa53G,IAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAJ,CAAQuoC,MAAnB,GAA4BvoC,IAAI,CAACyc,KAAL,CAAW,CAAX,CAA5B,GAA4Czc,IAAzD;AACH;;;WAaD,eAAW;AACP,eAAO,KAAKsqH,KAAZ;AACH;WAXD,aAASjgH,IAAT,EAAe;AACX,YAAI,KAAKG,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAK5D,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,MAAD,EAAS,KAAK1hI,IAAd,CAAlE;;AACA,cAAIA,IAAJ,EAAU;AACN,iBAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,MAAD,EAAS1hI,IAAT,CAA/D;AACH;;AACD,eAAKigH,KAAL,GAAajgH,IAAb;AACH;AACJ;;;WAID,eAAe;AACX,YAAI,KAAKq6K,OAAL,CAAal9J,QAAjB,EAA2B;AACvB,iBAAO,KAAKk9J,OAAL,CAAal9J,QAApB;AACH;;AACD,YAAInd,IAAI,GAAGogC,IAAI,CAACiR,KAAL,CAAW,KAAK3sC,MAAL,GAAc,KAAK21K,OAAL,CAAa1tF,UAAtC,CAAX;AACA,eAAO3sF,IAAP;AACH;;;WACD,eAAmB;AACf,eAAO,CAAC,KAAK24K,WAAL,CAAiBf,OAAjB,GAA2B,KAAKyC,OAAL,CAAa31C,KAAb,GAAqB,CAAhD,GAAoD,KAAK21C,OAAL,CAAa31C,KAAlE,IAA2E,KAAK21C,OAAL,CAAa1tF,UAA/F;AACH;;;WACD,eAAgB;AACZ,YAAI8wB,SAAS,CAAC,KAAK48D,OAAN,CAAb,EAA6B;AACzB,cAAMC,QAAQ,GAAG,KAAKC,mBAAL,KAA6B,QAA7B,GAAwC,QAAzD;AACA,iBAAOD,QAAP;AACH;AACJ;AACD;AACJ;AACA;;;;WACI,eAAsB;AAClB,yBAAU,KAAKt6K,IAAL,GAAY0hI,YAAY,CAAC,UAAD,EAAa,KAAK1hI,IAAlB,CAAxB,GAAkD,EAA5D,cAAkE,KAAKihH,OAAL,GAAe0gB,eAAe,CAAC,KAAK1gB,OAAN,CAA9B,GAA+C,EAAjH;AACH;;;aACD,qBAAY56G,OAAZ,EAAqB;AACjB,YAAI+1G,0EAAS,CAAC,MAAD,EAAS/1G,OAAT,EAAkB,KAAlB,CAAb,EAAuC;AACnC,cAAI,KAAKswI,UAAL,IAAmB,CAAvB,EAA0B;AACtB,iBAAKA,UAAL,GAAkB,KAAKhhJ,IAAL,CAAUuX,MAAV,GAAmB,CAArC;AACA,iBAAK+sK,eAAL,GAAuB,CAAC5zK,OAAO,CAAC1Q,IAAR,CAAagjE,aAAb,EAAxB;AACH;;AACD,eAAK6hH,WAAL;AACH;;AACD,YAAIp+D,0EAAS,CAAC,SAAD,EAAY/1G,OAAZ,EAAqB,KAArB,CAAb,EAA0C;AACtC,eAAKm0K,WAAL;AACH;;AACD,YAAIp+D,0EAAS,CAAC,MAAD,EAAS/1G,OAAT,EAAkB,KAAlB,CAAb,EAAuC;AACnC,eAAK+zK,cAAL;AACH;AACJ;;;aACD,2BAAkB;AAAA;;AACd,aAAK/uB,mBAAL;AACA,aAAK1sG,IAAL,CAAUrS,iBAAV,CAA4B,YAAM;AAC9B,gBAAI,CAAC2qG,kBAAL,GAA0BrwI,gDAAS,CAAC,MAAI,CAAC00D,OAAL,CAAa5xD,aAAd,EAA6B,QAA7B,CAAT,CAAgDvS,IAAhD,CAAqDynF,0DAAS,CAAC,GAAD,CAA9D,EAAqEt1D,oDAAG,CAAC,MAAI,CAACmxJ,YAAL,CAAkBj5K,IAAlB,CAAuB,MAAvB,CAAD,CAAxE,EAAwG8nB,oDAAG,CAAC,MAAI,CAACoxJ,gBAAL,CAAsBl5K,IAAtB,CAA2B,MAA3B,CAAD,CAA3G,EAA+InK,SAA/I,CAAyJ,YAAM;AACrL,kBAAI,CAAC2iL,aAAL,GAAqB,MAAI,CAAC1+G,OAAL,CAAa5xD,aAAb,CAA2B9H,SAAhD;AACH,WAFyB,CAA1B;AAGH,SAJD;AAKA,aAAK44K,WAAL;AACH;;;aACD,8BAAqB;AACjB,YAAI,KAAKH,OAAT,EAAkB;AACd,eAAKM,aAAL;AACH;;AACD,YAAI,KAAK7oK,KAAL,IAAc,KAAKmoK,eAAvB,EAAwC;AACpC,eAAKA,eAAL,GAAuB,KAAvB;AACA,cAAMW,YAAY,GAAG,KAAK9oK,KAAL,CAAW5E,MAAX,IAAqB,KAAK2kI,gBAAL,CAAsBziH,OAAtB,KAAkC,CAAC,CAAxD,GAA4D,CAA5D,GAAgE,KAAKyiH,gBAAL,CAAsBziH,OAA3G;AACA,eAAK+qJ,YAAL,CAAkBS,YAAlB;AACH;;AACD,YAAI,KAAKjC,WAAL,CAAiBf,OAArB,EAA8B;AAC1B,eAAK8C,gBAAL;AACH;AACJ;;;aACD,uBAAc;AACV,aAAKR,kBAAL,CAAwB1iL,WAAxB;;AACA,YAAI,KAAKy/I,kBAAT,EAA6B;AACzB,eAAKA,kBAAL,CAAwBz/I,WAAxB;AACH;AACJ;;;aACD,yBAAgBiJ,CAAhB,EAAmB4yB,KAAnB,EAA0B;AACtB,YAAMwnJ,SAAS,GAAGp6K,CAAC,CAACM,MAAF,CAAS,SAAT,CAAlB;;AACA,YAAI85K,SAAS,IAAI,CAAC,KAAKhpC,gBAAL,CAAsBjO,UAAtB,CAAiCvwG,KAAjC,CAAlB,EAA2D;AACvD,eAAKw+G,gBAAL,CAAsBloG,GAAtB,CAA0BtW,KAA1B;AACH;;AACD,YAAI,CAACwnJ,SAAD,IAAc,KAAKhpC,gBAAL,CAAsBjO,UAAtB,CAAiCvwG,KAAjC,CAAlB,EAA2D;AACvD,eAAKw+G,gBAAL,CAAsBjyD,QAAtB,CAA+BvsD,KAA/B;AACH;AACJ;;;aACD,0BAAiB;AACb,YAAI,KAAKlzB,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAK26K,gBAAL,GAAwB,gBAAxB;AACA,eAAKC,SAAL,GAAiB,WAAjB;AACA,eAAKC,aAAL,GAAqB,aAArB;AACA,eAAKC,gBAAL,GAAwB,gBAAxB;AACA,eAAKC,0BAAL,GAAkC,4BAAlC;AACA,eAAKC,8BAAL,GAAsC,oBAAtC;AACA,eAAKC,kBAAL,GAA0B,mBAA1B;AACA,eAAKC,sBAAL,GAA8B,kBAA9B;AACH,SATD,MAUK;AACD,eAAKP,gBAAL,GAAwB,+BAAxB;AACA,eAAKC,SAAL,GAAiB,sBAAjB;AACA,eAAKC,aAAL,GAAqB,aAArB;AACA,eAAKC,gBAAL,GAAwB,iBAAxB;AACA,eAAKC,0BAAL,GAAkC,6BAAlC;AACA,eAAKC,8BAAL,GAAsC,YAAtC;AACA,eAAKC,kBAAL,GAA0B,mBAA1B;AACA,eAAKC,sBAAL,GAA8B,YAA9B;AACH;AACJ;;;aACD,mBAAUhoJ,KAAV,EAAiB;AACb,YAAMioJ,eAAe,GAAG,KAAKjB,OAAL,GAAehnJ,KAAK,GAAG,KAAKgnJ,OAAL,CAAahlE,IAApC,GAA2ChiF,KAAnE;AACA,eAAO,KAAKw+G,gBAAL,CAAsBjO,UAAtB,CAAiC03C,eAAjC,CAAP;AACH;;;aACD,4BAAmB;AAAA;;AACf,YAAMhgH,OAAO,GAAG,KAAKA,OAAL,CAAa5xD,aAA7B;AACA,YAAMgzD,IAAI,GAAGpB,OAAO,CAACpa,qBAAR,EAAb,CAFe,CAGf;;AACA,YAAMhyB,QAAQ,GAAGnY,KAAK,CAACkqB,SAAN,CAAgB7uB,KAAhB,CAAsB+zF,IAAtB,CAA2B7qC,OAAO,CAAC5b,gBAAR,CAAyB,aAAzB,CAA3B,CAAjB,CAJe,CAKf;;AACAxwB,QAAAA,QAAQ,CAACzxB,OAAT,CAAiB,UAAC4jB,EAAD;AAAA,iBAAQ,MAAI,CAAC9kB,QAAL,CAAc29D,QAAd,CAAuB74C,EAAvB,EAA2B,gBAA3B,EAA6C,MAA7C,CAAR;AAAA,SAAjB;AACA,YAAMpP,IAAI,GAAG3V,QAAQ,CAACu4K,gBAAT,CAA0Bn4G,IAAI,CAAC77D,IAAL,GAAY,CAAtC,EAAyC67D,IAAI,CAAC97D,GAAL,GAAW,CAApD,CAAb;AACAsuB,QAAAA,QAAQ,CAACzxB,OAAT,CAAiB,UAAC4jB,EAAD;AAAA,iBAAQ,MAAI,CAAC9kB,QAAL,CAAc29D,QAAd,CAAuB74C,EAAvB,EAA2B,gBAA3B,EAA6C,MAA7C,CAAR;AAAA,SAAjB,EARe,CASf;;AACA,eAAO6f,OAAO,CAACjvB,IAAD,EAAO,IAAP,CAAd;AACH;;;aACD,4BAAmB;AACf,YAAI,CAAC,KAAK0mK,WAAL,CAAiBf,OAAtB,EAA+B;AAC3B,eAAK2D,YAAL,GAAoBj2J,SAApB;AACA;AACH;;AACD,YAAMrT,IAAI,GAAG,KAAKupK,gBAAL,EAAb;;AACA,YAAIvpK,IAAJ,EAAU;AACN,cAAIohB,KAAJ;;AACA,cAAIphB,IAAI,CAACgwD,YAAL,CAAkB,MAAlB,MAA8B,OAAlC,EAA2C;AACvC5uC,YAAAA,KAAK,GAAG2M,QAAQ,CAAC/tB,IAAI,CAACgwD,YAAL,CAAkB,aAAlB,CAAD,EAAmC,EAAnC,CAAhB;AACA,iBAAKs5G,YAAL,GAAoB,KAAK5C,WAAL,CAAiB8C,OAAjB,CAAyBpoJ,KAAzB,EAAgCtrB,KAApD;AACH,WAHD,MAIK;AACDsrB,YAAAA,KAAK,GAAG2M,QAAQ,CAAC/tB,IAAI,CAACgwD,YAAL,CAAkB,OAAlB,CAAD,EAA6B,EAA7B,CAAhB;AACA,iBAAKs5G,YAAL,GAAoB,KAAK5C,WAAL,CAAiB+C,SAAjB,CAA2B,KAAK/C,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAA3B,CAApB;AACH;AACJ,SAVD,MAWK;AACD,eAAKkoJ,YAAL,GAAoBj2J,SAApB;AACH;;AACD,aAAK9oB,GAAL,CAASoC,aAAT;AACH;;;aACD,wBAAe;AACX,YAAI,CAAC,KAAKy7K,OAAV,EAAmB;AACf;AACH;;AACD,YAAMsB,YAAY,GAAGv7I,IAAI,CAACyvB,KAAL,CAAW,KAAKyL,OAAL,CAAa5xD,aAAb,CAA2Bo5C,YAA3B,GAA0C,KAAKu3H,OAAL,CAAa1tF,UAAlE,CAArB;AACA,YAAMivF,OAAO,GAAG,KAAKtgH,OAAL,CAAa5xD,aAAb,CAA2B9H,SAA3C;AACA,YAAM8wC,KAAK,GAAGtS,IAAI,CAACyvB,KAAL,CAAW+rH,OAAO,GAAG,KAAKvB,OAAL,CAAa1tF,UAAlC,CAAd;AACA,YAAMsiF,IAAI,GAAG2M,OAAO,GAAG,KAAK5B,aAA5B;AACA,YAAM6B,QAAQ,GAAInpI,KAAK,GAAGipI,YAAR,IAAwB,KAAKhlC,UAA9B,IAA6C,KAAKA,UAAL,GAAkB,KAAK0jC,OAAL,CAAa31C,KAAb,GAAqB,CAArG;AACA,YAAMh7B,QAAQ,GAAG,KAAKvsF,QAAL,IAAiB,KAAKw5H,UAAL,GAAkB,KAAKuhC,SAAxC,CAAjB;AACA,YAAM4D,QAAQ,GAAG,KAAKnlC,UAAL,GAAkB,KAAKx5H,QAAvB,GAAkCw+J,YAAlC,IAAkDjpI,KAAK,GAAGg3D,QAA3E;;AACA,YAAIulE,IAAI,IAAI4M,QAAZ,EAAsB;AAClB,eAAKE,UAAL,CAAgBrpI,KAAhB;AACH;;AACD,YAAI,CAACu8H,IAAD,IAAS6M,QAAb,EAAuB;AACnB,eAAKC,UAAL,CAAgBrpI,KAAK,GAAG,KAAKv1B,QAAb,GAAwBw+J,YAAxB,GAAuC,CAAvD;AACH;AACJ;;;aACD,oBAAWjpI,KAAX,EAAkB;AAAA;;AACd,aAAKiM,IAAL,CAAUzR,GAAV,CAAc,YAAM;AAChB,cAAIyF,GAAG,GAAG,MAAI,CAACx1B,QAAL,GAAgBu1B,KAA1B;;AACA,cAAIC,GAAG,GAAG,MAAI,CAAC0nI,OAAL,CAAa31C,KAAvB,EAA8B;AAC1BhyF,YAAAA,KAAK;AACLC,YAAAA,GAAG,GAAG,MAAI,CAAC0nI,OAAL,CAAa31C,KAAnB;AACH;;AACD,cAAIhyF,KAAK,GAAG,CAAZ,EAAe;AACXA,YAAAA,KAAK,GAAG,CAAR;AACH;;AACD,gBAAI,CAACwlI,SAAL,GAAiBxlI,KAAjB;AACA,gBAAI,CAACikG,UAAL,GAAkBhkG,GAAlB;;AACA,gBAAI,CAACi0B,UAAL,CAAgB31D,IAAhB,CAAqB;AAAEokG,YAAAA,IAAI,EAAE3iE,KAAR;AAAerpB,YAAAA,IAAI,EAAE,MAAI,CAAClM;AAA1B,WAArB;AACH,SAZD;AAaH;;;aACD,eAAMq7J,UAAN,EAAkB/+B,SAAlB,EAA6B;AACzB,eAAO++B,UAAU,GAAG,CAAb,GAAkB,KAAKG,WAAL,CAAiBd,YAAjB,CAA8BW,UAAU,GAAG,CAA3C,IAAgD/+B,SAAlE,GAA+EA,SAAtF;AACH;;;aACD,iBAAQp0B,QAAR,EAAkB;AACd,eAAOuxC,MAAM,CAACvxC,QAAD,EAAW,KAAKC,SAAhB,CAAb;AACH;;;aACD,kBAASD,QAAT,EAAmB;AACf,eAAOuxC,MAAM,CAACvxC,QAAD,EAAW,KAAKquD,UAAhB,CAAb;AACH;;;aACD,oBAAWrgJ,KAAX,EAAkB;AACd,YAAIoqF,SAAS,CAAC,KAAK48D,OAAN,CAAb,EAA6B;AACzBhnJ,UAAAA,KAAK,IAAI,KAAKgnJ,OAAL,CAAahlE,IAAtB;AACH;;AACD,eAAO,KAAKyjE,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAP;AACH;;;aACD,kBAASA,KAAT,EAAgB;AACZ,eAAO,KAAKlzB,IAAL,KAAc,cAAd,IAAgCkzB,KAAK,GAAG,CAAR,KAAc,CAArD;AACH;;;aACD,sBAAaA,KAAb,EAAoB;AAChB,YAAI2oJ,SAAS,GAAG3oJ,KAAhB;;AACA,YAAI,KAAKslJ,WAAL,CAAiBf,OAArB,EAA8B;AAC1B;AACAoE,UAAAA,SAAS,GAAG,KAAKrD,WAAL,CAAiBqD,SAAjB,CAA2B3oJ,KAA3B,CAAZ;AACA;AACZ;;AACY,cAAM4oJ,iBAAiB,GAAG,KAAKC,8BAAL,CAAoCF,SAApC,IAAiD,CAAC,CAAlD,GAAsD,CAAhF;AACAA,UAAAA,SAAS,IAAIC,iBAAb;AACH;;AACD,YAAI,KAAK5B,OAAL,IAAgB2B,SAAS,GAAG,CAAC,CAAjC,EAAoC;AAChC,eAAKj9B,aAAL,CAAmBi9B,SAAnB;AACA;AACH;;AACD,YAAMlqK,KAAK,GAAG,KAAKA,KAAL,CAAW86B,OAAX,EAAd;;AACA,YAAI6wE,SAAS,CAAC3rG,KAAK,CAACkqK,SAAD,CAAN,CAAT,IAA+BA,SAAS,KAAK,CAAC,CAAlD,EAAqD;AACjD,eAAKr7K,MAAL,CAAYmR,KAAK,CAACkqK,SAAD,CAAL,CAAiB7xK,OAA7B;AACH;AACJ;;;aACD,uBAAckpB,KAAd,EAAqB;AACjB,YAAIioC,OAAO,GAAG,KAAKA,OAAL,CAAa5xD,aAA3B;AACA,YAAIyyK,gBAAgB,GAAG7gH,OAAO,CAAC15D,SAA/B;AACA,YAAMw6K,aAAa,GAAG/oJ,KAAK,GAAG,KAAKgnJ,OAAL,CAAa1tF,UAA3C;AACA,YAAM0vF,gBAAgB,GAAG,KAAKhC,OAAL,CAAa1tF,UAAtC;AACA,YAAM2vF,mBAAmB,GAAGhhH,OAAO,CAACxY,YAApC;AACA,YAAMy5H,cAAc,GAAGH,aAAa,GAAGC,gBAAvC;;AACA,YAAIF,gBAAgB,GAAGC,aAAvB,EAAsC;AAClCD,UAAAA,gBAAgB,GAAGC,aAAnB;AACH,SAFD,MAGK,IAAIG,cAAc,GAAIJ,gBAAgB,GAAGG,mBAAzC,EAA+D;AAChEH,UAAAA,gBAAgB,GAAII,cAAc,GAAGD,mBAArC;AACH;;AACDhhH,QAAAA,OAAO,CAAC15D,SAAR,GAAoBu6K,gBAApB;AACH;;;aACD,gBAAOlqK,IAAP,EAAa;AACT,YAAI,CAACA,IAAL,EAAW;AACP;AACH;;AACD,YAAMvI,aAAa,GAAGuI,IAAI,CAACvI,aAA3B;AACA,YAAI4xD,OAAO,GAAG,KAAKA,OAAL,CAAa5xD,aAA3B;AAAA,YAA0C0yK,aAAa,GAAG1yK,aAAa,CAAC6lF,SAAxE;AAAA,YAAmF8sF,gBAAgB,GAAG3yK,aAAa,CAACg4C,YAApH;AAAA,YAAkIy6H,gBAAgB,GAAG7gH,OAAO,CAAC15D,SAA7J;AAAA,YAAwK06K,mBAAmB,GAAGhhH,OAAO,CAACxY,YAAtM;AAAA,YAAoNy5H,cAAc,GAAGH,aAAa,GAAGC,gBAArP;;AACA,YAAIF,gBAAgB,GAAGC,aAAvB,EAAsC;AAClCD,UAAAA,gBAAgB,GAAGC,aAAnB;AACH,SAFD,MAGK,IAAIG,cAAc,GAAIJ,gBAAgB,GAAGG,mBAAzC,EAA+D;AAChEH,UAAAA,gBAAgB,GAAII,cAAc,GAAGD,mBAArC;AACH;;AACDhhH,QAAAA,OAAO,CAAC15D,SAAR,GAAoBu6K,gBAApB;AACH;AACD;AACJ;AACA;;;;aACI,wBAAe;AACX,YAAI,EAAE1+D,SAAS,CAAC,KAAK3rG,KAAN,CAAT,IAAyB,KAAKA,KAAL,CAAW5E,MAApC,IAA8CuwG,SAAS,CAAC,KAAKh+D,IAAN,CAAvD,IAAsEg+D,SAAS,CAAC,KAAKniD,OAAN,CAAjF,CAAJ,EAAsG;AAClG,iBAAO,KAAP;AACH;;AACD,YAAMkhH,gBAAgB,GAAG/+D,SAAS,CAAC,KAAK48D,OAAN,CAAT,IAA2B,KAAKE,mBAAL,EAApD;AACA,eAAOiC,gBAAgB,IAAI,KAAK/8H,IAAL,CAAU/1C,aAAV,CAAwB8iF,YAAxB,GAAuC,KAAKlxB,OAAL,CAAa5xD,aAAb,CAA2Bg4C,YAA7F;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,YAAI,KAAK24H,OAAT,EAAkB;AACd,cAAMC,QAAQ,GAAG,KAAKC,mBAAL,KAA6B,QAA7B,GAAwC,QAAzD;AACA,eAAKh+K,QAAL,CAAc29D,QAAd,CAAuB,KAAKoB,OAAL,CAAa5xD,aAApC,EAAmD,YAAnD,EAAiE4wK,QAAjE;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,+BAAsB;AAClB,YAAMgC,mBAAmB,GAAG,KAAKhhH,OAAL,CAAa5xD,aAAb,CAA2Bg4C,YAAvD;AACA,YAAM+6H,mBAAmB,GAAG,KAAKC,gBAAL,IAAyB,KAAKA,gBAAL,CAAsBhzK,aAAtB,CAAoCg4C,YAAzF;AACA,eAAO,KAAKg7H,gBAAL,IAAyBD,mBAAmB,GAAGH,mBAAtD;AACH;;;aACD,yBAAgB;AAAA;;AACZ,aAAKxqK,KAAL,CAAWrU,OAAX,CAAmB,UAACwU,IAAD,EAAOohB,KAAP,EAAiB;AAChC,cAAMuoJ,OAAO,GAAG,CAACvoJ,KAAK,GAAG,MAAI,CAAC6kJ,SAAd,IAA2B,MAAI,CAACmC,OAAL,CAAa1tF,UAAxD;;AACA,gBAAI,CAACpwF,QAAL,CAAc29D,QAAd,CAAuBjoD,IAAI,CAAC9H,OAAL,CAAaT,aAApC,EAAmD,WAAnD,uBAA8EkyK,OAA9E;AACH,SAHD;AAIH;AACD;AACJ;AACA;;;;aACI,wCAA+BniC,SAA/B,EAA0C;AACtC,YAAI,CAACh8B,SAAS,CAAC,KAAK48D,OAAN,CAAd,EAA8B;AAC1B,iBAAO,IAAP;AACH;;AACD,eAAO,KAAKA,OAAL,CAAahlE,IAAb,KAAsB,CAAtB,IAA4B,KAAKglE,OAAL,CAAal9J,QAAb,GAAwBs8H,SAA3D;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAKt5I,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAK5D,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmD,QAAnD;;AACA,cAAI,KAAK1J,IAAT,EAAe;AACX,iBAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,MAAD,EAAS,KAAK1hI,IAAd,CAA/D;AACH;AACJ;;AACD,YAAIy9G,SAAS,CAAC,KAAK48D,OAAN,CAAb,EAA6B;AACzB,eAAK99K,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmD,KAAKuxK,gBAAxD;AACH;AACJ;;;;;;AAELh2D,EAAAA,aAAa,CAACpjF,IAAd;AAAA,qBAA2GojF,aAA3G,EAx3CsGxtH,gEAw3CtG,CAA0IkgL,WAA1I,GAx3CsGlgL,gEAw3CtG,CAAkKA,sDAAlK,GAx3CsGA,gEAw3CtG,CAA4Lu4I,gBAA5L,GAx3CsGv4I,gEAw3CtG,CAAyNihL,oBAAzN,GAx3CsGjhL,gEAw3CtG,CAA0PA,6DAA1P,GAx3CsGA,gEAw3CtG,CAA2RA,kDAA3R,GAx3CsGA,gEAw3CtG,CAAiTA,qDAAjT;AAAA;;AACAwtH,EAAAA,aAAa,CAAC1gF,IAAd,kBAz3CsG9sC,gEAy3CtG;AAAA,UAA+FwtH,aAA/F;AAAA;AAAA;AAAA;AAz3CsGxtH,QAAAA,0DAy3CtG;AAz3CsGA,QAAAA,0DAy3CtG;AAz3CsGA,QAAAA,0DAy3CtG;AAz3CsGA,QAAAA,0DAy3CtG,CAAw9BiiL,iBAAx9B;AAAA;;AAAA;AAAA;;AAz3CsGjiL,QAAAA,6DAy3CtG,MAz3CsGA,0DAy3CtG;AAz3CsGA,QAAAA,6DAy3CtG,MAz3CsGA,0DAy3CtG;AAz3CsGA,QAAAA,6DAy3CtG,MAz3CsGA,0DAy3CtG;AAz3CsGA,QAAAA,6DAy3CtG,MAz3CsGA,0DAy3CtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAz3CsGA,mEAy3CtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAz3CsGA,QAAAA,yDA03ClG,iDADJ;AAz3CsGA,QAAAA,6DAy4ClG,+BAhBJ;AAz3CsGA,QAAAA,yDAm5C7F,4CA1BT;AAz3CsGA,QAAAA,yDAo7C7F,4CA3DT;AAz3CsGA,QAAAA,yDAo+C9F,iFA3GR;AAz3CsGA,QAAAA,2DAy+ClG,EAhHJ;AAz3CsGA,QAAAA,yDA0+ClG,iDAjHJ;AAz3CsGA,QAAAA,2DA++ClG,EAtHJ;AAAA;;AAAA;AAz3CsGA,QAAAA,yDA03C5F,iCADV;AAz3CsGA,QAAAA,wDA04C9F,GAjBR;AAz3CsGA,QAAAA,yDA04C9F,sBAjBR;AAz3CsGA,QAAAA,0DA24C9F,+DAlBR;AAz3CsGA,QAAAA,wDAg5C9F,GAvBR;AAz3CsGA,QAAAA,yDAg5C9F,eAvBR;AAz3CsGA,QAAAA,0DAi5C9F,wCAxBR;AAz3CsGA,QAAAA,wDAm5C/E,GA1BvB;AAz3CsGA,QAAAA,yDAm5C/E,8CA1BvB;AAz3CsGA,QAAAA,wDAo7C/E,GA3DvB;AAz3CsGA,QAAAA,yDAo7C/E,iCA3DvB;AAz3CsGA,QAAAA,wDAq+CzF,GA5Gb;AAz3CsGA,QAAAA,yDAq+CzF,sBA5Gb;AAz3CsGA,QAAAA,wDA0+C5F,GAjHV;AAz3CsGA,QAAAA,yDA0+C5F,qBAjHV;AAAA;AAAA;AAAA,iBAuH0C+6K,kFAvH1C,EAuHyKO,kDAvHzK,EAuH2PA,qDAvH3P,EAuH8ThuD,wBAvH9T,EAuH8ZguD,qDAvH9Z,EAuHygB2G,iBAvHzgB,EAuHulBC,mBAvHvlB,EAuH8tB5G,qDAvH9tB;AAAA;AAAA;SAlVM9tD;;;AA0cN;AAAA;AAAA;AAqLA;AACA;AACA;;;IACM4D;MAAAA;;;;;;;;;;;;IAAiBnM;;AAEvBmM,EAAAA,QAAQ,CAAChnF,IAAT;AAAA;AAAA;AAAA,gEA3qDsGpqC,oEA2qDtG,CAAsGoxH,QAAtG,SAAsGA,QAAtG;AAAA;AAAA;;AACAA,EAAAA,QAAQ,CAACxmF,IAAT,kBA5qDsG5qC,gEA4qDtG;AAAA,UAA0FoxH,QAA1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA5qDsGpxH,yEA4qDtG;AAAA;SAHMoxH;;;AAIN;AAAA;AAAA;AAYA;AACA;AACA;;;IACMuxC;MAAAA;;;;;AACF,wCAAY74I,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,aAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;IAJoCsnG;;AAMzCuxC,EAAAA,0BAA0B,CAACv4H,IAA3B;AAAA,qBAAwHu4H,0BAAxH,EAlsDsG3iK,gEAksDtG,CAAoKkE,8EAApK;AAAA;;AACAy+J,EAAAA,0BAA0B,CAAC/3H,IAA3B,kBAnsDsG5qC,gEAmsDtG;AAAA,UAA4G2iK,0BAA5G;AAAA;AAAA,eAnsDsG3iK,iEAmsDtG,CAAsd,CAC9c;AACIoD,MAAAA,OAAO,EAAEguH,QADb;AAEIhhF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM0yI,0BAAN;AAAA,OAAD;AAF3B,KAD8c,CAAtd,GAnsDsG3iK,yEAmsDtG;AAAA;SAPM2iK;;;AAaN;AAAA;AAAA;;AAqBA,IAAMuiB,QAAQ,GAAG,EAAjB;AACA,IAAMC,cAAc,GAAG,QAAvB;AACA,IAAMC,iBAAiB,GAAG,QAA1B;AACA,IAAMC,mBAAmB,GAAG,OAA5B;AACA;AACA;AACA;;AACA,IAAMC,2BAA2B,GAAG;AAChChiL,EAAAA,KAAK,EAAE,IADyB;AAEhCF,EAAAA,OAAO,EAAEguB,8DAFuB;AAGhCgf,EAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,WAAMs1J,qBAAN;AAAA,GAAD;AAHS,CAApC;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMA;MAAAA;AACF,mCAAYp9D,YAAZ,EAA0B+4D,WAA1B,EAAuCvvD,YAAvC,EAAqDyoB,gBAArD,EAAuE7qB,iBAAvE,EAA0F8xD,oBAA1F,EAAgH36G,KAAhH,EAAuH3hE,GAAvH,EAA4HD,QAA5H,EAAsIolD,WAAtI,EAAmJu6E,YAAnJ,EAAiK;AAAA;;AAC7J,WAAKtc,YAAL,GAAoBA,YAApB;AACA,WAAK+4D,WAAL,GAAmBA,WAAnB;AACA,WAAKvvD,YAAL,GAAoBA,YAApB;AACA,WAAKyoB,gBAAL,GAAwBA,gBAAxB;AACA,WAAK7qB,iBAAL,GAAyBA,iBAAzB;AACA,WAAK8xD,oBAAL,GAA4BA,oBAA5B;AACA,WAAK36G,KAAL,GAAaA,KAAb;AACA,WAAK3hE,GAAL,GAAWA,GAAX;AACA,WAAKD,QAAL,GAAgBA,QAAhB;AACA,WAAKolD,WAAL,GAAmBA,WAAnB;AACA,WAAKu6E,YAAL,GAAoBA,YAApB;AACA;AACR;AACA;AACA;;AACQ,WAAK+gD,cAAL,GAAsB,IAAtB;AACA;AACR;AACA;;AACQ,WAAK7zB,WAAL,eAAwB9sC,IAAI,EAA5B;AACA;AACR;AACA;;AACQ,WAAKhqB,WAAL,GAAmB,EAAnB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKwjE,UAAL,GAAkB,GAAlB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKonB,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;;AACQ,WAAKhuJ,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK1H,QAAL,GAAgB,CAAhB;AACA;AACR;AACA;AACA;;AACQ,WAAK4qJ,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK/qC,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK+yK,YAAL,GAAoB,IAAI/yK,wDAAJ,EAApB;AACA;AACR;AACA;AACA;;AACQ,WAAK6B,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;;AACQ,WAAKkhB,MAAL,GAAc,IAAIlhB,wDAAJ,EAAd;AACA;AACR;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAK07C,MAAL,GAAc,IAAI17C,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA,WAAKgzK,aAAL,GAAqB,IAArB;AACA,WAAKC,SAAL,GAAiBhhE,IAAI,EAArB;AACA,WAAKihE,YAAL,GAAoBjhE,IAAI,EAAxB;AACA,WAAKkhE,gBAAL,GAAwBxhH,IAAxB;AACA,WAAKyhH,iBAAL,GAAyBzhH,IAAzB;;AACA,WAAK0hH,qBAAL,GAA6B,UAACtmL,KAAD;AAAA,eAAWA,KAAK,CAACkU,cAAN,EAAX;AAAA,OAA7B;;AACA,WAAK67G,cAAL,GAAsB;AAAE9iH,QAAAA,OAAO,EAAE;AAAX,OAAtB;AACA,WAAKyH,KAAL,GAAa,KAAb;AACA,WAAKw9B,MAAL,GAAc,EAAd;AACA,WAAKq0I,kBAAL,GAA0B,IAAIhoK,0CAAJ,EAA1B;AACA,WAAK2xG,UAAL,GAAkB,KAAlB;AACA,WAAKrH,KAAL,GAAa,QAAb;AACA,WAAKC,QAAL,GAAgB,QAAhB;AACA,WAAKC,SAAL,GAAiB,OAAjB;AACAvD,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAKlvE,SAAL,GAAiB4xE,YAAY,CAACW,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;AACA,WAAKgH,OAAL,GAAe,KAAK5lE,WAAL,CAAiBj4C,aAAhC;AACA,WAAK/T,IAAL,GAAY,EAAZ;AACA,WAAKmvH,eAAL;AACA,WAAK84D,oBAAL;AACA,WAAK/rC,gBAAL,CAAsBgsC,cAAtB,CAAqC,CAAC,CAAC,CAAF,CAArC;AACH;;;;WACD,eAAY;AACR,YAAIC,kBAAkB,GAAG,CAAzB;;AACA,YAAI5hE,oFAAmB,EAAvB,EAA2B;AACvB4hE,UAAAA,kBAAkB,GAAG,KAAKv2D,OAAL,CAAan/G,WAAlC;AACH;;AACD,YAAMD,KAAK,GAAG,KAAKqiH,aAAL,CAAmBriH,KAAnB,IAA4B21K,kBAA1C;AACA,YAAM3sF,QAAQ,GAAG5wD,KAAK,CAACu9I,kBAAD,CAAL,GAA4BA,kBAA5B,aAAoDA,kBAApD,OAAjB;AACA,YAAMxU,QAAQ,GAAG/oI,KAAK,CAACp4B,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAjB;AACA,eAAO;AAAEg4B,UAAAA,GAAG,EAAEgxD,QAAP;AAAiBjxD,UAAAA,GAAG,EAAEopI;AAAtB,SAAP;AACH;;;WACD,eAAa;AACT,YAAMyU,WAAW,GAAG,KAAKvzD,aAAL,CAAmB9lH,MAAvC;AACA,eAAO+4G,SAAS,CAACsgE,WAAD,CAAT,aAA4BA,WAA5B,UAA8C,MAArD;AACH;;;WACD,eAA2B;AACvB,YAAMC,gBAAgB,GAAG,CAAC,kBAAD,EAAqB,SAArB,CAAzB;;AACA,YAAI,KAAKxzD,aAAL,CAAmBpD,UAAvB,EAAmC;AAC/B42D,UAAAA,gBAAgB,CAAChxK,IAAjB,CAAsB,KAAKw9G,aAAL,CAAmBpD,UAAzC;AACH;;AACD,eAAO42D,gBAAP;AACH;;;WACD,eAAiB;AACb,YAAI,CAAC,KAAK5tK,IAAN,IAAc,CAAC,KAAKomK,aAAxB,EAAuC;AACnC,eAAKA,aAAL,GAAqBlxJ,SAArB;AACA;AACH;;AACD,YAAM24J,QAAQ,GAAG,KAAKzH,aAAL,CAAmBtkK,WAAnB,GAAiCu2I,UAAjC,CAA4C,KAAKr4I,IAAL,CAAU8B,WAAV,EAA5C,CAAjB;AACA,YAAMgsK,aAAa,GAAG,KAAKC,OAAL,IAAgB,CAAC,KAAKC,gBAA5C;;AACA,YAAIF,aAAa,IAAID,QAArB,EAA+B;AAC3B,iBAAO,KAAKzH,aAAZ;AACH;AACJ;;;WACD,eAAe;AACX,YAAQpxF,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;;;WACD,eAA2B;AACvB,YAAI,KAAK82C,YAAT,EAAuB;AACnB,iBAAO,SAAP;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,gBAAOhwH,IAAP,EAAa;AAAA;;AACT1G,QAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B,YAAM;AAC7B,cAAM07H,UAAU,GAAGrT,SAAS,CAACvxG,IAAD,CAAT,GAAkBA,IAAlB,GAAyB,CAAC,MAAI,CAACJ,KAAlD;;AACA,gBAAI,CAACg+G,OAAL,CAAagH,UAAb;AACH,SAHD;AAIH;AACD;AACJ;AACA;;;;WACI,eAAa;AACT,eAAO,KAAKhlH,KAAZ;AACH;AACD;AACJ;AACA;;;;aACI,qBAAYI,IAAZ,EAAkB;AACd,YAAMu8B,UAAU,GAAG,KAAKvZ,QAAL,IAAiB,KAAK+K,QAAzC;AACA,YAAMokJ,SAAS,GAAG,KAAKtzK,MAAL,KAAgBmB,IAAlC;;AACA,YAAIu8B,UAAU,IAAI41I,SAAlB,EAA6B;AACzB;AACH;;AACD,YAAM75D,kBAAkB,GAAG,KAAK85D,kBAAL,CAAwBpyK,IAAxB,CAA3B;;AACA,YAAI,CAACs4G,kBAAL,EAAyB;AACrB,eAAKsF,OAAL,CAAa59G,IAAb;AACH;AACJ;;;WACD,eAAuB;AACnB,YAAI,CAAC,KAAKnB,MAAN,IAAgB,CAAC0yG,SAAS,CAAC,KAAKo0B,gBAAL,CAAsBziH,OAAvB,CAA1B,IAA6D,KAAKyiH,gBAAL,CAAsBziH,OAAtB,KAAkC,CAAC,CAApG,EAAuG;AACnG,iBAAO,IAAP;AACH;;AACD,YAAMi2F,QAAQ,GAAG,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwB,KAAKvmC,gBAAL,CAAsBziH,OAA9C,CAAjB;AACA,eAAO,KAAKmuJ,YAAL,GAAoB,GAApB,GAA0B3mB,MAAM,CAACvxC,QAAD,EAAW,KAAKquD,UAAhB,CAAvC;AACH;;;WACD,eAAkB;AACd,YAAI,KAAK/9K,IAAL,CAAUuX,MAAV,KAAqB,CAAzB,EAA4B;AACxB,iBAAO,KAAKqxK,UAAL,CAAgB,YAAhB,CAAP;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;WAaI,eAAW;AACP,YAAMlE,OAAO,GAAG,KAAKA,OAArB;;AACA,YAAIA,OAAJ,EAAa;AACT,cAAM3nI,KAAK,GAAG2nI,OAAO,CAAChlE,IAAR,IAAgB,CAA9B;AACA,cAAM1iE,GAAG,GAAGD,KAAK,GAAG2nI,OAAO,CAACl9J,QAA5B,CAFS,CAGT;;AACAk9J,UAAAA,OAAO,CAAC31C,KAAR,GAAgB,KAAKi0C,WAAL,CAAiBhjL,IAAjB,CAAsBuX,MAAtC;AACA,iBAAO,KAAKyrK,WAAL,CAAiBhjL,IAAjB,CAAsByc,KAAtB,CAA4BsgC,KAA5B,EAAmCC,GAAnC,CAAP;AACH;;AACD,eAAO,KAAKgmI,WAAL,CAAiBhjL,IAAxB;AACH;AACD;AACJ;AACA;;WAzBI,aAASA,IAAT,EAAe;AACX,aAAKgjL,WAAL,CAAiBhjL,IAAjB,GAAwBA,IAAI,IAAI,EAAhC;;AACA,YAAI,KAAK0kL,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,YAAI,KAAK8nE,UAAT,EAAqB;AACjB,eAAKtrC,gBAAL,CAAsBziH,OAAtB,GAAgC,KAAKrkB,MAAL,IAAe,KAAKpV,IAAL,CAAUuX,MAAzB,IAAmC,KAAK+vK,cAAxC,GAAyD,KAAKhE,mBAAL,CAAyB,CAAzB,CAAzD,GAAuF,CAAC,CAAxH;AACH;;AACD,YAAI,KAAKkF,OAAL,IAAgB,KAAKxF,WAAL,CAAiBN,UAAjB,GAA8B,CAAlD,EAAqD;AACjD,eAAK7B,aAAL,GAAqB5f,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB,CAAxB,CAAD,EAA6B,KAAK1E,UAAlC,CAA3B;AACH;AACJ;;;WAqBD,eAAY;AACR,eAAO,KAAKpqI,MAAL,IAAeqzI,QAAtB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAlBI,aAAUn+D,QAAV,EAAoB;AAChB,aAAK4F,cAAL,CAAoB5F,QAApB;AACA,aAAKl1E,MAAL,GAAck1E,QAAQ,IAAIm+D,QAA1B;AACA,aAAKvsK,IAAL,GAAY,KAAKrI,KAAjB;AACA,aAAKvL,GAAL,CAASS,YAAT;AACH;;;WAiBD,eAAoB;AAChB,eAAO,KAAKkqH,cAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;WAVI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc;AAAElQ,UAAAA,OAAO,EAAE;AAAX,SAAd,EAAiCwlH,QAAjC,CAAtB;AACH;;;WASD,aAAiBrhF,EAAjB,EAAqB;AACjB,YAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;AAC1B,gBAAM,IAAIhsB,KAAJ,yDAA2D5F,IAAI,CAACC,SAAL,CAAe2xB,EAAf,CAA3D,OAAN;AACH;;AACD,aAAKswI,oBAAL,CAA0BF,YAA1B,GAAyCpwI,EAAzC;AACH;AACD;AACJ;AACA;;;;WAII,eAAe;AACX,eAAO,KAAKjW,QAAZ;AACH;AACD;AACJ;AACA;;WARI,aAAaotB,QAAb,EAAuB;AACnB,aAAKptB,QAAL,GAAgBotB,QAAhB;AACH;;;WAUD,eAAc;AACV,eAAO,KAAK6+H,gBAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAfI,aAAY30D,QAAZ,EAAsB;AAClB,aAAK20D,gBAAL,GAAwBhF,+BAA+B,CAAC3vD,QAAD,CAAvD;AACH;;;WAsBD,eAAW;AACP,eAAO,KAAK5J,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WArBI,aAASjgH,IAAT,EAAe;AACX,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAU48K,cAA9B;AACA,aAAKrgL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAA/B,EAAwCma,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAApD;;AACA,YAAIA,IAAI,KAAK,MAAb,EAAqB;AACjB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAA5B,EAAqCma,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAAjD;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAa47D,iBAAvC;AACA,aAAKtgL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAA/B,EAAwCoa,eAAe,CAAC,KAAK1gB,OAAN,CAAvD;;AACA,YAAIA,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAA5B,EAAqCoa,eAAe,CAACzgB,UAAD,CAApD;AACH;;AACD,aAAKhB,QAAL,GAAgBgB,UAAhB;AACH;;;WAsBD,eAAe;AACX,eAAO,KAAKf,SAAZ;AACH;WAVD,aAAatB,QAAb,EAAuB;AACnB,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAci+D,mBAA1C;AACA,aAAKvgL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAA/B,EAAwCqa,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAxD;;AACA,YAAIA,QAAQ,KAAK,MAAjB,EAAyB;AACrB,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAA5B,EAAqCqa,gBAAgB,CAAC,OAAD,EAAUzgB,WAAV,CAArD;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;WAID,eAAgB;AACZ,eAAO,KAAKmG,UAAZ;AACH;WACD,aAAcj/E,SAAd,EAAyB;AACrB,aAAK9rC,QAAL,CAAc8rC,SAAS,GAAG,UAAH,GAAgB,aAAvC,EAAsD,KAAKk/E,OAA3D,EAAoE,SAApE;AACA,aAAKD,UAAL,GAAkBj/E,SAAlB;AACH;;;WACD,eAAiB;AACb,eAAO,KAAKnZ,QAAZ;AACH;;;WACD,eAAgB;AACZ,eAAO,KAAKy2D,OAAZ;AACH;;;WACD,eAAU;AACN,eAAO,KAAK33C,SAAZ;AACH;;;aACD,oBAAW;AAAA;;AACP,aAAKzxC,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAnC,EAA4C,UAA5C;AACA,aAAKg7B,8BAAL,GAAsC,KAAK3iC,YAAL,CACjCv5G,OADiC,CAEjChP,SAFiC,CAEvB,iBAAa;AAAA,cAAVkpH,GAAU,SAAVA,GAAU;AACxB,gBAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA/B;;AACA,gBAAI,CAAC/jH,GAAL,CAASoC,aAAT;AACH,SALqC,CAAtC;AAMA,aAAKysJ,mBAAL;AACH;;;aACD,uBAAc;AACV,aAAKvgC,YAAL;AACA,aAAK2zD,iBAAL;;AACA,YAAI,KAAKl8B,8BAAT,EAAyC;AACrC,eAAKA,8BAAL,CAAoC/qJ,WAApC;AACH;AACJ;;;aACD,qBAAY6O,OAAZ,EAAqB;AACjB,YAAMg0K,OAAO,GAAG,KAAKA,OAArB;AACA,YAAMqE,kBAAkB,GAAGrE,OAAO,IAAIh0K,OAAO,CAAC1Q,IAAnB,IAA2B0Q,OAAO,CAAC1Q,IAAR,CAAagjE,aAAb,EAAtD;;AACA,YAAI+lH,kBAAJ,EAAwB;AACpB,eAAK93G,UAAL,CAAgB;AAAEyuC,YAAAA,IAAI,EAAE,CAAR;AAAWhsF,YAAAA,IAAI,EAAEgxJ,OAAO,CAACl9J;AAAzB,WAAhB;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAKpV,KAAL,GAAa40K,QAAb;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW9pK,GAAX,EAAgB;AACZ,eAAO,KAAK+sG,YAAL,CAAkBnsG,GAAlB,CAAsBZ,GAAtB,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWzb,KAAX,EAAkB;AACdA,QAAAA,KAAK,CAACunL,wBAAN;AACA,aAAKhlI,KAAL;AACA,aAAK9hC,MAAL,CAAY8kK,QAAZ;;AACA,YAAI,KAAKQ,UAAT,EAAqB;AACjB,eAAKC,YAAL,CAAkBnsK,IAAlB,CAAuB,EAAvB;AACH;;AACD,aAAK4gI,gBAAL,CAAsBgsC,cAAtB,CAAqC,EAArC;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW91K,KAAX,EAAkB;AACd,aAAKA,KAAL,GAAaA,KAAb;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKg1I,gBAAL,GAAwBh1I,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKi1I,iBAAL,GAAyBj1I,EAAzB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,UAAjB,EAA6B;AACzB,aAAKvZ,QAAL,GAAgBuZ,UAAhB;AACH;AACD;AACJ;AACA;AACA;;;;aACI,qBAAYpV,KAAZ,EAAmB;AACf,YAAM6qG,SAAS,GAAG7qG,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAG,KAAK19B,IAAL,CAAUuX,MAAlD;;AACA,YAAIuwG,SAAS,CAACpqF,KAAD,CAAT,IAAoB6qG,SAApB,IAAiC,CAAC,KAAK46C,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAtC,EAAwF;AACpF,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4BtmB,KAA5B;AACH,SAFD,MAGK;AACD,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4B,CAAC,CAA7B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAK0vJ,SAAL,CAAejlI,KAAf;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAK0vJ,SAAL,CAAenoF,IAAf;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW;AACP,YAAI,KAAK3qF,KAAT,EAAgB;AACZ,cAAM+yK,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,4BAAqB,KAAKviH,KAA1B;AAAA,cAAQg4B,GAAR,eAAQA,GAAR;AAAA,cAAaD,GAAb,eAAaA,GAAb;AACA2+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACH;AACJ;;;aACD,oBAAWn4B,KAAX,EAAkB;AACd,aAAKy1K,gBAAL,CAAsBz1K,KAAtB;AACA,aAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsBlJ,KAAtB;AACH;;;aACD,wBAAey2G,QAAf,EAAyB;AACrB,YAAI,CAACxC,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAIyB,SAAS,CAACe,QAAD,CAAT,IAAuB,OAAOA,QAAP,KAAoB,QAA/C,EAAyD;AACrD,gBAAM,IAAIhiG,KAAJ,CAAU,8HAAV,CAAN;AACH;AACJ;;;aACD,gBAAOpM,IAAP,EAA4B;AAAA,YAAf8nK,SAAe,uEAAH,CAAG;AACxB,YAAI7kJ,KAAJ;;AACA,YAAIjjB,IAAI,CAAClD,MAAL,IAAe,KAAKyrK,WAAL,CAAiBN,UAApC,EAAgD;AAC5ChlJ,UAAAA,KAAK,GAAG,KAAKslJ,WAAL,CAAiBnmI,SAAjB,CAA2B,KAAKssI,kBAAL,CAAwB1uK,IAAxB,CAA3B,EAA0D8nK,SAA1D,CAAR;AACH,SAFD,MAGK;AACD7kJ,UAAAA,KAAK,GAAG,CAAC,CAAT;AACH;;AACD,YAAI,KAAKylJ,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD,cAAIA,KAAK,GAAG,CAAR,GAAY,KAAKslJ,WAAL,CAAiBN,UAAjC,EAA6C;AACzC,iBAAKn0H,MAAL,CAAY9zC,IAAZ,EAAkBijB,KAAK,GAAG,CAA1B;AACH,WAFD,MAGK;AACD,iBAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4B,CAAC,CAA7B;AACH;AACJ,SAPD,MAQK;AACD,eAAKk4F,gBAAL,CAAsBl4F,KAAtB,CAA4BtmB,KAA5B;;AACA,cAAI,KAAK8qJ,OAAT,EAAkB;AACd,iBAAK3H,aAAL,GAAqB5f,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAD,EAAiC,KAAKqgJ,UAAtC,CAA3B;AACH;AACJ;AACJ;;;aACD,kBAASrgJ,KAAT,EAAgB;AACZ,YAAI,CAAC,KAAKtoB,MAAV,EAAkB;AACd;AACH;;AACD,aAAK8mI,gBAAL,CAAsBl4F,KAAtB,CAA4BtmB,KAA5B;AACH;AACD;AACJ;AACA;;;;aACI,wBAAej8B,KAAf,EAAsB;AAClB,YAAMg4B,OAAO,GAAGmR,KAAK,CAAC,KAAKsxG,gBAAL,CAAsBziH,OAAvB,CAAL,GAAuC,KAAK6pJ,mBAAL,CAAyB,CAAzB,CAAvC,GAAqE,KAAKpnC,gBAAL,CAAsBziH,OAA3G;;AACA,YAAI,KAAKF,QAAL,IAAiB,KAAK+K,QAAtB,IAAkCsG,KAAK,CAACnR,OAAD,CAA3C,EAAsD;AAClD;AACH;;AACD,YAAMo/E,MAAM,GAAG,KAAKwY,iBAAL,CAAuByB,OAAvB,CAA+B;AAC1Ch8E,UAAAA,OAAO,EAAErd,OADiC;AAE1C8Q,UAAAA,GAAG,EAAE,KAAKy4I,WAAL,CAAiBN,UAAjB,GAA8B,CAFO;AAG1Cl4I,UAAAA,GAAG,EAAE,CAHqC;AAI1CysF,UAAAA,aAAa,EAAEx1H;AAJ2B,SAA/B,CAAf;;AAMA,YAAIo3G,MAAM,KAAKoX,gBAAgB,CAACQ,SAA5B,IACA5X,MAAM,KAAKoX,gBAAgB,CAACt5B,SAD5B,IAEAkiB,MAAM,KAAKoX,gBAAgB,CAACixD,MAF5B,IAGAroE,MAAM,KAAKoX,gBAAgB,CAACjqE,IAH5B,IAIA6yD,MAAM,KAAKoX,gBAAgB,CAAClqE,GAJ5B,IAKA8yD,MAAM,KAAKoX,gBAAgB,CAACsc,IAL5B,IAMA1zB,MAAM,KAAKoX,gBAAgB,CAACwc,KAN5B,KAOE5zB,MAAM,KAAKoX,gBAAgB,CAAC5pE,KAA5B,IAAqC,KAAKjxC,MAA3C,IAAsDyjG,MAAM,KAAKoX,gBAAgB,CAAC5pE,KAPnF,CAAJ,EAO+F;AAC3F5kD,UAAAA,KAAK,CAACkU,cAAN;AACH;AACJ;;;aACD,qBAAYlU,KAAZ,EAAmB;AACf,YAAMg4B,OAAO,GAAG,KAAKyiH,gBAAL,CAAsBziH,OAAtC;AACA,YAAIrnB,KAAJ;;AACA,YAAI,KAAKgD,MAAT,EAAiB;AACb3T,UAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;AACH;;AACD,YAAI8jB,OAAO,IAAI,CAAf,EAAkB;AACdrnB,UAAAA,KAAK,GAAG6uJ,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwBhpJ,OAAxB,CAAD,EAAmC,KAAKskJ,UAAxC,CAAd;AACH,SAFD,MAGK;AACD,cAAMjkK,KAAK,GAAG,KAAK0uK,OAAL,IAAgB,KAAK3H,aAArB,IAAsC,KAAK7gL,IAAL,CAAUuX,MAAhD,IACV0pJ,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB,CAAxB,CAAD,EAA6B,KAAK1E,UAAlC,CAAN,CAAoDxhK,WAApD,OAAsE,KAAK0sK,SAAL,CAAe72K,KAAf,CAAqBmK,WAArB,EAD1E;;AAEA,cAAI,KAAKnH,MAAL,IAAe0E,KAAnB,EAA0B;AACtB1H,YAAAA,KAAK,GAAG,KAAKyuK,aAAb;AACH,WAFD,MAGK;AACDzuK,YAAAA,KAAK,GAAG,KAAK62K,SAAL,CAAe72K,KAAvB;AACH;AACJ;;AACD,aAAK8P,MAAL,CAAY9P,KAAZ;AACH;;;aACD,wBAAe;AACX,aAAKknJ,WAAL,CAAiB,KAAjB;AACA,aAAKpd,gBAAL,CAAsBziH,OAAtB,GAAgC,CAAC,CAAjC;AACA,aAAKonJ,aAAL,GAAqB,IAArB;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgBpmK,IAAhB,EAAsB;AAClB,YAAM2uK,iBAAiB,GAAGthE,SAAS,CAAC,KAAKrtG,IAAN,CAAT,GAAuB,KAAKA,IAAL,CAAUlD,MAAjC,GAA0C,CAApE;AACA,aAAKkxK,gBAAL,GAAyBhuK,IAAI,CAAClD,MAAL,GAAc6xK,iBAAf,GAAoC,IAApC,GAA2C,KAAnE;AACA,aAAK3uK,IAAL,GAAYA,IAAZ;AACA,aAAK6+I,WAAL,CAAiB7+I,IAAI,CAAClD,MAAL,GAAc,CAA/B;;AACA,YAAI,CAAC,KAAK+vK,cAAV,EAA0B;AACtB,eAAKprC,gBAAL,CAAsBziH,OAAtB,GAAgC,CAAC,CAAjC;AACH;;AACD,YAAI,KAAK+tJ,UAAT,EAAqB;AACjB,eAAKC,YAAL,CAAkBnsK,IAAlB,CAAuBb,IAAvB;AACH,SAFD,MAGK,IAAI,KAAK6sK,cAAT,EAAyB;AAC1B,eAAK/4H,MAAL,CAAY9zC,IAAZ;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,uBAAc;AAAA;;AACV,aAAKi4B,SAAL,GAAiB,IAAjB;;AACA,YAAIg0E,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,eAAK0V,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,mBAAI,CAACub,OAAL,CAAax3C,IAAb;AACH,WAFD;AAGH;AACJ;AACD;AACJ;AACA;;;;aACI,sBAAa;AAAA;;AACT,YAAMme,OAAO,GAAG,KAAK+tJ,UAAL,GAAkB,KAAKtrC,gBAAL,CAAsBziH,OAAxC,GAAkD,CAAC,CAAnE;AACA,aAAKwvJ,SAAL,CAAe1kK,KAAf,CAAqBxQ,aAArB,CAAmCkvH,UAAnC,GAAgD,CAAhD,CAFS,CAE0C;;AACnD,YAAIvT,QAAJ;AACA,YAAIj1G,IAAJ;;AACA,YAAIgf,OAAO,KAAK,CAAC,CAAjB,EAAoB;AAChBi2F,UAAAA,QAAQ,GAAG,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwBhpJ,OAAxB,CAAX;AACAhf,UAAAA,IAAI,GAAGwmJ,MAAM,CAACvxC,QAAD,EAAW,KAAKquD,UAAhB,CAAN,IAAqC,EAA5C;AACH,SAHD,MAIK;AACDtjK,UAAAA,IAAI,GAAG,KAAKwuK,SAAL,CAAe72K,KAAtB;AACH;;AACD,YAAMi3K,UAAU,GAAG5uK,IAAI,KAAK,KAAKwuK,SAAL,CAAe72K,KAA3C;AACA,YAAMk3K,gBAAgB,GAAG7uK,IAAI,CAAC8B,WAAL,OAAuB,KAAK0sK,SAAL,CAAe72K,KAAf,CAAqBmK,WAArB,EAAhD;;AACA,YAAI,CAAC8sK,UAAD,IAAeC,gBAAnB,EAAqC;AACjC,eAAKptC,gBAAL,CAAsBgsC,cAAtB,CAAqC,EAArC;AACH;;AACD,aAAKx1I,SAAL,GAAiB,KAAjB;AACA,YAAM62I,eAAe,GAAG,KAAKn3K,KAAL,KAAe,KAAKqI,IAA5C;AACA,YAAM6rJ,SAAS,GAAG5/C,6EAAY,CAAC,KAAK1zD,MAAN,CAAZ,IAA6B0zD,6EAAY,CAAC,KAAKp0G,KAAN,CAAzC,IAAyD+sK,WAAW,CAAC,KAAKztD,OAAN,CAApE,IAAsF23D,eAAxG;;AACA,YAAIjjB,SAAJ,EAAe;AACX,eAAK99F,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,gBAAIgyI,eAAJ,EAAqB;AACjB,qBAAI,CAACrnK,MAAL,CAAY,OAAI,CAAC+mK,SAAL,CAAe72K,KAA3B;AACH;;AACD,mBAAI,CAAC4gD,MAAL,CAAY13C,IAAZ;;AACA,mBAAI,CAACwsK,iBAAL;;AACA,mBAAI,CAACxuB,WAAL,CAAiB,KAAjB;AACH,WAPD;AAQH,SATD,MAUK;AACD,eAAKA,WAAL,CAAiB,KAAjB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW73J,KAAX,EAAkB;AACd,YAAMijL,OAAO,GAAG,KAAKA,OAArB;AACAA,QAAAA,OAAO,CAAChlE,IAAR,GAAej+G,KAAK,CAACi+G,IAArB;AACH;;;aACD,gBAAOttG,KAAP,EAAc;AACV,aAAKknJ,WAAL,CAAiB,KAAjB;AACA,aAAK0uB,kBAAL,CAAwBnpK,IAAxB,CAA6BzM,KAA7B;AACH;;;aACD,2BAAkB;AAAA;;AACd,YAAI,CAACm0G,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,aAAKijE,uBAAL,GAA+B,KAAKxB,kBAAL,CAC1BtmL,SAD0B,CAChB,UAAA0Q,KAAK,EAAI;AACpB,cAAM43H,SAAS,GAAG,OAAI,CAAC53H,KAAL,KAAeA,KAAjC;AACA,iBAAI,CAACA,KAAL,GAAaA,KAAb;AACA,iBAAI,CAACqI,IAAL,GAAYrI,KAAZ,CAHoB,CAIpB;;AACA,cAAI43H,SAAJ,EAAe;AACX,mBAAI,CAAC9uH,UAAL,CAAgB9I,KAAhB;AACH;AACJ,SAT8B,CAA/B;AAUA,aAAKq3K,kBAAL,GAA0B,KAAKvtC,gBAAL,CAAsB1pG,QAAtB,CAA+B9wC,SAA/B,CAAyC,KAAKgoL,gBAAL,CAAsB79K,IAAtB,CAA2B,IAA3B,CAAzC,CAA1B;AACA,aAAK6+J,iBAAL,GAAyB,KAAKxuB,gBAAL,CAAsBppF,OAAtB,CAA8BpxD,SAA9B,CAAwC,KAAKioL,eAAL,CAAqB99K,IAArB,CAA0B,IAA1B,CAAxC,CAAzB;AACA,aAAK+9K,sBAAL,GAA8Br5K,4CAAK,CAAC,KAAK8gH,iBAAL,CAAuBqwB,EAAxB,EAA4B,KAAKrwB,iBAAL,CAAuBioD,IAAnD,CAAL,CAA8D53K,SAA9D,CAAwE,UAACD,KAAD;AAAA,iBAAW,OAAI,CAACgO,QAAL,CAAchO,KAAK,CAACi8B,KAApB,CAAX;AAAA,SAAxE,CAA9B;AACA,aAAKmsJ,iBAAL,GAAyB,KAAKx4D,iBAAL,CAAuB/+G,KAAvB,CAA6B5Q,SAA7B,CAAuC;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,KAAjB,CAAN;AAAA,SAAvC,CAAzB;AACA,aAAKwwB,iBAAL,GAAyB,KAAKz4D,iBAAL,CAAuBptF,KAAvB,CAA6BviC,SAA7B,CAAuC,KAAKqoL,WAAL,CAAiBl+K,IAAjB,CAAsB,IAAtB,CAAvC,CAAzB;AACA,aAAKm+K,eAAL,GAAuB,KAAK34D,iBAAL,CAAuBf,GAAvB,CAA2B5uH,SAA3B,CAAqC,KAAK83K,YAAL,CAAkB3tK,IAAlB,CAAuB,IAAvB,CAArC,CAAvB;AACH;;;aACD,gCAAuB;AAAA;;AACnB,YAAI,CAAC06G,oFAAmB,EAApB,IAA0B,CAAC,KAAKggB,YAApC,EAAkD;AAC9C;AACH;;AACD,aAAK/9D,KAAL,CAAW7xB,iBAAX,CAA6B;AAAA,iBAC7B;AACA,mBAAI,CAACszI,wBAAL,GAAgC,OAAI,CAACrjL,QAAL,CAAc0tE,MAAd,CAAqB3tE,QAArB,EAA+B,YAA/B,EAA6C,UAACmE,CAAD,EAAO;AAChF,kBAAMM,MAAM,GAAGN,CAAC,CAACM,MAAjB;;AACA,kBAAI,OAAI,CAACsnC,SAAL,IAAkB,CAACgtI,UAAU,CAAC,OAAI,CAAC1zH,WAAN,EAAmB5gD,MAAnB,EAA2B,OAAI,CAACspH,QAAhC,CAAjC,EAA4E;AACxE,uBAAI,CAAClsD,KAAL,CAAWjxB,GAAX,CAAe;AAAA,yBAAM,OAAI,CAACupD,IAAL,EAAN;AAAA,iBAAf;AACH;AACJ,aAL+B;AAFH;AAAA,SAA7B;AAQH;;;aACD,6BAAoB;AAChB,YAAI,CAACylB,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,aAAKkjE,kBAAL,CAAwB5nL,WAAxB;AACA,aAAK+nL,sBAAL,CAA4B/nL,WAA5B;AACA,aAAKgoL,iBAAL,CAAuBhoL,WAAvB;AACA,aAAKioL,iBAAL,CAAuBjoL,WAAvB;AACA,aAAKmoL,eAAL,CAAqBnoL,WAArB;AACA,aAAK2nL,uBAAL,CAA6B3nL,WAA7B;AACA,aAAK6oK,iBAAL,CAAuB7oK,WAAvB;;AACA,YAAI,KAAKooL,wBAAT,EAAmC;AAC/B,eAAKA,wBAAL;AACH;AACJ;;;aACD,0BAAiBxoL,KAAjB,EAAwB;AACpB,YAAMi8B,KAAK,GAAGj8B,KAAK,CAACmgL,OAAN,CAAcrqK,MAAd,GAAuB9V,KAAK,CAACmgL,OAAN,CAAc,CAAd,CAAvB,GAA0CjyJ,SAAxD;AACA,aAAKusH,gBAAL,CAAsBgsC,cAAtB,CAAqC,CAAC,CAAC,CAAF,CAArC;;AACA,YAAI,CAACpgE,SAAS,CAACpqF,KAAD,CAAd,EAAuB;AACnB;AACH;;AACD,YAAIjjB,IAAI,GAAGwmJ,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAD,EAAiC,KAAKqgJ,UAAtC,CAAjB;AACA,aAAK77J,MAAL,CAAYzH,IAAZ;AACH;;;aACD,yBAAgByvK,MAAhB,EAAwB;AACpB,YAAMzwJ,OAAO,GAAG,KAAKyiH,gBAAL,CAAsBziH,OAAtC;AACA,YAAM8uJ,aAAa,GAAGpoD,OAAO,CAAC,KAAKqoD,OAAL,IAAgB,KAAKxoL,IAArB,IAA6B,KAAKA,IAAL,CAAUuX,MAAvC,IAAiDkiB,OAAO,IAAI,CAA7D,CAA7B;;AACA,YAAI8uJ,aAAJ,EAAmB;AACf,eAAK1H,aAAL,GAAqB5f,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwBhpJ,OAAxB,CAAD,EAAmC,KAAKskJ,UAAxC,CAA3B;AACH;AACJ;;;aACD,uBAAc;AAAA;;AACV,YAAI,KAAK2G,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,YAAMyqE,eAAe,GAAG,KAAK9xI,SAAL,KAAmB,KAAnB,GAA2B,OAA3B,GAAqC,MAA7D;AACA,YAAM+xI,cAAc,GAAG;AAAEn1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAvB;AACA,YAAMm1D,aAAa,GAAG;AAAEp1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAtB;AACA,aAAKR,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,UAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnCljH,UAAAA,OAAO,EAAE,KAAKmmH,aAAL,CAAmBnmH,OAFO;AAGnC+gF,UAAAA,QAAQ,EAAE,KAAKA,QAHoB;AAInC9pB,UAAAA,OAAO,EAAE,KAAK6vD,aAJqB;AAKnC/D,UAAAA,UAAU,EAAE,KAAK64D,oBALkB;AAMnC9vD,UAAAA,YAAY,EAAE,UANqB;AAOnC1F,UAAAA,UAAU,EAAEu1D,aAPuB;AAQnC90D,UAAAA,WAAW,EAAE60D;AARsB,SAAvB,CAAhB;AAUA,YAAMlB,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,2BAAqB,KAAKviH,KAA1B;AAAA,YAAQg4B,GAAR,gBAAQA,GAAR;AAAA,YAAaD,GAAb,gBAAaA,GAAb;AACA2+I,QAAAA,YAAY,CAACqB,gBAAb,CAA8B,WAA9B,EAA2C,KAAKxC,qBAAhD;AACAmB,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmBI,MAAnB,GAA4B,KAAKA,MAAjC;AACAm6K,QAAAA,YAAY,CAACx/K,YAAb,CAA0B,KAA1B,EAAiC,KAAK2uC,SAAtC;AACA,aAAKq8E,QAAL,CAAcgB,SAAd,CAAwBh0H,SAAxB,CAAkC,YAAM;AACpC,iBAAI,CAACmF,GAAL,CAASoC,aAAT;;AACA,iBAAI,CAACuhL,WAAL,CAAiBhG,YAAjB,CAA8B,OAAI,CAACtoC,gBAAL,CAAsBziH,OAApD;;AACA,iBAAI,CAAC7D,MAAL,CAAYta,IAAZ;AACH,SAJD;AAKA,aAAKo5G,QAAL,CAAc+1D,UAAd,CAAyB/oL,SAAzB,CAAmC,YAAM;AACrC,iBAAI,CAAC0uD,MAAL,CAAY90C,IAAZ;AACH,SAFD;AAGA,aAAKo5G,QAAL,CAAce,wBAAd,CAAuC/zH,SAAvC,CAAiD;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,KAAjB,CAAN;AAAA,SAAjD;AACH;;;aACD,wBAAe;AACX,YAAI,KAAK5kC,QAAT,EAAmB;AACf,eAAKA,QAAL,CAAcK,YAAd,CACK21D,mBADL,CACyB,WADzB,EACsC,KAAK3C,qBAD3C;AAEA,eAAKrzD,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;AACH;AACJ;;;aACD,iBAAQn+G,IAAR,EAAc;AACV,aAAKJ,KAAL,GAAaI,IAAb;AACA,aAAK4+G,YAAL;;AACA,YAAI,KAAKh/G,KAAT,EAAgB;AACZ,eAAKm/G,WAAL;AACH;AACJ;;;aACD,4BAAmB/+G,IAAnB,EAAyB;AACrB,YAAMq4G,SAAS,GAAG,IAAIjB,gBAAJ,EAAlB;;AACA,YAAIp3G,IAAJ,EAAU;AACN,eAAKA,IAAL,CAAU+E,IAAV,CAAeszG,SAAf;AACH,SAFD,MAGK;AACD,eAAKt8G,KAAL,CAAWgJ,IAAX,CAAgBszG,SAAhB;AACH;;AACD,eAAOA,SAAS,CAACC,kBAAV,EAAP;AACH;;;aACD,6BAAoBnxF,KAApB,EAA2B;AACvB,YAAMitJ,QAAQ,GAAG,KAAK3qL,IAAL,CAAUuX,MAAV,GAAmB,CAApC;;AACA,YAAI,KAAK4rK,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD,iBAAQA,KAAK,GAAGitJ,QAAT,GAAqB,KAAKrH,mBAAL,CAAyB5lJ,KAAK,GAAG,CAAjC,CAArB,GAA2D/N,SAAlE;AACH,SAFD,MAGK;AACD,iBAAO+N,KAAP;AACH;AACJ;;;aACD,4BAAmBjjB,IAAnB,EAAyB;AAAA;;AACrB,YAAI,KAAKuoK,WAAL,CAAiBf,OAArB,EAA8B;AAC1B,iBAAO,UAAC3lK,IAAD,EAAU;AACb,gBAAIsuK,QAAQ,GAAG3pB,MAAM,CAAC3kJ,IAAI,CAAClK,KAAN,EAAa,OAAI,CAAC2rK,UAAlB,CAArB;AACA6M,YAAAA,QAAQ,GAAG,CAAC9iE,SAAS,CAAC8iE,QAAD,CAAV,GAAuB,EAAvB,GAA4BA,QAAQ,CAAChhL,QAAT,GAAoB2S,WAApB,EAAvC;AACA,mBAAOquK,QAAQ,CAAC93B,UAAT,CAAoBr4I,IAAI,CAAC8B,WAAL,EAApB,CAAP;AACH,WAJD;AAKH,SAND,MAOK;AACD,iBAAO,UAACD,IAAD,EAAU;AACb,gBAAIsuK,QAAQ,GAAG3pB,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACyhK,UAAZ,CAArB;AACA6M,YAAAA,QAAQ,GAAG,CAAC9iE,SAAS,CAAC8iE,QAAD,CAAV,GAAuB,EAAvB,GAA4BA,QAAQ,CAAChhL,QAAT,GAAoB2S,WAApB,EAAvC;AACA,mBAAOquK,QAAQ,CAAC93B,UAAT,CAAoBr4I,IAAI,CAAC8B,WAAL,EAApB,CAAP;AACH,WAJD;AAKH;AACJ;;;aACD,+BAAsB;AAClB,YAAI,KAAKlS,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAA5B,EAAqCma,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAjD;AACH;;AACD,YAAI,KAAKihH,OAAL,KAAiB,MAArB,EAA6B;AACzB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAA5B,EAAqCoa,eAAe,CAAC,KAAK1gB,OAAN,CAApD;AACH;;AACD,YAAI,KAAKpC,QAAL,KAAkB,MAAtB,EAA8B;AAC1B,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAA5B,EAAqCqa,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAArD;AACH;AACJ;;;;;;AAELm+D,EAAAA,qBAAqB,CAACn7I,IAAtB;AAAA,qBAAmHm7I,qBAAnH,EA/iFsGvlL,gEA+iFtG,CAA0JkE,8EAA1J,GA/iFsGlE,gEA+iFtG,CAA6LkgL,WAA7L,GA/iFsGlgL,gEA+iFtG,CAAqNmE,wEAArN,GA/iFsGnE,gEA+iFtG,CAAiPu4I,gBAAjP,GA/iFsGv4I,gEA+iFtG,CAA8QquH,iBAA9Q,GA/iFsGruH,gEA+iFtG,CAA4SihL,oBAA5S,GA/iFsGjhL,gEA+iFtG,CAA6UA,kDAA7U,GA/iFsGA,gEA+iFtG,CAAmWA,6DAAnW,GA/iFsGA,gEA+iFtG,CAAoYA,qDAApY,GA/iFsGA,gEA+iFtG,CAA6ZA,sDAA7Z,GA/iFsGA,gEA+iFtG,CAAubk2J,aAAvb;AAAA;;AACAqvB,EAAAA,qBAAqB,CAACz4I,IAAtB,kBAhjFsG9sC,gEAgjFtG;AAAA,UAAuGulL,qBAAvG;AAAA;AAAA;AAAA;AAhjFsGvlL,QAAAA,6DAgjFtG,WAmBqEw/K,qBAnBrE;AAhjFsGx/K,QAAAA,6DAgjFtG,WAmB2Ky/K,uBAnB3K;AAhjFsGz/K,QAAAA,6DAgjFtG,WAmBmR0/K,uBAnBnR;AAhjFsG1/K,QAAAA,6DAgjFtG,WAmB2X4hL,uBAnB3X;AAhjFsG5hL,QAAAA,6DAgjFtG,WAmBke2/K,sBAnBle;AAhjFsG3/K,QAAAA,6DAgjFtG,WAmB6kB4/K,2BAnB7kB;AAAA;;AAAA;AAAA;;AAhjFsG5/K,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAAA;AAAA;AAAA;AAAA;AAhjFsGA,QAAAA,0DAgjFtG,SAmB2uBkP,4DAnB3uB;AAhjFsGlP,QAAAA,0DAgjFtG;AAhjFsGA,QAAAA,0DAgjFtG,CAmBi7Bq+K,kBAnBj7B;AAhjFsGr+K,QAAAA,0DAgjFtG;AAAA;;AAAA;AAAA;;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAhjFsGA,QAAAA,6DAgjFtG,MAhjFsGA,0DAgjFtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAhjFsGA,QAAAA,0DAgjFtG;AAhjFsGA,QAAAA,0DAgjFtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAhjFsGA,iEAgjFtG,CAA+hC,CACvhCslL,2BADuhC,EAEvhCpF,WAFuhC,EAGvhC3nC,gBAHuhC,EAIvhClqB,iBAJuhC,EAKvhC4yD,oBALuhC,EAMvhCl8D,8EANuhC,EAOvhC;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAPuhC,EAWvhC;AACIH,MAAAA,OAAO,EAAEy+K,mBADb;AAEIzxI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMs1J,qBAAN;AAAA,OAAD;AAF3B,KAXuhC,EAevhC;AACIniL,MAAAA,OAAO,EAAEk/H,uEADb;AAEIlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMs1J,qBAAN;AAAA,OAAD;AAF3B,KAfuhC,CAA/hC,GAhjFsGvlL,mEAgjFtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAhjFsGA,QAAAA,iEAokF9F,MApBR;AAhjFsGA,QAAAA,6DA4kF9F,4BA5BR;AAhjFsGA,QAAAA,yDAylF1F;AAAA,iBAAc,0BAAd;AAAA;AAAA,iBACe,2BADf;AAAA;AAAA,iBAEU,gBAFV;AAAA;AAAA,iBAGW,iBAHX;AAAA,UAzCZ;AAhjFsGA,QAAAA,2DA6lF7F,EA7CT;AAhjFsGA,QAAAA,yDA8lF9F,2DA9CR;AAhjFsGA,QAAAA,yDA0mF9F,2DA1DR;AAhjFsGA,QAAAA,yDA2mF9F,iFA3mF8FA,qEA2mF9F,CA3DR;AAhjFsGA,QAAAA,yDAupF9F,yEAvGR;AAhjFsGA,QAAAA,iEA0pF9F,YA1GR;AAAA;;AAAA;AAhjFsGA,QAAAA,wDA6kF1F,GA7BZ;AAhjFsGA,QAAAA,yDA6kF1F,6UA7BZ;AAhjFsGA,QAAAA,wDA+lFzF,GA/Cb;AAhjFsGA,QAAAA,yDA+lFzF,yGA/Cb;AAhjFsGA,QAAAA,wDA0mFvF,GA1Df;AAhjFsGA,QAAAA,yDA0mFvF,qBA1Df;AAhjFsGA,QAAAA,wDAupFjF,GAvGrB;AAhjFsGA,QAAAA,yDAupFjF,oBAvGrB;AAAA;AAAA;AAAA,iBA2G0Cq+K,kBA3G1C,EA2G6V7wD,aA3G7V,EA2GwqButD,kFA3GxqB,EA2GuyBpY,0BA3GvyB,EA2GgpC2Y,kDA3GhpC,EA2GkuChuD,wBA3GluC;AAAA;AAAA;SAlzBMi4D;;;AA85BN;AAAA;AAAA;AAoOA;AACA;AACA;;;AACA,IAAMwD,mBAAmB,GAAG;AACxB,WAAS,8HADe;AAExB,YAAU,+HAFc;AAGxB,eAAa,kIAHW;AAIxB,kBAAgB;AAJQ,CAA5B;AAMA;AACA;AACA;;AACA,IAAMC,uBAAuB,GAAG;AAC5B,WAAS,kIADmB;AAE5B,eAAa,yJAFe;AAG5B,YAAU,mJAHkB;AAI5B,eAAa,8JAJe;AAK5B,qBAAmB,iLALS;AAM5B,kBAAgB,sJANY;AAO5B,gBAAc,wKAPc;AAQ5B,sBAAoB;AARQ,CAAhC;AAUA;AACA;AACA;;AACA,IAAMC,gBAAgB,GAAG;AACrB,YAAU,+HADW;AAErB,eAAa,kIAFQ;AAGrB,kBAAgB,oKAHK;AAIrB,kBAAgB;AAJK,CAAzB;AAMA;AACA;AACA;;AACA,IAAMC,2BAA2B,GAAG;AAChC,UAAQ,iJADwB;AAEhC,kBAAgB;AAFgB,CAApC;AAIA;AACA;AACA;;AACA,IAAMC,oBAAoB,GAAG;AACzB,iBAAe,8JADU;AAEzB,YAAU,mIAFe;AAGzB,eAAa,sIAHY;AAIzB,kBAAgB;AAJS,CAA7B;AAMA;AACA;AACA;;AACA,IAAMC,oBAAoB,GAAG;AACzB,eAAa,qJADY;AAEzB,YAAU,+IAFe;AAGzB,cAAY,uJAHa;AAIzB,kBAAgB,mJAJS;AAKzB,gBAAc;AALW,CAA7B;AAQA;AACA;AACA;;AACA,IAAMC,uBAAuB,GAAG;AAC5B/lL,EAAAA,KAAK,EAAE,IADqB;AAE5BF,EAAAA,OAAO,EAAEguB,8DAFmB;AAG5Bgf,EAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,WAAMq5J,iBAAN;AAAA,GAAD;AAHK,CAAhC;AAKA,IAAMC,cAAc,GAAG,QAAvB;AACA,IAAMC,iBAAiB,GAAG,QAA1B;AACA,IAAMC,mBAAmB,GAAG,OAA5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMH;MAAAA;AACF,+BAAYx5D,OAAZ,EAAqB3H,YAArB,EAAmCwJ,YAAnC,EAAiDyoB,gBAAjD,EAAmE7qB,iBAAnE,EAAsF8xD,oBAAtF,EAA4GH,WAA5G,EAAyHh6H,IAAzH,EAA+HniD,GAA/H,EAAoID,QAApI,EAA8I2/H,YAA9I,EAA4J;AAAA;;AACxJ,WAAK3U,OAAL,GAAeA,OAAf;AACA,WAAK3H,YAAL,GAAoBA,YAApB;AACA,WAAKwJ,YAAL,GAAoBA,YAApB;AACA,WAAKyoB,gBAAL,GAAwBA,gBAAxB;AACA,WAAK7qB,iBAAL,GAAyBA,iBAAzB;AACA,WAAK8xD,oBAAL,GAA4BA,oBAA5B;AACA,WAAKH,WAAL,GAAmBA,WAAnB;AACA,WAAKh6H,IAAL,GAAYA,IAAZ;AACA,WAAKniD,GAAL,GAAWA,GAAX;AACA,WAAKD,QAAL,GAAgBA,QAAhB;AACA,WAAK2/H,YAAL,GAAoBA,YAApB;AACA,WAAKltG,QAAL,GAAgB,EAAhB;AACA;AACR;AACA;;AACQ,WAAKo6H,WAAL,eAAwB9sC,IAAI,EAA5B;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK6kE,WAAL,GAAmB,KAAnB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKC,eAAL,GAAuB,UAAChxK,IAAD;AAAA,eAAUA,IAAI,CAACjZ,IAAL,CAAUoP,oDAAG,CAAC,UAAC8vK,SAAD;AAAA,iBAAeA,SAAf;AAAA,SAAD,CAAb,CAAV;AAAA,OAAvB;AACA;AACR;AACA;AACA;;;AACQ,WAAK/jF,WAAL,GAAmB,EAAnB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKwjE,UAAL,GAAkB,GAAlB;AACA;AACR;AACA;;AACQ,WAAKqoB,OAAL,GAAe,KAAf;AACA;AACR;AACA;AACA;;AACQ,WAAKjB,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;;AACQ,WAAKhuJ,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK1H,QAAL,GAAgB,CAAhB;AACA;AACR;AACA;AACA;;AACQ,WAAK4qJ,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK/qC,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;;AACQ,WAAKg3K,eAAL,GAAuB,IAAIh3K,wDAAJ,EAAvB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK+yK,YAAL,GAAoB,IAAI/yK,wDAAJ,EAApB;AACA;AACR;AACA;AACA;;AACQ,WAAK6B,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;;AACQ,WAAKkhB,MAAL,GAAc,IAAIlhB,wDAAJ,EAAd;AACA;AACR;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAK07C,MAAL,GAAc,IAAI17C,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA,WAAKgzK,aAAL,GAAqB,IAArB;AACA,WAAK/1D,UAAL,GAAkB,KAAlB;AACA,WAAKg2D,SAAL,GAAiBhhE,IAAI,EAArB;AACA,WAAKihE,YAAL,GAAoBjhE,IAAI,EAAxB;;AACA,WAAKkhE,gBAAL,GAAwB,UAAC9/K,CAAD,EAAO,CAAG,CAAlC;;AACA,WAAK+/K,iBAAL,GAAyB,UAAC//K,CAAD,EAAO,CAAG,CAAnC;AACA;AACR;AACA;;;AACQ,WAAK4jL,wBAAL,GAAgC,EAAhC;AACA;AACR;AACA;;AACQ,WAAKC,sBAAL,GAA8B,EAA9B;AACA,WAAKC,UAAL,GAAkB,KAAlB;AACA,WAAKC,KAAL,GAAa,EAAb;AACA,WAAKC,UAAL,GAAkB,EAAlB;AACA,WAAK51K,KAAL,GAAa,KAAb;AACA,WAAKq7G,cAAL,GAAsB;AAAE9iH,QAAAA,OAAO,EAAE;AAAX,OAAtB;;AACA,WAAKq5K,qBAAL,GAA6B,UAACtmL,KAAD;AAAA,eAAWA,KAAK,CAACkU,cAAN,EAAX;AAAA,OAA7B;;AACA,WAAKq2K,kBAAL,GAA0B,IAAIhsK,0CAAJ,EAA1B;AACA,WAAKisK,YAAL,GAAoB,IAAIjsK,0CAAJ,EAApB;AACA,WAAKksK,iBAAL,GAAyB,IAAIlsK,0CAAJ,EAAzB;AACA,WAAK2qG,IAAL,GAAY,IAAI3D,+CAAJ,EAAZ;AACA,WAAKsD,KAAL,GAAa,QAAb;AACA,WAAKC,QAAL,GAAgB,QAAhB;AACA,WAAKC,SAAL,GAAiB,OAAjB;AACAvD,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAKlvE,SAAL,GAAiB4xE,YAAY,CAACW,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;AACA,WAAK5qH,IAAL,GAAY,EAAZ;AACH;;;;WAID,eAAW;AACP,eAAO,KAAK8rL,KAAZ;AACH;AACD;AACJ;AACA;;WARI,aAASrxK,IAAT,EAAe;AACX,aAAKqxK,KAAL,GAAahkE,SAAS,CAACrtG,IAAD,CAAT,GAAkBA,IAAI,CAAC7Q,QAAL,EAAlB,GAAoC,EAAjD;AACH;;;aAOD,qBAAY2M,IAAZ,EAAkB;AACd,YAAMu8B,UAAU,GAAG,KAAKvZ,QAAL,IAAiB,KAAK+K,QAAzC;AACA,YAAMokJ,SAAS,GAAG,KAAKtzK,MAAL,KAAgBmB,IAAlC;;AACA,YAAIu8B,UAAU,IAAI41I,SAAlB,EAA6B;AACzB;AACH;;AACD,YAAM75D,kBAAkB,GAAG,KAAK85D,kBAAL,CAAwBpyK,IAAxB,CAA3B;;AACA,YAAI,CAACs4G,kBAAL,EAAyB;AACrB,eAAKsF,OAAL,CAAa59G,IAAb;AACH;AACJ;;;WACD,eAAuB;AACnB,YAAI,CAAC,KAAKnB,MAAN,IAAgB,CAAC0yG,SAAS,CAAC,KAAKo0B,gBAAL,CAAsBziH,OAAvB,CAA1B,IAA6D,KAAKyiH,gBAAL,CAAsBziH,OAAtB,KAAkC,CAAC,CAApG,EAAuG;AACnG,iBAAO,IAAP;AACH;;AACD,YAAMi2F,QAAQ,GAAG,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwB,KAAKvmC,gBAAL,CAAsBziH,OAA9C,CAAjB;AACA,eAAO,KAAKmuJ,YAAL,GAAoB,GAApB,IAA2Bl4D,QAAQ,GAAGuxC,MAAM,CAACvxC,QAAD,EAAW,KAAKquD,UAAhB,CAAT,GAAuC,EAA1E,CAAP;AACH;;;WACD,eAAkB;AACd,YAAI,KAAK/9K,IAAL,CAAUuX,MAAV,KAAqB,CAAzB,EAA4B;AACxB,iBAAO,KAAKqxK,UAAL,CAAgB,YAAhB,CAAP;AACH;AACJ;;;WACD,eAAe;AACX,YAAQn5F,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WAgBI,eAAW;AACP,YAAMi1F,OAAO,GAAG,KAAKA,OAArB;;AACA,YAAIA,OAAJ,EAAa;AACT,cAAM3nI,KAAK,GAAG2nI,OAAO,CAAChlE,IAAR,IAAgB,CAA9B;AACA,cAAM1iE,GAAG,GAAGD,KAAK,GAAG2nI,OAAO,CAACl9J,QAA5B,CAFS,CAGT;;AACAk9J,UAAAA,OAAO,CAAC31C,KAAR,GAAgB,KAAKi0C,WAAL,CAAiBhjL,IAAjB,CAAsBuX,MAAtC;AACA,iBAAO,KAAKyrK,WAAL,CAAiBhjL,IAAjB,CAAsByc,KAAtB,CAA4BsgC,KAA5B,EAAmCC,GAAnC,CAAP;AACH;;AACD,eAAO,KAAKgmI,WAAL,CAAiBhjL,IAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;WAjCI,aAASA,IAAT,EAAe;AACX,aAAKgjL,WAAL,CAAiBhjL,IAAjB,GAAwBA,IAAI,IAAI,EAAhC;;AACA,YAAI,KAAK0kL,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,aAAKysE,QAAL;;AACA,YAAI,KAAKN,UAAT,EAAqB;AACjB,cAAMO,mBAAmB,GAAG,KAAK3xK,IAAL,CAAUlD,MAAV,GAAmB,CAAnB,IAAwB,KAAKyrK,WAAL,CAAiBN,UAAjB,GAA8B,CAAlF;AACA,cAAMhlJ,KAAK,GAAG0uJ,mBAAmB,GAAG,KAAK9I,mBAAL,CAAyB,CAAzB,CAAH,GAAiC,CAAC,CAAnE;AACA,eAAKpnC,gBAAL,CAAsBziH,OAAtB,GAAgCiE,KAAhC;AACH;;AACD,YAAI,KAAK8qJ,OAAL,IAAgB,KAAKxF,WAAL,CAAiBN,UAAjC,IAA+C,KAAKjoK,IAAxD,EAA8D;AAC1D,eAAKomK,aAAL,GAAqB5f,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB,CAAxB,CAAD,EAA6B,KAAK9yD,SAAlC,CAA3B;AACH;AACJ;;;WAyBD,eAAY;AACR,eAAO,KAAKh8E,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;WAZI,aAAUk1E,QAAV,EAAoB;AAChB,aAAKl1E,MAAL,GAAck1E,QAAd;AACA,aAAKsjE,QAAL;AACA,aAAKtlL,GAAL,CAASS,YAAT;AACH;;;WAYD,eAAqB;AACjB,YAAI,CAACwgH,SAAS,CAAC,KAAKukE,eAAN,CAAd,EAAsC;AAClC,iBAAO,CAACvkE,SAAS,CAAC,KAAKi2D,UAAN,CAAjB;AACH;;AACD,eAAO,KAAKsO,eAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAlBI,aAAmBlqF,WAAnB,EAAgC;AAC5B,aAAKkqF,eAAL,GAAuBlqF,WAAvB;AACH;;;WAoBD,eAAoB;AAChB,eAAO,KAAKqvB,cAAZ;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc;AAAElQ,UAAAA,OAAO,EAAE;AAAX,SAAd,EAAiCwlH,QAAjC,CAAtB;AACH;;;WAQD,aAAiBrhF,EAAjB,EAAqB;AACjB,YAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;AAC1B,gBAAM,IAAIhsB,KAAJ,yDAA2D5F,IAAI,CAACC,SAAL,CAAe2xB,EAAf,CAA3D,OAAN;AACH;;AACD,aAAKswI,oBAAL,CAA0BF,YAA1B,GAAyCpwI,EAAzC;AACH;AACD;AACJ;AACA;;;;WAII,eAAe;AACX,eAAO,KAAKjW,QAAZ;AACH;AACD;AACJ;AACA;;WARI,aAAaotB,QAAb,EAAuB;AACnB,aAAKptB,QAAL,GAAgBotB,QAAhB;AACH;;;WAaD,eAAc;AACV,eAAO,KAAK6+H,gBAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAlBI,aAAY30D,QAAZ,EAAsB;AAClB,aAAK20D,gBAAL,GAAwBhF,+BAA+B,CAAC3vD,QAAD,EAAW;AAC9Dl9B,UAAAA,UAAU,EAAE,KAAK20F,wBAD6C;AAE9DnkK,UAAAA,QAAQ,EAAE,KAAKokK;AAF+C,SAAX,CAAvD;AAIH;;;WAsBD,eAAW;AACP,eAAO,KAAKthE,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WArBI,aAASjgH,IAAT,EAAe;AACX,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAUghL,cAA9B;AACA,aAAKzkL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAlE;;AACA,YAAIA,IAAI,KAAK,MAAb,EAAqB;AACjB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAA/D;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAaggE,iBAAvC;AACA,aAAK1kL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAArE;;AACA,YAAIA,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAACzgB,UAAD,CAAlE;AACH;;AACD,aAAKhB,QAAL,GAAgBgB,UAAhB;AACH;;;WAsBD,eAAe;AACX,eAAO,KAAKf,SAAZ;AACH;WAVD,aAAatB,QAAb,EAAuB;AACnB,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAcqiE,mBAA1C;AACA,aAAK3kL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAtE;;AACA,YAAIA,QAAQ,KAAK,MAAjB,EAAyB;AACrB,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAUzgB,WAAV,CAAnE;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;WAID,eAAiB;AACb,eAAO,KAAKjyF,QAAZ;AACH;;;WACD,eAAgB;AACZ,eAAO,KAAKy2D,OAAZ;AACH;;;WACD,eAAU;AACN,eAAO,KAAK33C,SAAZ;AACH;;;WACD,eAAgB;AACZ,eAAO,KAAKs5E,UAAZ;AACH;WACD,aAAcv/G,KAAd,EAAqB;AACjB,aAAKxL,QAAL,CAAcwL,KAAK,GAAG,UAAH,GAAgB,aAAnC,EAAkD,KAAKw/G,OAAL,CAAa79G,aAA/D,EAA8E,SAA9E;AACA,aAAK49G,UAAL,GAAkBv/G,KAAlB;AACH;;;WACD,eAA2B;AACvB,YAAI,KAAKm0H,YAAT,EAAuB;AACnB,iBAAO,SAAP;AACH;AACJ;;;WACD,eAAiB;AACb,YAAI4hD,kBAAkB,GAAG,CAAzB;;AACA,YAAI5hE,oFAAmB,EAAvB,EAA2B;AACvB4hE,UAAAA,kBAAkB,GAAG,KAAKv2D,OAAL,CAAa79G,aAAb,CAA2BtB,WAAhD;AACH;;AACD,YAAMD,KAAK,GAAG,KAAKqiH,aAAL,CAAmBriH,KAAnB,IAA4B21K,kBAA1C;AACA,YAAM3sF,QAAQ,GAAG5wD,KAAK,CAACu9I,kBAAD,CAAL,GAA4BA,kBAA5B,aAAoDA,kBAApD,OAAjB;AACA,YAAMxU,QAAQ,GAAG/oI,KAAK,CAACp4B,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAjB;AACA,eAAO;AAAEg4B,UAAAA,GAAG,EAAEgxD,QAAP;AAAiBjxD,UAAAA,GAAG,EAAEopI;AAAtB,SAAP;AACH;;;WACD,eAAkB;AACd,YAAMyU,WAAW,GAAG,KAAKvzD,aAAL,CAAmB9lH,MAAvC;AACA,eAAO+4G,SAAS,CAACsgE,WAAD,CAAT,aAA4BA,WAA5B,UAA8C,MAArD;AACH;;;aACD,oBAAW;AACP,aAAKxhL,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAL,CAAa79G,aAA3C,EAA0D,UAA1D;AACA,aAAKu4K,aAAL;AACA,aAAKC,iBAAL;AACA,aAAKtE,oBAAL;AACA,aAAKuE,wBAAL;AACA,aAAK92B,mBAAL;AACH;;;aACD,6BAAoB;AAAA;;AAChB,YAAM+2B,WAAW,GAAG,KAAKR,YAAL,CAAkBzqL,IAAlB,CAAuBP,uDAAM,CAAC,UAACwmI,SAAD,EAAe;AAC7D,cAAM3wF,OAAO,GAAGmqH,MAAM,CAAC,OAAI,CAAC7uJ,KAAN,EAAa,OAAI,CAAC2rK,UAAlB,CAAtB;AACA,cAAMl1D,QAAQ,GAAGo4C,MAAM,CAACx5B,SAAD,EAAY,OAAI,CAACs2C,UAAjB,CAAvB;AACA,cAAIn0C,OAAO,GAAGq3B,MAAM,CAACx5B,SAAD,EAAY,OAAI,CAAC9X,SAAjB,CAApB;;AACA,cAAI,CAAC7H,SAAS,CAAC,OAAI,CAAC11G,KAAN,CAAV,IAA0B,CAAC01G,SAAS,CAACe,QAAD,CAAxC,EAAoD;AAChD,mBAAO,KAAP;AACH;;AACD,cAAIf,SAAS,CAAC8hB,OAAD,CAAb,EAAwB;AACpBA,YAAAA,OAAO,GAAGA,OAAO,CAAChgI,QAAR,EAAV;AACH;;AACD,cAAIktC,OAAO,KAAK+xE,QAAZ,IAAwB,OAAI,CAACpuG,IAAL,KAAcmvH,OAA1C,EAAmD;AAC/C,mBAAI,CAAC8iD,WAAL;;AACA,mBAAO,KAAP;AACH,WAHD,MAIK;AACD,mBAAO,IAAP;AACH;AACJ,SAjBgD,CAA7B,EAiBhB97K,oDAAG,CAAC,UAAC62H,SAAD,EAAe;AACnB,cAAM5e,QAAQ,GAAGo4C,MAAM,CAACx5B,SAAD,EAAY,OAAI,CAACs2C,UAAjB,CAAvB;AACA,cAAMn0C,OAAO,GAAGq3B,MAAM,CAACx5B,SAAD,EAAY,OAAI,CAAC9X,SAAjB,CAAtB;AACA,iBAAO;AACHD,YAAAA,QAAQ,EAAE+X,SADP;AAEHhtH,YAAAA,IAAI,EAAEmvH,OAFH;AAGHx3H,YAAAA,KAAK,EAAE,OAAI,CAACu6K,cAAL,GAAsB9jE,QAAtB,GAAiC4e;AAHrC,WAAP;AAKH,SARM,CAjBa,CAApB;AA0BA,YAAMmlD,kBAAkB,GAAG1P,0DAAS,CAAC;AAAA,iBAAM,OAAI,CAACsO,WAAX;AAAA,SAAD,CAAT,CAAkC,KAAKQ,kBAAL,CAAwBxqL,IAAxB,CAA6BuiI,6DAAY,CAAC,GAAD,CAAzC,CAAlC,CAA3B;AACA,YAAM8oD,sBAAsB,GAAGD,kBAAkB,CAAC,CAAD,CAAlB,CAAsBprL,IAAtB,CAA2BmyB,oDAAG,CAAC,YAAM;AAChE,iBAAI,CAACq8D,OAAL,GAAe,IAAf;AACA,iBAAI,CAACz2D,QAAL,GAAgB,IAAhB;;AACA,iBAAI,CAAC1yB,GAAL,CAASoC,aAAT;AACH,SAJ4D,CAA9B,EAI3BhI,uDAAM,CAAC,YAAM;AACb,cAAM+oI,SAAS,GAAG,OAAI,CAACvvH,IAAL,KAAcwmJ,MAAM,CAAC,OAAI,CAAC7uJ,KAAN,EAAa,OAAI,CAAC2rK,UAAlB,CAAtC;AACA,iBAAI,CAAC/tF,OAAL,GAAeg6C,SAAf;AACA,iBAAI,CAACzwG,QAAL,GAAgBywG,SAAhB;;AACA,cAAI,CAACA,SAAL,EAAgB;AACZ,mBAAI,CAAC0iD,WAAL;AACH;;AACD,iBAAO1iD,SAAP;AACH,SARS,CAJqB,EAY3B,KAAKyhD,eAZsB,EAYL76K,oDAAG,CAAC,UAAC6uK,eAAD,EAAqB;AAC/C,iBAAO;AACHqN,YAAAA,MAAM,EAAE,IADL;AAEHp9D,YAAAA,QAAQ,EAAE+vD,eAFP;AAGHhlK,YAAAA,IAAI,EAAE,OAAI,CAACA,IAHR;AAIHrI,YAAAA,KAAK,EAAEqtK;AAJJ,WAAP;AAMH,SAP4B,CAZE,CAA/B;AAoBA,YAAMsN,wBAAwB,GAAGH,kBAAkB,CAAC,CAAD,CAAlB,CAAsBprL,IAAtB,CAA2BoP,oDAAG,CAAC,YAAM;AAClE,iBAAO;AACHk8K,YAAAA,MAAM,EAAE,IADL;AAEHp9D,YAAAA,QAAQ,EAAE//F,SAFP;AAGHlV,YAAAA,IAAI,EAAEkV,SAHH;AAIHvd,YAAAA,KAAK,EAAEud;AAJJ,WAAP;AAMH,SAP8D,CAA9B,CAAjC;AAQA,YAAMq9J,gBAAgB,GAAG,KAAKd,iBAAL,CAAuB1qL,IAAvB,CAA4BoP,oDAAG,CAAC;AAAA,iBAAO;AAC5D8+G,YAAAA,QAAQ,EAAE//F,SADkD;AAE5DlV,YAAAA,IAAI,EAAEkV,SAFsD;AAG5Dvd,YAAAA,KAAK,EAAEud;AAHqD,WAAP;AAAA,SAAD,CAA/B,CAAzB;;AAKA,YAAI,KAAKs9J,iBAAT,EAA4B;AACxB,eAAKA,iBAAL,CAAuBprL,WAAvB;AACH;;AACD,YAAMqrL,MAAM,GAAG38K,4CAAK,CAACk8K,WAAD,EAAcI,sBAAd,EAAsCE,wBAAtC,EAAgEC,gBAAhE,CAApB;AACA,aAAKC,iBAAL,GAAyBC,MAAM,CAAC1rL,IAAP,CAAYigB,2DAAU,CAAC,YAAM;AAClD,cAAM0rK,gBAAgB,GAAGlsB,MAAM,CAAC,OAAI,CAACvxC,QAAN,EAAgB,OAAI,CAACquD,UAArB,CAAN,KAA2CpuJ,SAApE;AACA,iBAAI,CAAC+/F,QAAL,GAAgB//F,SAAhB;AACA,iBAAI,CAACvd,KAAL,GAAaud,SAAb;AACA,iBAAI,CAAClV,IAAL,GAAYkV,SAAZ;AACA,iBAAI,CAACqgE,OAAL,GAAe,KAAf;AACA,iBAAI,CAACz2D,QAAL,GAAgB,KAAhB;;AACA,cAAI4zJ,gBAAJ,EAAsB;AAClB,mBAAI,CAACzB,eAAL,CAAqBpwK,IAArB,CAA0BqU,SAA1B;AACH;;AACD,iBAAI,CAACy9J,eAAL;;AACA,iBAAI,CAACb,iBAAL;;AACA,iBAAOhnF,yCAAE,CAAC,IAAD,CAAT;AACH,SAb8C,CAAtB,EAcpB7jG,SAdoB,CAcV,UAACmN,KAAD,EAAW;AACtB,cAAMs+K,gBAAgB,GAAGlsB,MAAM,CAAC,OAAI,CAACvxC,QAAN,EAAgB,OAAI,CAACquD,UAArB,CAAN,KAA2C9c,MAAM,CAACpyJ,KAAK,CAAC6gH,QAAP,EAAiB,OAAI,CAACquD,UAAtB,CAA1E;AACA,iBAAI,CAACruD,QAAL,GAAgB7gH,KAAK,CAAC6gH,QAAtB;AACA,iBAAI,CAACt9G,KAAL,GAAavD,KAAK,CAACuD,KAAnB;AACA,iBAAI,CAACqI,IAAL,GAAY5L,KAAK,CAAC4L,IAAlB;AACA,iBAAI,CAACu1E,OAAL,GAAe,KAAf;AACA,iBAAI,CAACz2D,QAAL,GAAgB,KAAhB;;AACA,iBAAI,CAACmzJ,WAAL;;AACA,cAAI79K,KAAK,CAACi+K,MAAV,EAAkB;AACd,mBAAI,CAAC5wC,gBAAL,CAAsBziH,OAAtB,GAAgC,CAAC,CAAjC;AACH;;AACD,cAAI0zJ,gBAAJ,EAAsB;AAClB,gBAAME,aAAa,GAAGx+K,KAAK,CAACi+K,MAAN,GAAen9J,SAAf,GAA2B,OAAI,CAAC+/F,QAAtD;;AACA,mBAAI,CAACg8D,eAAL,CAAqBpwK,IAArB,CAA0B+xK,aAA1B;AACH;;AACD,iBAAI,CAACD,eAAL;AACH,SA9BwB,CAAzB;AA+BH;;;aACD,yBAAgB;AAAA;;AACZ,YAAI,CAAC7mE,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,aAAKoE,IAAL,CAAU32E,GAAV,CAAc,KAAKi2E,YAAL,CACTv5G,OADS,CACDhP,SADC,CACS,iBAAa;AAAA,cAAVkpH,GAAU,SAAVA,GAAU;AAChC,iBAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA/B;;AACA,iBAAI,CAAC/jH,GAAL,CAASoC,aAAT;AACH,SAJa,CAAd;AAKA,aAAK0hH,IAAL,CAAU32E,GAAV,CAAczjC,4CAAK,CAAC,KAAK8gH,iBAAL,CAAuBqwB,EAAxB,EAA4B,KAAKrwB,iBAAL,CAAuBioD,IAAnD,EAAyD,KAAKjoD,iBAAL,CAAuB+xD,IAAhF,EAAsF,KAAK/xD,iBAAL,CAAuBr0E,GAA7G,CAAL,CACTx7C,IADS,CACJP,uDAAM,CAAC,UAACQ,KAAD;AAAA,iBAAWqmH,SAAS,CAACrmH,KAAK,CAACi8B,KAAP,CAApB;AAAA,SAAD,CADF,EAETh8B,SAFS,CAEC,UAACD,KAAD;AAAA,iBAAW,OAAI,CAACgO,QAAL,CAAchO,KAAK,CAACi8B,KAApB,CAAX;AAAA,SAFD,CAAd;AAGA,aAAKitF,IAAL,CAAU32E,GAAV,CAAc,KAAKq9E,iBAAL,CAAuB96G,IAAvB,CAA4B7U,SAA5B,CAAsC,KAAK4rL,oBAAL,CAA0BzhL,IAA1B,CAA+B,IAA/B,CAAtC,CAAd;AACA,aAAK8+G,IAAL,CAAU32E,GAAV,CAAc,KAAKq9E,iBAAL,CAAuB/+G,KAAvB,CAA6B5Q,SAA7B,CAAuC;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,KAAjB,CAAN;AAAA,SAAvC,CAAd;AACA,aAAK3uC,IAAL,CAAU32E,GAAV,CAAc,KAAKq9E,iBAAL,CAAuBf,GAAvB,CAA2B5uH,SAA3B,CAAqC,KAAK83K,YAAL,CAAkB3tK,IAAlB,CAAuB,IAAvB,CAArC,CAAd;AACA,aAAK8+G,IAAL,CAAU32E,GAAV,CAAc,KAAKq9E,iBAAL,CAAuBptF,KAAvB,CAA6BziC,IAA7B,CAAkCmyB,oDAAG,CAAC,UAAClyB,KAAD,EAAW;AAC3D,cAAI,OAAI,CAAC2T,MAAT,EAAiB;AACb3T,YAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;AACH;AACJ,SAJkD,CAArC,EAKTjU,SALS,CAKC,KAAKqoL,WAAL,CAAiBl+K,IAAjB,CAAsB,IAAtB,CALD,CAAd;AAMA,aAAK8+G,IAAL,CAAU32E,GAAV,CAAczjC,4CAAK,CAAC,KAAK2rI,gBAAL,CAAsB1pG,QAAvB,EAAiC,KAAK0pG,gBAAL,CAAsBylC,QAAtB,CAA+BngL,IAA/B,CAAoCP,uDAAM,CAAC,UAAA8G,CAAC;AAAA,iBAAI,CAAC,OAAI,CAACqN,MAAV;AAAA,SAAF,CAA1C,CAAjC,CAAL,CACT5T,IADS,CACJmyB,oDAAG,CAAC,UAAA5rB,CAAC,EAAI;AACf,iBAAI,CAAC8jL,UAAL,GAAkB,KAAlB;;AACA,iBAAI,CAACvyB,WAAL,CAAiB,KAAjB;AACH,SAHY,CADC,EAIV1oJ,oDAAG,CAAC,UAACnP,KAAD;AAAA,iBAAW,OAAI,CAACuhL,WAAL,CAAiBP,MAAjB,CAAwBhhL,KAAK,CAACmgL,OAAN,CAAc,CAAd,CAAxB,CAAX;AAAA,SAAD,CAJO,EAKTlgL,SALS,CAKC,UAAAguH,QAAQ,EAAI;AACvB,iBAAI,CAACxtG,MAAL,CAAYwtG,QAAZ;AACH,SAPa,CAAd;AAQA,aAAK/E,IAAL,CAAU32E,GAAV,CAAc,KAAKkoG,gBAAL,CAAsBylC,QAAtB,CAA+BngL,IAA/B,CAAoCP,uDAAM,CAAC,UAAA8G,CAAC;AAAA,iBAAI,OAAI,CAACqN,MAAT;AAAA,SAAF,CAA1C,EAA8Due,oDAAG,CAAC,UAAA5rB,CAAC;AAAA,iBAAI,OAAI,CAAC8jL,UAAL,GAAkB,KAAtB;AAAA,SAAF,CAAjE,EAAiGj7K,oDAAG,CAAC,UAACnP,KAAD;AAAA,iBAAW,OAAI,CAACuhL,WAAL,CAAiBP,MAAjB,CAAwBhhL,KAAK,CAACmgL,OAAN,CAAc,CAAd,CAAxB,CAAX;AAAA,SAAD,CAApG,EACTlgL,SADS,CACC,UAAAguH,QAAQ,EAAI;AACvB,cAAMy9D,gBAAgB,GAAGlsB,MAAM,CAACvxC,QAAD,EAAW,OAAI,CAACquD,UAAhB,CAAN,KAAsC9c,MAAM,CAAC,OAAI,CAACvxC,QAAN,EAAgB,OAAI,CAACquD,UAArB,CAArE;;AACA,iBAAI,CAACwP,WAAL,CAAiB;AAAE79D,YAAAA,QAAQ,EAARA;AAAF,WAAjB;;AACA,cAAIy9D,gBAAJ,EAAsB;AAClB,mBAAI,CAACzB,eAAL,CAAqBpwK,IAArB,CAA0Bo0G,QAA1B;AACH;AACJ,SAPa,CAAd;AAQH;;;aACD,uBAAc;AACV,aAAKyF,YAAL;AACA,aAAKxK,IAAL,CAAU9oH,WAAV;;AACA,YAAIimH,SAAS,CAAC,KAAKmlE,iBAAN,CAAb,EAAuC;AACnC,eAAKA,iBAAL,CAAuBprL,WAAvB;AACH;;AACD,YAAI,KAAKooL,wBAAT,EAAmC;AAC/B,eAAKA,wBAAL;AACH;;AACD,YAAI,KAAKuD,yBAAT,EAAoC;AAChC,eAAKA,yBAAL;AACH;AACJ;;;aACD,qBAAY98K,OAAZ,EAAqB;AACjB,YAAMg0K,OAAO,GAAG,KAAKA,OAArB;AACA,YAAMqE,kBAAkB,GAAGrE,OAAO,IAAIh0K,OAAO,CAAC1Q,IAAnB,IAA2B0Q,OAAO,CAAC1Q,IAAR,CAAagjE,aAAb,EAAtD;;AACA,YAAI+lH,kBAAJ,EAAwB;AACpB,eAAK93G,UAAL,CAAgB;AAAEyuC,YAAAA,IAAI,EAAE,CAAR;AAAWhsF,YAAAA,IAAI,EAAEgxJ,OAAO,CAACl9J;AAAzB,WAAhB;AACH;;AACD,YAAIi/F,0EAAS,CAAC,iBAAD,EAAoB/1G,OAApB,CAAb,EAA2C;AACvC,eAAK67K,iBAAL;AACH;;AACD,YAAI9tD,2EAAU,CAAC,CAAC,WAAD,EAAc,YAAd,EAA4B,gBAA5B,CAAD,EAAgD/tH,OAAhD,EAAyD,KAAzD,CAAd,EAA+E;AAC3E,eAAKy7K,QAAL;AACH;AACJ;;;aACD,iCAAwB;AACpB,aAAK19D,cAAL;AACH;AACD;AACJ;AACA;AACA;;;;aACI,qBAAY/wF,KAAZ,EAAmB;AACf,YAAM6qG,SAAS,GAAG7qG,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAG,KAAK19B,IAAL,CAAUuX,MAAlD;;AACA,YAAIuwG,SAAS,CAACpqF,KAAD,CAAT,IAAoB6qG,SAApB,IAAiC,CAAC,KAAK46C,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAtC,EAAwF;AACpF,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4BtmB,KAA5B;AACH,SAFD,MAGK;AACD,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4B,CAAC,CAA7B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAK0vJ,SAAL,CAAejlI,KAAf;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAK0vJ,SAAL,CAAenoF,IAAf;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,gBAAOvqF,IAAP,EAAa;AAAA;;AACT1G,QAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B,YAAM;AAC7B,cAAM07H,UAAU,GAAGrT,SAAS,CAACvxG,IAAD,CAAT,GAAkBA,IAAlB,GAAyB,CAAC,OAAI,CAACJ,KAAlD;;AACA,iBAAI,CAACg+G,OAAL,CAAagH,UAAb;;AACA,iBAAI,CAACt0H,GAAL,CAASS,YAAT;AACH,SAJD;AAKH;AACD;AACJ;AACA;;;;WACI,eAAa;AACT,eAAO,KAAK6O,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAK/D,KAAL,GAAaud,SAAb;AACA,aAAK89J,UAAL;AACA,aAAKvF,cAAL;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,mBAAU;AACN,YAAMwF,SAAS,GAAG,CAAC5lE,SAAS,CAAC,KAAKrtG,IAAN,CAAV,IAAyBmjK,aAAa,CAAC,KAAKnjK,IAAN,CAAxD;AACA,YAAMkzK,UAAU,GAAG,CAAC7lE,SAAS,CAAC,KAAK11G,KAAN,CAAV,IAA0BwrK,aAAa,CAAC,KAAKxrK,KAAN,CAA1D;AACA,eAAOs7K,SAAS,IAAIC,UAApB;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWzwK,GAAX,EAAgB;AACZ,eAAO,KAAK+sG,YAAL,CAAkBnsG,GAAlB,CAAsBZ,GAAtB,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWzb,KAAX,EAAkB;AACdA,QAAAA,KAAK,CAACunL,wBAAN;AACA,aAAKhlI,KAAL;AACA,aAAK6nI,UAAL,GAAkB,IAAlB;AACA,aAAK+B,iBAAL,GAAyBj+J,SAAzB;AACA,aAAKusH,gBAAL,CAAsBgsC,cAAtB,CAAqC,EAArC;AACA,aAAKgE,iBAAL,CAAuBrtK,IAAvB;AACA,aAAKgtK,UAAL,GAAkB,KAAlB;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWz5K,KAAX,EAAkB;AACd,aAAKA,KAAL,GAAaA,KAAK,KAAK,IAAV,GAAiBud,SAAjB,GAA6Bvd,KAA1C;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKg1I,gBAAL,GAAwBh1I,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKi1I,iBAAL,GAAyBj1I,EAAzB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,UAAjB,EAA6B;AACzB,aAAKvZ,QAAL,GAAgBuZ,UAAhB;AACH;AACD;AACJ;AACA;;;;WACI,eAAoB;AAChB,eAAO,KAAKk9C,OAAL,GAAe,kCAAf,GAAoD,KAAK4/B,SAAL,IAAkB,aAA7E;AACH;AACD;AACJ;AACA;;;;WACI,eAA0B;AACtB,yBAAU,KAAKvlH,IAAL,GAAY0hI,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAAxB,GAAgD,EAA1D,cAAgE,KAAK6+G,QAAL,GAAgB,cAAc,KAAKA,QAAnC,GAA8C,EAA9G,cAAoH,KAAKA,QAAL,GAAgB,cAAc,KAAKA,QAAnB,GAA8B,OAA9C,GAAwD,EAA5K;AAEH;AACD;AACJ;AACA;;;;aACI,oBAAW;AACP,YAAI,KAAK9zG,MAAT,EAAiB;AACb,cAAM8zK,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,iCAAqB,KAAK84D,UAA1B;AAAA,cAAQrjJ,GAAR,oBAAQA,GAAR;AAAA,cAAaD,GAAb,oBAAaA,GAAb;AACA2+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACH;AACJ;;;aACD,0BAAiB;AACb,YAAI,CAAC87E,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAI,KAAKsmE,cAAL,KAAwB,IAAxB,IAAgC7kE,SAAS,CAAC,KAAK11G,KAAN,CAAzC,IAAyD,OAAO,KAAKA,KAAZ,KAAsB,QAAnF,EAA6F;AACzF,gBAAM,IAAIyU,KAAJ,CAAUkkK,gBAAgB,CAAC+C,SAA3B,CAAN;AACH;;AACD,YAAI,KAAKnB,cAAL,KAAwB,KAAxB,IAAiC7kE,SAAS,CAAC,KAAK11G,KAAN,CAA1C,IAA0D,OAAO,KAAKA,KAAZ,KAAsB,QAApF,EAA8F;AAC1F,gBAAM,IAAIyU,KAAJ,CAAUkkK,gBAAgB,CAAC3lE,MAA3B,CAAN;AACH;;AACD,YAAM2oE,WAAW,GAAG,CAACjmE,SAAS,CAAC,KAAKi2D,UAAN,CAAV,KAAgC,CAACj2D,SAAS,CAAC,KAAK6H,SAAN,CAA9D;;AACA,YAAIo+D,WAAJ,EAAiB;AACb,gBAAM,IAAIlnK,KAAJ,CAAUkkK,gBAAgB,CAACiD,YAA3B,CAAN;AACH;;AACD,YAAI,KAAKtJ,OAAL,IAAgB95I,KAAK,CAAC,KAAK85I,OAAL,CAAa1tF,UAAd,CAAzB,EAAoD;AAChD,gBAAM,IAAInwE,KAAJ,CAAUkkK,gBAAgB,CAACkD,YAA3B,CAAN;AACH;AACJ;;;aACD,oBAAW;AACP;AACA,YAAI,KAAKpC,UAAT,EAAqB;AACjB;AACH;;AACD,YAAMz5K,KAAK,GAAG,KAAKA,KAAnB;AACA,YAAM2rK,UAAU,GAAG,KAAKA,UAAxB;AACA,YAAMplE,QAAQ,GAAG,KAAKu1E,YAAL,CAAkB;AAAEnQ,UAAAA,UAAU,EAAVA,UAAF;AAAc3rK,UAAAA,KAAK,EAALA;AAAd,SAAlB,CAAjB;;AACA,YAAI01G,SAAS,CAACnP,QAAQ,CAACj7E,KAAV,CAAT,IAA6Bi7E,QAAQ,CAACj7E,KAAT,KAAmB,CAAC,CAArD,EAAwD;AACpD,eAAK6vJ,WAAL,CAAiB;AAAE79D,YAAAA,QAAQ,EAAE/W,QAAQ,CAAC+W,QAArB;AAA+By+D,YAAAA,OAAO,EAAE;AAAxC,WAAjB;AACA,eAAKjG,cAAL,CAAoBvvE,QAAQ,CAACj7E,KAA7B;AACH,SAHD,MAIK,IAAIoqF,SAAS,CAAC11G,KAAD,CAAT,IAAoB,KAAKo5K,WAA7B,EAA0C;AAC3C,eAAK+B,WAAL,CAAiB;AAAE79D,YAAAA,QAAQ,EAAEt9G;AAAZ,WAAjB;AACA,eAAK81K,cAAL,CAAoB,CAAC,CAArB;AACH,SAHI,MAIA,IAAI,KAAK0F,iBAAL,IAA0B,KAAKx7K,KAAnC,EAA0C;AAC3C,eAAKm7K,WAAL,CAAiB;AAAE79D,YAAAA,QAAQ,EAAE,KAAKk+D;AAAjB,WAAjB;AACA,eAAK1F,cAAL;AACH,SAHI,MAIA;AACD,eAAKuF,UAAL;AACA,eAAKvF,cAAL,CAAoB,CAAC,CAArB;AACH;AACJ;;;aACD,4BAA2C;AAAA,YAA7Bx4D,QAA6B,SAA7BA,QAA6B;AAAA,kCAAnBy+D,OAAmB;AAAA,YAAnBA,OAAmB,8BAAT,KAAS;AACvC,aAAKz+D,QAAL,GAAgBA,QAAhB;AACA,aAAKj1G,IAAL,GAAYwmJ,MAAM,CAACvxC,QAAD,EAAW,KAAKC,SAAhB,CAAlB;;AACA,YAAIw+D,OAAJ,EAAa;AACT,eAAKP,iBAAL,GAAyBl+D,QAAzB;AACH;AACJ;;;aACD,sBAAa;AACT,aAAKj1G,IAAL,GAAYkV,SAAZ;AACA,aAAK+/F,QAAL,GAAgB//F,SAAhB;AACH;;;aACD,wBAAe+N,KAAf,EAAsB;AAClB,YAAM7iB,KAAK,GAAG,CAACitG,SAAS,CAACpqF,KAAD,CAAV,IAAqBA,KAAK,GAAG,CAA3C;AACA,aAAKw+G,gBAAL,CAAsBgsC,cAAtB,CAAqCrtK,KAAK,GAAG,EAAH,GAAQ,CAAC6iB,KAAD,CAAlD;AACA,aAAKw+G,gBAAL,CAAsBziH,OAAtB,GAAgCiE,KAAhC;AACH;;;aACD,6BAAoBA,KAApB,EAA2B;AACvB,YAAMitJ,QAAQ,GAAG,KAAK3qL,IAAL,CAAUuX,MAAV,GAAmB,CAApC;;AACA,YAAI,KAAK4rK,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD,iBAAQA,KAAK,GAAGitJ,QAAT,GAAqB,KAAKrH,mBAAL,CAAyB5lJ,KAAK,GAAG,CAAjC,CAArB,GAA2D/N,SAAlE;AACH,SAFD,MAGK;AACD,iBAAO+N,KAAP;AACH;AACJ;;;aACD,4BAAmBjjB,IAAnB,EAAyB;AAAA;;AACrB,YAAI,KAAKuoK,WAAL,CAAiBf,OAArB,EAA8B;AAC1B,iBAAO,UAAC3lK,IAAD,EAAU;AACb,gBAAIsuK,QAAQ,GAAG3pB,MAAM,CAAC3kJ,IAAI,CAAClK,KAAN,EAAa,OAAI,CAACu9G,SAAlB,CAArB;AACAi7D,YAAAA,QAAQ,GAAG,CAAC9iE,SAAS,CAAC8iE,QAAD,CAAV,GAAuB,EAAvB,GAA4BA,QAAQ,CAAChhL,QAAT,GAAoB2S,WAApB,EAAvC;AACA,mBAAOquK,QAAQ,CAAC93B,UAAT,CAAoBr4I,IAAI,CAAC8B,WAAL,EAApB,CAAP;AACH,WAJD;AAKH,SAND,MAOK;AACD,iBAAO,UAACD,IAAD,EAAU;AACb,gBAAIsuK,QAAQ,GAAG3pB,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACqzG,SAAZ,CAArB;AACAi7D,YAAAA,QAAQ,GAAG,CAAC9iE,SAAS,CAAC8iE,QAAD,CAAV,GAAuB,EAAvB,GAA4BA,QAAQ,CAAChhL,QAAT,GAAoB2S,WAApB,EAAvC;AACA,mBAAOquK,QAAQ,CAAC93B,UAAT,CAAoBr4I,IAAI,CAAC8B,WAAL,EAApB,CAAP;AACH,WAJD;AAKH;AACJ;;;aACD,6BAAoC;AAAA;;AAAA,YAArBwhK,UAAqB,SAArBA,UAAqB;AAAA,YAAT3rK,KAAS,SAATA,KAAS;AAChC,YAAMi3B,MAAM,GAAG;AACXqmF,UAAAA,QAAQ,EAAE,IADC;AAEXhyF,UAAAA,KAAK,EAAE,CAAC;AAFG,SAAf;;AAIA,YAAM0wJ,QAAQ,GAAG,SAAXA,QAAW,CAAC55K,OAAD,EAAa;AAC1B,cAAMk7G,QAAQ,GAAG,OAAI,CAACszD,WAAL,CAAiBf,OAAjB,GAA2BztK,OAAO,CAACpC,KAAnC,GAA2CoC,OAA5D;AACA,iBAAOysJ,MAAM,CAACvxC,QAAD,EAAWquD,UAAX,CAAN,KAAiC9c,MAAM,CAAC7uJ,KAAD,EAAQ2rK,UAAR,CAA9C;AACH,SAHD;;AAIA,YAAMrgJ,KAAK,GAAG,KAAKslJ,WAAL,CAAiBnmI,SAAjB,CAA2BuxI,QAA3B,CAAd;AACA/kJ,QAAAA,MAAM,CAACqmF,QAAP,GAAkB,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAlB;AACA2L,QAAAA,MAAM,CAAC3L,KAAP,GAAeA,KAAf;AACA,eAAO2L,MAAP;AACH;;;aACD,gBAAO5uB,IAAP,EAA4B;AAAA,YAAf8nK,SAAe,uEAAH,CAAG;AACxB,YAAI7kJ,KAAJ;;AACA,YAAIjjB,IAAI,CAAClD,MAAL,IAAe,KAAKyrK,WAAL,CAAiBN,UAApC,EAAgD;AAC5ChlJ,UAAAA,KAAK,GAAG,KAAKslJ,WAAL,CAAiBnmI,SAAjB,CAA2B,KAAKssI,kBAAL,CAAwB1uK,IAAxB,CAA3B,EAA0D8nK,SAA1D,CAAR;AACH,SAFD,MAGK;AACD7kJ,UAAAA,KAAK,GAAG,CAAC,CAAT;AACH;;AACD,YAAI,KAAKylJ,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD,cAAIA,KAAK,GAAG,CAAR,GAAY,KAAKslJ,WAAL,CAAiBN,UAAjC,EAA6C;AACzC,iBAAKn0H,MAAL,CAAY9zC,IAAZ,EAAkBijB,KAAK,GAAG,CAA1B;AACH,WAFD,MAGK;AACD,iBAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4B,CAAC,CAA7B;AACH;AACJ,SAPD,MAQK;AACD,eAAKk4F,gBAAL,CAAsBl4F,KAAtB,CAA4BtmB,KAA5B;;AACA,cAAI,KAAK8qJ,OAAT,EAAkB;AACd,iBAAK3H,aAAL,GAAqB5f,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAD,EAAiC,KAAKiyF,SAAtC,CAA3B;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,yBAAgB;AACZ,YAAM0+D,WAAW,GAAG,CAAC,CAAC,KAAKnyC,gBAAL,CAAsB7iH,QAAtB,CAA+B9hB,MAArD;AACA,YAAMgxK,aAAa,GAAG,KAAKC,OAAL,IAAgB,CAAC,KAAKC,gBAAtB,IAA0C,KAAK5H,aAA/C,IAAgE,KAAKpmK,IAA3F;;AACA,YAAI,CAAC4zK,WAAD,IAAgB9F,aAAhB,IAAiC,KAAK1H,aAAL,CAAmBtkK,WAAnB,GAAiCu2I,UAAjC,CAA4C,KAAKr4I,IAAL,CAAU8B,WAAV,EAA5C,CAArC,EAA2G;AACvG,iBAAO,KAAKskK,aAAZ;AACH,SAFD,MAGK;AACD,eAAKA,aAAL,GAAqBlxJ,SAArB;AACH;AACJ;;;aACD,kBAAS+N,KAAT,EAAgB;AACZ,YAAI,KAAKslJ,WAAL,CAAiBN,UAAjB,KAAgC,CAApC,EAAuC;AACnC;AACH;;AACD,aAAKjoK,IAAL,GAAYwmJ,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAD,EAAiC,KAAKiyF,SAAtC,CAAlB;AACA,aAAKusB,gBAAL,CAAsB5kH,MAAtB,CAA6BoG,KAA7B;AACH;AACD;AACJ;AACA;;;;aACI,wBAAej8B,KAAf,EAAsB;AAClB,YAAM4sL,WAAW,GAAGvmE,SAAS,CAAC,KAAKo0B,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAAD,CAA7B;AACA,YAAMI,OAAO,GAAGmR,KAAK,CAAC,KAAKsxG,gBAAL,CAAsBziH,OAAvB,CAAL,GAAuC,KAAK6pJ,mBAAL,CAAyB,CAAzB,CAAvC,GAAqE,KAAKpnC,gBAAL,CAAsBziH,OAA3G;AACA,YAAI+xB,MAAM,GAAG,CAAb;;AACA,YAAI,KAAKjyB,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,YAAI7iC,KAAK,CAAC+9F,OAAN,KAAkBgnB,sEAAlB,IAA+B/kH,KAAK,CAAC+9F,OAAN,KAAkBgnB,qEAArD,EAA+D;AAC3D;AACH;;AACD,YAAI,CAAC6nE,WAAL,EAAkB;AACd,cAAI5sL,KAAK,CAAC+9F,OAAN,KAAkBgnB,2EAAtB,EAAsC;AAClCh7D,YAAAA,MAAM,GAAG,CAAC,CAAV;AACH,WAFD,MAGK,IAAI/pD,KAAK,CAAC+9F,OAAN,KAAkBgnB,yEAAtB,EAAoC;AACrCh7D,YAAAA,MAAM,GAAG,CAAT;AACH;AACJ;;AACD,YAAMqtD,MAAM,GAAG,KAAKwY,iBAAL,CAAuByB,OAAvB,CAA+B;AAC1Ch8E,UAAAA,OAAO,EAAE0U,MAAM,GAAG/xB,OADwB;AAE1C8Q,UAAAA,GAAG,EAAE,KAAKy4I,WAAL,CAAiBN,UAAjB,GAA8B,CAFO;AAG1Cl4I,UAAAA,GAAG,EAAE,CAHqC;AAI1CysF,UAAAA,aAAa,EAAEx1H;AAJ2B,SAA/B,CAAf;;AAMA,YAAIo3G,MAAM,KAAKoX,gBAAgB,CAACQ,SAA5B,IACA5X,MAAM,KAAKoX,gBAAgB,CAACsc,IAD5B,IAEA1zB,MAAM,KAAKoX,gBAAgB,CAACwc,KAF5B,IAGA5zB,MAAM,KAAKoX,gBAAgB,CAACt5B,SAH5B,IAIAkiB,MAAM,KAAKoX,gBAAgB,CAACixD,MAJ5B,KAKEroE,MAAM,KAAKoX,gBAAgB,CAAC5pE,KAA5B,IAAqC,KAAKjxC,MAA3C,IAAsDyjG,MAAM,KAAKoX,gBAAgB,CAAC5pE,KALnF,CAAJ,EAK+F;AAC3F5kD,UAAAA,KAAK,CAACkU,cAAN;AACH;AACJ;;;aACD,uBAAc;AACV,YAAM8E,IAAI,GAAG,KAAKA,IAAlB;AACA,YAAMgf,OAAO,GAAG,KAAKyiH,gBAAL,CAAsBziH,OAAtC;AACA,YAAM60J,UAAU,GAAGxmE,SAAS,CAACruF,OAAD,CAAT,IAAsBA,OAAO,KAAK,CAAC,CAAtD;AACA,YAAM80J,YAAY,GAAGttB,MAAM,CAAC,KAAK2sB,iBAAN,EAAyB,KAAKj+D,SAA9B,CAAN,IAAkD,EAAvE;AACA,YAAM6+D,eAAe,GAAGvtB,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwBhpJ,OAAxB,CAAD,EAAmC,KAAKk2F,SAAxC,CAA9B;AACA,YAAMuwC,cAAc,GAAGzlJ,IAAI,KAAK8zK,YAAhC;AACA,aAAKj1B,WAAL,CAAiB,KAAjB;AACA,aAAKuyB,UAAL,GAAkB,KAAlB;;AACA,YAAI,KAAKL,WAAL,IAAoBtrB,cAAxB,EAAwC;AACpC,cAAIzlJ,IAAI,KAAK+zK,eAAT,IAA4B,KAAKC,aAAL,EAAhC,EAAsD;AAClD,iBAAKvyC,gBAAL,CAAsBh6H,MAAtB,CAA6BuX,OAA7B;AACH,WAFD,MAGK;AACD,iBAAKvX,MAAL,CAAYzH,IAAZ,EAAkB,IAAlB;AACH;AACJ;;AACD,YAAI,CAAC,KAAK+wK,WAAV,EAAuB;AACnB,cAAI8C,UAAJ,EAAgB;AACZ,iBAAKpyC,gBAAL,CAAsBh6H,MAAtB,CAA6BuX,OAA7B;AACH,WAFD,MAGK,IAAIymI,cAAJ,EAAoB;AACrB,iBAAKh+I,MAAL,CAAYzH,IAAZ,EAAkB,IAAlB;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,sBAAa;AAAA;;AACT,aAAKoxK,UAAL,GAAkB,KAAlB;AACA,aAAK5C,SAAL,CAAe1kK,KAAf,CAAqBxQ,aAArB,CAAmCkvH,UAAnC,GAAgD,CAAhD,CAFS,CAE0C;;AACnD,aAAKvwF,SAAL,GAAiB,KAAjB;AACA,YAAMg8I,mBAAmB,GAAGztB,MAAM,CAAC,KAAKvxC,QAAN,EAAgB,KAAKquD,UAArB,CAAN,KAA2C9c,MAAM,CAAC,KAAK7uJ,KAAN,EAAa,KAAK2rK,UAAlB,CAA7E;AACA,YAAM4Q,WAAW,GAAG,KAAK1F,SAAL,CAAe72K,KAAnC;AACA,YAAM8tJ,cAAc,GAAGyuB,WAAW,MAAM1tB,MAAM,CAAC,KAAKvxC,QAAN,EAAgB,KAAKC,SAArB,CAAN,IAAyC,EAA/C,CAAlC;AACA,YAAM45D,eAAe,GAAGmF,mBAAmB,IAAIxuB,cAA/C;AACA,YAAMoG,SAAS,GAAGijB,eAAe,IAAI7iE,6EAAY,CAAC,KAAK1zD,MAAN,CAA/B,IAAgD0zD,6EAAY,CAAC,KAAKp0G,KAAN,CAA5D,IAA4E+sK,WAAW,CAAC,KAAKztD,OAAL,CAAa79G,aAAd,CAAzG;;AACA,YAAIuyJ,SAAJ,EAAe;AACX,eAAKt9G,IAAL,CAAUzR,GAAV,CAAc,YAAM;AAChB,gBAAIgyI,eAAJ,EAAqB;AACjB,kBAAMqF,cAAc,GAAG9mE,SAAS,CAAC,OAAI,CAAC0mE,eAAN,CAAT,IAAmC,OAAI,CAACA,eAAL,CAAqBjyK,WAArB,OAAuCoyK,WAAW,CAACpyK,WAAZ,EAAjG;;AACA,kBAAIqyK,cAAc,IAAIF,mBAAtB,EAA2C;AACvC,uBAAI,CAACxyC,gBAAL,CAAsBh6H,MAAtB,CAA6B,OAAI,CAACg6H,gBAAL,CAAsBziH,OAAnD;AACH,eAFD,MAGK;AACD,uBAAI,CAACvX,MAAL,CAAYysK,WAAZ,EAAyB,IAAzB;AACH;AACJ;;AACD,mBAAI,CAAC37H,MAAL,CAAY13C,IAAZ;;AACA,mBAAI,CAACwsK,iBAAL;;AACA,mBAAI,CAACxuB,WAAL,CAAiB,KAAjB;AACH,WAbD;AAcH,SAfD,MAgBK;AACD,eAAKA,WAAL,CAAiB,KAAjB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,wBAAe;AACX,aAAKA,WAAL,CAAiB,KAAjB,EADW,CAEX;;AACA,YAAM+0B,WAAW,GAAG,KAAKnyC,gBAAL,CAAsB7iH,QAAtB,CAA+B9hB,MAA/B,GAAwC,CAA5D;;AACA,YAAI,CAAC82K,WAAL,EAAkB;AACd,eAAKxN,aAAL,GAAqB,IAArB;AACA,eAAK3kC,gBAAL,CAAsBziH,OAAtB,GAAgC,CAAC,CAAjC;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gCAAuB;AACnB,aAAKo1J,gBAAL;AACA,aAAKv1B,WAAL,CAAiB,IAAjB;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgB7+I,IAAhB,EAAsB;AAClB,YAAM2uK,iBAAiB,GAAG,KAAK3uK,IAAL,GAAY,KAAKA,IAAL,CAAUlD,MAAtB,GAA+B,CAAzD;AACA,aAAKkxK,gBAAL,GAAyBhuK,IAAI,CAAClD,MAAL,GAAc6xK,iBAAf,GAAoC,IAApC,GAA2C,KAAnE;AACA,aAAK3uK,IAAL,GAAYA,IAAZ,CAHkB,CAIlB;;AACA,aAAKyhI,gBAAL,CAAsBgsC,cAAtB,CAAqC,EAArC;AACA,aAAK5uB,WAAL,CAAiB,IAAjB;AACA,aAAKuyB,UAAL,GAAkB,IAAlB;;AACA,YAAI,KAAKrE,UAAL,IAAmB,KAAKuE,UAAL,KAAoBtxK,IAA3C,EAAiD;AAC7C,eAAKsxK,UAAL,GAAkBtxK,IAAlB;AACA,eAAKgtK,YAAL,CAAkBnsK,IAAlB,CAAuBb,IAAvB;AACH,SAHD,MAIK;AACD,eAAK8zC,MAAL,CAAY9zC,IAAZ;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,uBAAc;AAAA;;AACV,aAAKi4B,SAAL,GAAiB,IAAjB;;AACA,YAAIg0E,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,eAAK9J,IAAL,CAAUzR,GAAV,CAAc;AAAA,mBAAM,OAAI,CAACub,OAAL,CAAax3C,IAAb,EAAN;AAAA,WAAd;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW7Z,KAAX,EAAkB;AACd,YAAMijL,OAAO,GAAG,KAAKA,OAArB;AACAA,QAAAA,OAAO,CAAChlE,IAAR,GAAej+G,KAAK,CAACi+G,IAArB;AACH;;;aACD,gBAAO+nB,SAAP,EAAoC;AAAA,YAAlBqnD,QAAkB,uEAAP,KAAO;;AAChC,YAAIA,QAAJ,EAAc;AACV,eAAK9C,kBAAL,CAAwBntK,IAAxB,CAA6B4oH,SAA7B;AACH,SAFD,MAGK;AACD,eAAKwkD,YAAL,CAAkBptK,IAAlB,CAAuB4oH,SAAvB;AACH;AACJ;;;aACD,2BAAkB;AACd,aAAKogD,gBAAL,CAAsB,KAAKz1K,KAA3B;AACA,aAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsB,KAAKlJ,KAA3B;AACA,aAAKw7K,iBAAL,GAAyB,KAAKl+D,QAA9B;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,YAAI,CAAC,KAAK6W,YAAV,EAAwB;AACpB,eAAK0iD,SAAL,CAAejlI,KAAf;AACH;;AACD,YAAI,CAAC,KAAK5uC,MAAV,EAAkB;AACd,eAAKy5K,gBAAL;AACH;;AACD,aAAKv1B,WAAL,CAAiB,CAAC,KAAKlkJ,MAAvB;AACH;;;WACD,eAA2B;AACvB,eAAO,CAAC,kBAAD,EAAqB,SAArB,EAAgCswF,MAAhC,CAAuC,KAAKmvB,aAAL,CAAmBpD,UAAnB,IAAiC,EAAxE,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,6BAAoBhwH,KAApB,EAA2B;AACvBA,QAAAA,KAAK,CAACkU,cAAN;AACH;;;WACD,eAAsB;AAClB,YAAM8jB,OAAO,GAAG,KAAKyiH,gBAAL,CAAsBziH,OAAtC;;AACA,YAAI,CAACquF,SAAS,CAACruF,OAAD,CAAV,IAAuBA,OAAO,KAAK,CAAC,CAAxC,EAA2C;AACvC,iBAAO,IAAP;AACH;;AACD,YAAMmxJ,QAAQ,GAAG3pB,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwBhpJ,OAAxB,CAAD,EAAmC,KAAKk2F,SAAxC,CAAvB;AACA,eAAO,CAAC7H,SAAS,CAAC8iE,QAAD,CAAV,GAAuB,EAAvB,GAA4BA,QAAQ,CAAChhL,QAAT,EAAnC;AACH;AACD;AACJ;AACA;;;;aACI,4BAAmB;AACf,YAAMmlL,QAAQ,GAAGjnE,SAAS,CAAC,KAAKo0B,gBAAL,CAAsBziH,OAAvB,CAAT,IAA4C,KAAKyiH,gBAAL,CAAsBziH,OAAtB,GAAgC,CAAC,CAA9F;;AACA,YAAI,CAACs1J,QAAD,IAAa,KAAKt0K,IAAlB,IAA0B,KAAKuoK,WAAL,CAAiBN,UAA/C,EAA2D;AACvD,cAAI,KAAK8E,UAAT,EAAqB;AACjB,iBAAKtrC,gBAAL,CAAsBziH,OAAtB,GAAgC,KAAK6pJ,mBAAL,CAAyB,CAAzB,CAAhC;AACH,WAFD,MAGK;AACD,iBAAK/0H,MAAL,CAAY,KAAK9zC,IAAjB;AACH;AACJ;AACJ;;;aACD,yBAAgB;AACZ,YAAI,EAAE,KAAK+tK,OAAL,IAAgB1gE,SAAS,CAAC,KAAKmhE,SAAL,CAAe72K,KAAhB,CAA3B,CAAJ,EAAwD;AACpD,iBAAO,KAAP;AACH;;AACD,YAAM48K,eAAe,GAAG,KAAKhM,WAAL,CAAiBP,MAAjB,CAAwB,KAAKvmC,gBAAL,CAAsBziH,OAA9C,CAAxB;AACA,YAAM+0J,eAAe,GAAGvtB,MAAM,CAAC+tB,eAAD,EAAkB,KAAKr/D,SAAvB,CAA9B;;AACA,YAAI,CAAC7H,SAAS,CAAC0mE,eAAD,CAAd,EAAiC;AAC7B,iBAAO,KAAP;AACH;;AACD,eAAO,KAAKvF,SAAL,CAAe72K,KAAf,CAAqBmK,WAArB,OAAuCiyK,eAAe,CAACjyK,WAAhB,EAA9C;AACH;;;aACD,wBAAe;AACX,YAAI,KAAKm4G,QAAT,EAAmB;AACf,eAAKA,QAAL,CAAcK,YAAd,CACK21D,mBADL,CACyB,WADzB,EACsC,KAAK3C,qBAD3C;AAEA,eAAKrzD,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;AACH;AACJ;;;aACD,uBAAc;AAAA;;AACV,YAAI,KAAKgwD,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,YAAMyqE,eAAe,GAAG,KAAK9xI,SAAL,KAAmB,KAAnB,GAA2B,OAA3B,GAAqC,MAA7D;AACA,YAAM+xI,cAAc,GAAG;AAAEn1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAvB;AACA,YAAMm1D,aAAa,GAAG;AAAEp1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAtB;AACA,aAAKR,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,UAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnCljH,UAAAA,OAAO,EAAE,KAAKmmH,aAAL,CAAmBnmH,OAFO;AAGnC+gF,UAAAA,QAAQ,EAAE,KAAKA,QAHoB;AAInC9pB,UAAAA,OAAO,EAAE,KAAK6vD,aAJqB;AAKnC/D,UAAAA,UAAU,EAAE,KAAK64D,oBALkB;AAMnC9vD,UAAAA,YAAY,EAAE,UANqB;AAOnCjF,UAAAA,WAAW,EAAE60D,cAPsB;AAQnCt1D,UAAAA,UAAU,EAAEu1D;AARuB,SAAvB,CAAhB;AAUA,YAAMnB,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,gCAAqB,KAAK84D,UAA1B;AAAA,YAAQrjJ,GAAR,qBAAQA,GAAR;AAAA,YAAaD,GAAb,qBAAaA,GAAb;AACA2+I,QAAAA,YAAY,CAACqB,gBAAb,CAA8B,WAA9B,EAA2C,KAAKxC,qBAAhD;AACAmB,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmBI,MAAnB,GAA4B,KAAKq5K,WAAjC;AACAc,QAAAA,YAAY,CAACx/K,YAAb,CAA0B,KAA1B,EAAiC,KAAK2uC,SAAtC;AACA,aAAKq8E,QAAL,CAAcgB,SAAd,CAAwBh0H,SAAxB,CAAkC,YAAM;AACpC,iBAAI,CAACmF,GAAL,CAASoC,aAAT;;AACA,iBAAI,CAACuhL,WAAL,CAAiBhG,YAAjB,CAA8B,OAAI,CAACtoC,gBAAL,CAAsBziH,OAApD;;AACA,iBAAI,CAAC7D,MAAL,CAAYta,IAAZ;AACH,SAJD;AAKA,aAAKo5G,QAAL,CAAc+1D,UAAd,CAAyB/oL,SAAzB,CAAmC,YAAM;AACrC,iBAAI,CAAC0uD,MAAL,CAAY90C,IAAZ;AACH,SAFD;AAGA,aAAKo5G,QAAL,CAAce,wBAAd,CAAuC/zH,SAAvC,CAAiD;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,KAAjB,CAAN;AAAA,SAAjD;AACH;;;aACD,iBAAQ/iJ,IAAR,EAAc;AACV,aAAKJ,KAAL,GAAaI,IAAb;AACA,aAAK4+G,YAAL;;AACA,YAAI,KAAKh/G,KAAT,EAAgB;AACZ,eAAKm/G,WAAL;AACH;AACJ;;;aACD,4BAAmB/+G,IAAnB,EAAyB;AACrB,YAAMq4G,SAAS,GAAG,IAAIjB,gBAAJ,EAAlB;;AACA,YAAIp3G,IAAJ,EAAU;AACN,eAAKA,IAAL,CAAU+E,IAAV,CAAeszG,SAAf;AACH,SAFD,MAGK;AACD,eAAKt8G,KAAL,CAAWgJ,IAAX,CAAgBszG,SAAhB;AACH;;AACD,eAAOA,SAAS,CAACC,kBAAV,EAAP;AACH;;;aACD,uBAAc;AACV,YAAI,EAAE,KAAK24D,UAAL,IAAmB,KAAKuE,UAA1B,CAAJ,EAA2C;AACvC;AACH;;AACD,aAAKA,UAAL,GAAkB,EAAlB;AACA,aAAKtE,YAAL,CAAkBnsK,IAAlB,CAAuB,KAAKywK,UAA5B;AACH;;;aACD,gCAAuB;AAAA;;AACnB,YAAI,CAACxlE,oFAAmB,EAApB,IAA0B,CAAC,KAAKggB,YAApC,EAAkD;AAC9C;AACH;;AACD,aAAKv9E,IAAL,CAAUrS,iBAAV,CAA4B;AAAA,iBAC5B;AACA,mBAAI,CAACszI,wBAAL,GAAgC,OAAI,CAACrjL,QAAL,CAAc0tE,MAAd,CAAqB3tE,QAArB,EAA+B,YAA/B,EAA6C,UAACmE,CAAD,EAAO;AAChF,kBAAMM,MAAM,GAAGN,CAAC,CAACM,MAAjB;AACA,kBAAM6jL,YAAY,GAAGvP,UAAU,CAAC,OAAI,CAAC9tD,OAAN,EAAexmH,MAAf,EAAuB,OAAI,CAACspH,QAA5B,CAA/B;;AACA,kBAAI,OAAI,CAAChiF,SAAL,IAAkB,CAACu8I,YAAvB,EAAqC;AACjC;AACA,uBAAI,CAACjmI,IAAL,CAAUzR,GAAV,CAAc;AAAA,yBAAM,OAAI,CAACupD,IAAL,EAAN;AAAA,iBAAd;AACH,eAHD,MAIK,IAAI,OAAI,CAAC1rF,MAAL,IAAe,CAAC65K,YAApB,EAAkC;AACnC;AACA,uBAAI,CAACjmI,IAAL,CAAUzR,GAAV,CAAc;AAAA,yBAAM,OAAI,CAAC+hH,WAAL,CAAiB,KAAjB,CAAN;AAAA,iBAAd;AACH;AACJ,aAX+B;AAFJ;AAAA,SAA5B;AAcH;;;aACD,oCAA2B;AACvB,YAAM41B,aAAa,GAAG,KAAK53J,MAAL,CAAYvjB,aAAlC;AACA,YAAMtS,KAAK,GAAGu7K,6DAAQ,GAAG,aAAH,GAAmB,OAAzC;AACA,aAAKwQ,yBAAL,GAAiC,KAAK5mL,QAAL,CAAc0tE,MAAd,CAAqB46G,aAArB,EAAoCztL,KAApC,EAA2C,KAAK0tL,WAAL,CAAiBtjL,IAAjB,CAAsB,IAAtB,CAA3C,CAAjC;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAKxB,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAA/D;AACH;;AACD,YAAI,KAAKihH,OAAL,KAAiB,MAArB,EAA6B;AACzB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAAlE;AACH;;AACD,YAAI,KAAKpC,QAAL,KAAkB,MAAtB,EAA8B;AAC1B,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAnE;AACH;AACJ;;;;;;AAELkiE,EAAAA,iBAAiB,CAACl/I,IAAlB;AAAA,qBAA+Gk/I,iBAA/G,EAhoIsGtpL,gEAgoItG,CAAkJA,sDAAlJ,GAhoIsGA,gEAgoItG,CAA4KkE,8EAA5K,GAhoIsGlE,gEAgoItG,CAA+MmE,wEAA/M,GAhoIsGnE,gEAgoItG,CAA2Ou4I,gBAA3O,GAhoIsGv4I,gEAgoItG,CAAwQquH,iBAAxQ,GAhoIsGruH,gEAgoItG,CAAsSihL,oBAAtS,GAhoIsGjhL,gEAgoItG,CAAuUkgL,WAAvU,GAhoIsGlgL,gEAgoItG,CAA+VA,kDAA/V,GAhoIsGA,gEAgoItG,CAAqXA,6DAArX,GAhoIsGA,gEAgoItG,CAAsZA,qDAAtZ,GAhoIsGA,gEAgoItG,CAA+ak2J,aAA/a;AAAA;;AACAozB,EAAAA,iBAAiB,CAACx8I,IAAlB,kBAjoIsG9sC,gEAioItG;AAAA,UAAmGspL,iBAAnG;AAAA;AAAA;AAAA;AAjoIsGtpL,QAAAA,6DAioItG,WAiBqEw/K,qBAjBrE;AAjoIsGx/K,QAAAA,6DAioItG,WAiB2Ky/K,uBAjB3K;AAjoIsGz/K,QAAAA,6DAioItG,WAiBmR0/K,uBAjBnR;AAjoIsG1/K,QAAAA,6DAioItG,WAiB2X4hL,uBAjB3X;AAjoIsG5hL,QAAAA,6DAioItG,WAiBke2/K,sBAjBle;AAjoIsG3/K,QAAAA,6DAioItG,WAiB6kB4/K,2BAjB7kB;AAAA;;AAAA;AAAA;;AAjoIsG5/K,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAAA;AAAA;AAAA;AAAA;AAjoIsGA,QAAAA,0DAioItG,SAiB2uBkP,4DAjB3uB;AAjoIsGlP,QAAAA,0DAioItG;AAjoIsGA,QAAAA,0DAioItG,CAiBi7Bq+K,kBAjBj7B;AAjoIsGr+K,QAAAA,0DAioItG;AAjoIsGA,QAAAA,0DAioItG;AAAA;;AAAA;AAAA;;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAjoIsGA,QAAAA,6DAioItG,MAjoIsGA,0DAioItG;AAAA;AAAA;AAAA;AAAA;AAAA;AAjoIsGA,QAAAA,0DAioItG;AAjoIsGA,QAAAA,0DAioItG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAjoIsGA,iEAioItG,CAAmqC,CAC3pCqpL,uBAD2pC,EAE3pCnJ,WAF2pC,EAG3pC3nC,gBAH2pC,EAI3pClqB,iBAJ2pC,EAK3pC4yD,oBAL2pC,EAM3pCl8D,8EAN2pC,EAO3pC;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAP2pC,EAW3pC;AACIH,MAAAA,OAAO,EAAEy+K,mBADb;AACkCzxI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMq5J,iBAAN;AAAA,OAAD;AADzD,KAX2pC,EAc3pC;AACIlmL,MAAAA,OAAO,EAAEk/H,uEADb;AACyBlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMq5J,iBAAN;AAAA,OAAD;AADhD,KAd2pC,CAAnqC,GAjoIsGtpL,mEAioItG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAjoIsGA,QAAAA,iEAmpI9F,MAlBR;AAjoIsGA,QAAAA,6DA8pI9F,4BA7BR;AAjoIsGA,QAAAA,yDA2qI1F;AAAA,iBAAc,0BAAd;AAAA;AAAA,iBACe,2BADf;AAAA;AAAA,iBAEU,gBAFV;AAAA;AAAA,iBAGW,iBAHX;AAAA,UA1CZ;AAjoIsGA,QAAAA,2DA+qI7F,EA9CT;AAjoIsGA,QAAAA,yDAgrI9F,uDA/CR;AAjoIsGA,QAAAA,6DA6rI9F,mBA5DR;AAjoIsGA,QAAAA,wDAwsI1F,cAvEZ;AAjoIsGA,QAAAA,2DAysI9F,EAxER;AAjoIsGA,QAAAA,yDA0sI9F,6EA1sI8FA,qEA0sI9F,CAzER;AAjoIsGA,QAAAA,yDAsvI9F,qEArHR;AAjoIsGA,QAAAA,iEAyvI9F,aAxHR;AAAA;;AAAA;AAjoIsGA,QAAAA,wDA+pI1F,GA9BZ;AAjoIsGA,QAAAA,yDA+pI1F,kVA9BZ;AAjoIsGA,QAAAA,wDAirIzF,GAhDb;AAjoIsGA,QAAAA,yDAirIzF,0HAhDb;AAjoIsGA,QAAAA,wDAksI1F,GAjEZ;AAjoIsGA,QAAAA,yDAksI1F,kEAlsI0FA,8DAksI1F,oCAjEZ;AAjoIsGA,QAAAA,0DAmsI1F,kDAlEZ;AAjoIsGA,QAAAA,wDAwsIvD,GAvE/C;AAjoIsGA,QAAAA,yDAwsIvD,8BAvE/C;AAjoIsGA,QAAAA,wDAsvIjF,GArHrB;AAjoIsGA,QAAAA,yDAsvIjF,oBArHrB;AAAA;AAAA;AAAA,iBAyH0Cq+K,kBAzH1C,EAyH6V7wD,aAzH7V,EAyHwqButD,kFAzHxqB,EAyHuyBpY,0BAzHvyB,EAyHgpC2Y,kDAzHhpC,EAyHkuCP,0FAzHluC,EAyHu2CO,qDAzHv2C,EAyHm7ChuD,wBAzHn7C;AAAA;AAAA;SA3qCMg8D;;;AAqyCN;AAAA;AAAA;AA+PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMgE;MAAAA,mOACF,gCAAYr6J,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELq6J,EAAAA,sBAAsB,CAACljJ,IAAvB;AAAA,qBAAoHkjJ,sBAApH,EA5hJsGttL,gEA4hJtG,CAA4JA,uDAA5J;AAAA;;AACAstL,EAAAA,sBAAsB,CAAC1iJ,IAAvB,kBA7hJsG5qC,gEA6hJtG;AAAA,UAAwGstL,sBAAxG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;;;IACMC;MAAAA;AACF,kCAAY76K,OAAZ,EAAqBw0C,IAArB,EAA2B;AAAA;;AACvB,WAAKx0C,OAAL,GAAeA,OAAf;AACA,WAAKw0C,IAAL,GAAYA,IAAZ;AACH;;;;aACD,uBAAc;AAAA;;AACV,YAAI,KAAKvvB,OAAT,EAAkB;AACd,eAAK61J,QAAL,CAAc;AAAA,mBAAM,OAAI,CAAC96K,OAAL,CAAaT,aAAb,CAA2BiwC,KAA3B,EAAN;AAAA,WAAd;AACH;AACJ;;;aACD,kBAASnR,EAAT,EAAa;AACT,aAAKmW,IAAL,CAAUrS,iBAAV,CAA4B;AAAA,iBAAMhrC,UAAU,CAACknC,EAAD,CAAhB;AAAA,SAA5B;AACH;;;;;;AAELw8I,EAAAA,oBAAoB,CAACnjJ,IAArB;AAAA,qBAAkHmjJ,oBAAlH,EAtjJsGvtL,gEAsjJtG,CAAwJA,sDAAxJ,GAtjJsGA,gEAsjJtG,CAAkLA,kDAAlL;AAAA;;AACAutL,EAAAA,oBAAoB,CAAC3iJ,IAArB,kBAvjJsG5qC,gEAujJtG;AAAA,UAAsGutL,oBAAtG;AAAA;AAAA;AAAA;AAAA;AAAA,eAvjJsGvtL,mEAujJtG;AAAA;SAfMutL;;;AAgBN;AAAA;AAAA;AAUA;AACA;AACA;;;AACA,IAAME,2BAA2B,GAAG;AAChCnqL,EAAAA,KAAK,EAAE,IADyB;AAEhCF,EAAAA,OAAO,EAAEguB,8DAFuB;AAGhCgf,EAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,WAAMy9J,qBAAN;AAAA,GAAD;AAHS,CAApC;AAKA,IAAMC,cAAc,GAAG,QAAvB;AACA,IAAMC,iBAAiB,GAAG,QAA1B;AACA,IAAMC,mBAAmB,GAAG,OAA5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMH;MAAAA;AACF,mCAAY59D,OAAZ,EAAqB3H,YAArB,EAAmCwJ,YAAnC,EAAiDyoB,gBAAjD,EAAmE7qB,iBAAnE,EAAsF8xD,oBAAtF,EAA4GH,WAA5G,EAAyHx6G,KAAzH,EAAgI5hE,QAAhI,EAA0IC,GAA1I,EAA+I0/H,YAA/I,EAA6J;AAAA;;AACzJ,WAAK3U,OAAL,GAAeA,OAAf;AACA,WAAK3H,YAAL,GAAoBA,YAApB;AACA,WAAKwJ,YAAL,GAAoBA,YAApB;AACA,WAAKyoB,gBAAL,GAAwBA,gBAAxB;AACA,WAAK7qB,iBAAL,GAAyBA,iBAAzB;AACA,WAAK8xD,oBAAL,GAA4BA,oBAA5B;AACA,WAAKH,WAAL,GAAmBA,WAAnB;AACA,WAAKx6G,KAAL,GAAaA,KAAb;AACA,WAAK5hE,QAAL,GAAgBA,QAAhB;AACA,WAAKC,GAAL,GAAWA,GAAX;AACA,WAAK0/H,YAAL,GAAoBA,YAApB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAK45B,UAAL,GAAkB,GAAlB;AACA;AACR;AACA;;AACQ,WAAK5mI,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAKkjJ,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;;AACQ,WAAKxI,UAAL,GAAkB,IAAlB;AACA;AACR;AACA;;AACQ,WAAKnrJ,KAAL,GAAa,GAAb;AACA;AACR;AACA;;AACQ,WAAK+I,QAAL,GAAgB,CAAhB;AACA;AACR;AACA;;AACQ,WAAK6/G,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK+yK,YAAL,GAAoB,IAAI/yK,wDAAJ,EAApB;AACA;AACR;AACA;AACA;;AACQ,WAAKg3K,eAAL,GAAuB,IAAIh3K,wDAAJ,EAAvB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK6B,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;;AACQ,WAAKkhB,MAAL,GAAc,IAAIlhB,wDAAJ,EAAd;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAK07C,MAAL,GAAc,IAAI17C,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA,WAAKwwJ,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;;AACQ,WAAKzR,WAAL,eAAwB9sC,IAAI,EAA5B;AACA,WAAKtsG,IAAL,GAAY,SAAZ;AACA,WAAK6nK,YAAL,GAAoB,EAApB;AACA,WAAKyF,SAAL,GAAiBhhE,IAAI,EAArB;AACA,WAAKihE,YAAL,GAAoBjhE,IAAI,EAAxB;AACA,WAAKolE,UAAL,GAAkB,EAAlB;AACA,WAAKp6D,UAAL,GAAkB,KAAlB;;AACA,WAAKm2D,iBAAL,GAAyB,UAAC//K,CAAD,EAAO,CAAG,CAAnC;;AACA,WAAK8/K,gBAAL,GAAwB,UAAC9/K,CAAD,EAAO,CAAG,CAAlC;;AACA,WAAK42K,IAAL,GAAY,EAAZ;AACA,WAAKn0H,IAAL,GAAY,EAAZ;AACA,WAAKolI,aAAL,GAAqB,IAAIl7K,wDAAJ,EAArB;AACA,WAAKm7K,aAAL,GAAqB,IAAIn7K,wDAAJ,EAArB;AACA,WAAKo7K,kBAAL,GAA0B,IAAIp7K,wDAAJ,EAA1B;AACA,WAAKq7K,kBAAL,GAA0B,IAAIr7K,wDAAJ,EAA1B;AACA,WAAKs7K,qBAAL,GAA6B,IAAIhpE,+CAAJ,EAA7B;AACA,WAAK7wG,KAAL,GAAa,KAAb;AACA,WAAKq7G,cAAL,GAAsB;AAAE9iH,QAAAA,OAAO,EAAE;AAAX,OAAtB;AACA,WAAK47G,KAAL,GAAa,QAAb;AACA,WAAKC,QAAL,GAAgB,QAAhB;AACA,WAAKC,SAAL,GAAiB,OAAjB;AACAvD,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAKlvE,SAAL,GAAiB4xE,YAAY,CAACW,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;AACA,WAAK5qH,IAAL,GAAY,EAAZ;AACA,WAAKmvH,eAAL;AACA,WAAK84D,oBAAL;AACA,WAAKgI,oBAAL;AACA,WAAKlI,qBAAL,GAA6B,KAAKmI,WAAL,CAAiBrkL,IAAjB,CAAsB,IAAtB,CAA7B;AACH;;;;WACD,eAAY;AACR,YAAMskL,YAAY,GAAG5pE,oFAAmB,KAAK,KAAKqL,OAAL,CAAa79G,aAAb,CAA2BtB,WAAhC,GAA8C,CAAtF;AACA,YAAMD,KAAK,GAAG,KAAKqiH,aAAL,CAAmBriH,KAAnB,IAA4B29K,YAA1C;AACA,YAAM30F,QAAQ,GAAG5wD,KAAK,CAACulJ,YAAD,CAAL,GAAsBA,YAAtB,aAAwCA,YAAxC,OAAjB;AACA,YAAMxc,QAAQ,GAAG/oI,KAAK,CAACp4B,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAjB;AACA,eAAO;AAAEg4B,UAAAA,GAAG,EAAEgxD,QAAP;AAAiBjxD,UAAAA,GAAG,EAAEopI;AAAtB,SAAP;AACH;;;WACD,eAAa;AACT,YAAMyU,WAAW,GAAG,KAAKvzD,aAAL,CAAmB9lH,MAAvC;AACA,eAAO+4G,SAAS,CAACsgE,WAAD,CAAT,aAA4BA,WAA5B,UAA8C,MAArD;AACH;;;WACD,eAAqB;AACjB,YAAI,KAAK7uJ,QAAT,EAAmB;AACf,iBAAO5J,SAAP;AACH;;AACD,YAAMygK,gBAAgB,GAAG7kD,MAAM,CAAC,KAAKvhF,QAAN,CAA/B;AACA,YAAMqmI,eAAe,GAAG,CAAxB;AACA,eAAO,CAACzlJ,KAAK,CAACwlJ,gBAAD,CAAN,GAA2BA,gBAA3B,GAA8CC,eAArD;AACH;;;WACD,eAAmB;AACf,eAAO,KAAKj7K,MAAZ;AACH;;;WACD,eAAe;AACX,YAAI,CAAC,KAAKA,MAAV,EAAkB;AACd;AACH;;AACD,eAAO,KAAKuyK,SAAZ;AACH;;;WACD,eAA2B;AACvB,YAAI,CAAC7/D,SAAS,CAAC,KAAK4H,QAAN,CAAV,IAA6B,CAAC,KAAKt6G,MAAvC,EAA+C;AAC3C;AACH;;AACD,eAAO,KAAKwyK,YAAL,GAAoB,GAApB,GAA0B3mB,MAAM,CAAC,KAAKvxC,QAAN,EAAgB,KAAKquD,UAArB,CAAvC;AACH;;;WACD,eAAkB;AACd,YAAI,KAAKiF,WAAL,CAAiBN,UAAjB,KAAgC,CAApC,EAAuC;AACnC,iBAAO,KAAKkG,UAAL,CAAgB,YAAhB,CAAP;AACH;AACJ;;;WACD,eAAe;AACX,YAAQn5F,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WAQI,eAAW;AACP,YAAMi1F,OAAO,GAAG,KAAKA,OAArB;;AACA,YAAIA,OAAJ,EAAa;AACT,cAAM3nI,KAAK,GAAG2nI,OAAO,CAAChlE,IAAR,IAAgB,CAA9B;AACA,cAAM1iE,GAAG,GAAGD,KAAK,GAAG2nI,OAAO,CAACl9J,QAA5B,CAFS,CAGT;;AACAk9J,UAAAA,OAAO,CAAC31C,KAAR,GAAgB,KAAKi0C,WAAL,CAAiBhjL,IAAjB,CAAsBuX,MAAtC;AACA,iBAAO,KAAKyrK,WAAL,CAAiBhjL,IAAjB,CAAsByc,KAAtB,CAA4BsgC,KAA5B,EAAmCC,GAAnC,CAAP;AACH;;AACD,eAAO,KAAKgmI,WAAL,CAAiBhjL,IAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;WAxBI,aAASA,IAAT,EAAe;AACX,aAAKgjL,WAAL,CAAiBhjL,IAAjB,GAAwBA,IAAI,IAAI,EAAhC;;AACA,YAAI,KAAK0kL,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,aAAKysE,QAAL;AACH;;;WA2BD,eAAY;AACR,eAAO,KAAKx4I,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAUk1E,QAAV,EAAoB;AAChB,YAAI,CAACf,SAAS,CAACe,QAAD,CAAd,EAA0B;AACtB,eAAK+kE,iBAAL,GAAyBj+J,SAAzB;AACH;;AACD,aAAKgkB,MAAL,GAAck1E,QAAd;AACA,aAAKsjE,QAAL;AACA,aAAKtlL,GAAL,CAASS,YAAT;AACH;;;WAiBD,eAAoB;AAChB,eAAO,KAAKkqH,cAAZ;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc;AAAElQ,UAAAA,OAAO,EAAE;AAAX,SAAd,EAAiCwlH,QAAjC,CAAtB;AACH;;;WAQD,aAAiBrhF,EAAjB,EAAqB;AACjB,YAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;AAC1B,gBAAM,IAAIhsB,KAAJ,yDAA2D5F,IAAI,CAACC,SAAL,CAAe2xB,EAAf,CAA3D,OAAN;AACH;;AACD,aAAKswI,oBAAL,CAA0BF,YAA1B,GAAyCpwI,EAAzC;AACH;AACD;AACJ;AACA;;;;WAII,eAAc;AACV,eAAO,KAAKg2I,gBAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;WAVI,aAAY30D,QAAZ,EAAsB;AAClB,aAAK20D,gBAAL,GAAwBhF,+BAA+B,CAAC3vD,QAAD,CAAvD;AACH;;;WAYD,eAAqB;AACjB,YAAI,CAACpM,SAAS,CAAC,KAAKukE,eAAN,CAAd,EAAsC;AAClC,iBAAO,CAACvkE,SAAS,CAAC,KAAKi2D,UAAN,CAAjB;AACH;;AACD,eAAO,KAAKsO,eAAZ;AACH;AACD;AACJ;AACA;;WAXI,aAAmBlqF,WAAnB,EAAgC;AAC5B,aAAKkqF,eAAL,GAAuBlqF,WAAvB;AACH;;;WAaD,eAAe;AACX,eAAO,KAAKvlE,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAfI,aAAaotB,QAAb,EAAuB;AACnB,aAAKptB,QAAL,GAAgBotB,QAAhB;AACH;;;WAsBD,eAAW;AACP,eAAO,KAAKsgE,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WArBI,aAASjgH,IAAT,EAAe;AACX,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAUolL,cAA9B;AACA,aAAK7oL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAAlE;;AACA,YAAIA,IAAI,KAAK,MAAb,EAAqB;AACjB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,QAAD,EAAW3gB,OAAX,CAA/D;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAaokE,iBAAvC;AACA,aAAK9oL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAArE;;AACA,YAAIA,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAACzgB,UAAD,CAAlE;AACH;;AACD,aAAKhB,QAAL,GAAgBe,OAAhB;AACH;;;WAsBD,eAAe;AACX,eAAO,KAAKd,SAAZ;AACH;AACD;AACJ;AACA;;WAbI,aAAatB,QAAb,EAAuB;AACnB,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAcymE,mBAA1C;AACA,aAAK/oL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAAtE;;AACA,YAAIA,QAAQ,KAAK,MAAjB,EAAyB;AACrB,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,QAAD,EAAWzgB,WAAX,CAAnE;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;aAOD,uBAAc/pH,KAAd,EAAqB;AACjB,YAAIA,KAAK,CAAC2J,MAAN,KAAiB,KAAKwmH,OAAL,CAAa79G,aAAlC,EAAiD;AAC7C;AACH;;AACDtS,QAAAA,KAAK,CAACunL,wBAAN;AACA,aAAK+G,kBAAL,CAAwBz0K,IAAxB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkB;AACd,aAAKu0K,aAAL,CAAmBv0K,IAAnB;AACH;AACD;AACJ;AACA;;;;aACI,wBAAe7Z,KAAf,EAAsB;AAAA;;AAClB,YAAIA,KAAK,CAAC2J,MAAN,KAAiB,KAAKwmH,OAAL,CAAa79G,aAAlC,EAAiD;AAC7C;AACH;;AACDtS,QAAAA,KAAK,CAACunL,wBAAN;AACA,aAAK8G,kBAAL,CAAwBx0K,IAAxB;;AACA,YAAI,CAAC,KAAKo3B,SAAV,EAAqB;AACjB,eAAKA,SAAL,GAAiB,IAAjB;;AACA,cAAIg0E,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,iBAAK0V,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,qBAAI,CAACub,OAAL,CAAax3C,IAAb;AACH,aAFD;AAGH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW;AACP,YAAI,KAAKnF,KAAT,EAAgB;AACZ,cAAM+yK,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,6BAAqB,KAAKviH,KAA1B;AAAA,cAAQg4B,GAAR,gBAAQA,GAAR;AAAA,cAAaD,GAAb,gBAAaA,GAAb;AACA2+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACH;AACJ;;;WACD,eAAiB;AACb,eAAO,KAAKhR,QAAZ;AACH;;;WACD,eAAgB;AACZ,eAAO,KAAKy2D,OAAZ;AACH;;;WACD,eAAU;AACN,eAAO,KAAK33C,SAAZ;AACH;;;WACD,eAAmB;AACf,eAAO,KAAKi4I,cAAZ;AACH;;;WACD,eAAiB;AACb,eAAO,KAAKhsJ,QAAZ;AACH;;;WACD,eAAqB;AACjB,eAAO,KAAKisJ,YAAZ;AACH;;;WACD,eAAmB;AACf,eAAO,KAAKC,QAAZ;AACH;;;WACD,eAA+B;AAC3B,eAAO,KAAKC,oBAAZ;AACH;;;WACD,eAAsB;AAClB,eAAO,KAAKC,WAAZ;AACH;AACD;AACJ;AACA;;;;aACI,iBAAQjvL,KAAR,EAAe;AACX,YAAMitH,UAAU,GAAG5G,SAAS,CAAC,KAAK22D,WAAN,CAAT,GAA8B,CAAC,CAA/B,GAAmC,CAAtD;AACA,YAAIhlJ,OAAO,GAAGmR,KAAK,CAAC,KAAKsxG,gBAAL,CAAsBziH,OAAvB,CAAL,GAAuC,KAAK6pJ,mBAAL,CAAyB50D,UAAzB,CAAvC,GAA8E,KAAKwtB,gBAAL,CAAsBziH,OAAlH;AACA,YAAI+xB,MAAM,GAAG,CAAb;;AACA,YAAI,KAAKjyB,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,YAAMqsJ,SAAS,GAAGlvL,KAAK,CAAC+9F,OAAN,KAAkBgnB,sEAAlB,IAA+B/kH,KAAK,CAAC+9F,OAAN,KAAkBgnB,qEAAnE;AACA,YAAMoqE,eAAe,GAAG,KAAKpJ,UAAL,IAAmB,KAAK90I,SAAxB,IAAqC,KAAKt9B,MAAlE;;AACA,YAAIw7K,eAAe,IAAID,SAAvB,EAAkC;AAC9B;AACH;;AACD,YAAMtC,WAAW,GAAGvmE,SAAS,CAAC,KAAKo0B,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAAD,CAA7B;AACA,YAAMw3J,sBAAsB,GAAG/oE,SAAS,CAAC,KAAKo0B,gBAAL,CAAsBziH,OAAvB,CAAT,IAA4C,CAAC,KAAKyiH,gBAAL,CAAsBjO,UAAtB,CAAiC,KAAKiO,gBAAL,CAAsBziH,OAAvD,CAA5E;;AACA,YAAI,CAAC40J,WAAD,IAAgBwC,sBAApB,EAA4C;AACxC,cAAIpvL,KAAK,CAAC+9F,OAAN,KAAkBgnB,2EAAlB,IAAoC/kH,KAAK,CAAC+9F,OAAN,KAAkBgnB,4EAA1D,EAA2E;AACvEh7D,YAAAA,MAAM,GAAG,CAAC,CAAV;AACH,WAFD,MAGK,IAAI/pD,KAAK,CAAC+9F,OAAN,KAAkBgnB,yEAAlB,IAAkC/kH,KAAK,CAAC+9F,OAAN,KAAkBgnB,2EAAxD,EAAwE;AACzEh7D,YAAAA,MAAM,GAAG,CAAT;AACH;AACJ;;AACD,YAAMqnE,SAAS,GAAGpxH,KAAlB;AACA,YAAMo3G,MAAM,GAAG,KAAKwY,iBAAL,CAAuByB,OAAvB,CAA+B;AAC1Ch8E,UAAAA,OAAO,EAAErd,OAAO,GAAG+xB,MADuB;AAE1CjhB,UAAAA,GAAG,EAAE,KAAKy4I,WAAL,CAAiBN,UAAjB,GAA8B,CAFO;AAG1Cl4I,UAAAA,GAAG,EAAE,KAAKi0I,WAAL,GAAmB,CAAC,CAApB,GAAwB,CAHa;AAI1CxnD,UAAAA,aAAa,EAAEpE;AAJ2B,SAA/B,CAAf;AAMA,YAAMi+D,aAAa,GAAIj4E,MAAM,KAAKoX,gBAAgB,CAACsc,IAA7B,IAAuC1zB,MAAM,KAAKoX,gBAAgB,CAACwc,KAAzF;;AACA,YAAI5zB,MAAM,KAAKoX,gBAAgB,CAACQ,SAA5B,IACA5X,MAAM,KAAKoX,gBAAgB,CAAC5lE,GAD5B,IAEAwuD,MAAM,KAAKoX,gBAAgB,CAACt5B,SAF5B,IAGAkiB,MAAM,KAAKoX,gBAAgB,CAACixD,MAH5B,IAIA,EAAE4P,aAAa,IAAI,KAAKtJ,UAAxB,CAJA,IAKA3uE,MAAM,KAAKoX,gBAAgB,CAAC5pE,KALhC,CAKsC;AALtC,UAME;AACEwsE,UAAAA,SAAS,CAACl9G,cAAV;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,kBAASlU,KAAT,EAAgB;AACZ,YAAI,KAAK83B,QAAL,IAAiB,KAAK+K,QAAtB,IAAkC,KAAKkjJ,UAA3C,EAAuD;AACnD;AACH;;AACD,aAAKuJ,UAAL,CAAgBtvL,KAAhB;AACH;AACD;AACJ;AACA;;;;aACI,eAAMA,KAAN,EAAa;AACTA,QAAAA,KAAK,CAACkU,cAAN;AACA,aAAKquC,KAAL;AACA,aAAKs1G,WAAL,CAAiB,CAAC,KAAKlkJ,MAAvB;AACH;;;WAKD,eAAgB;AACZ,eAAO,KAAKu8G,UAAZ;AACH;WAND,aAAcj/E,SAAd,EAAyB;AACrB,aAAK9rC,QAAL,CAAc8rC,SAAS,GAAG,UAAH,GAAgB,aAAvC,EAAsD,KAAKk/E,OAAL,CAAa79G,aAAnE,EAAkF,SAAlF;AACA,aAAK49G,UAAL,GAAkBj/E,SAAlB;AACH;;;aAID,oBAAW;AAAA;;AACP,aAAK9rC,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAL,CAAa79G,aAA3C,EAA0D,UAA1D;AACA,aAAKi9K,+BAAL,GAAuC,KAAK/mE,YAAL,CAClCv5G,OADkC,CAC1BhP,SAD0B,CAChB,iBAAa;AAAA,cAAVkpH,GAAU,SAAVA,GAAU;AAChC,iBAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA/B;;AACA,iBAAI,CAAC/jH,GAAL,CAASoC,aAAT;AACH,SAJsC,CAAvC;AAKA,aAAKgoL,qBAAL;AACA,aAAKv7B,mBAAL;AACH;AACD;AACJ;AACA;AACA;;;;aACI,mBAAU;AACN,YAAMtjJ,KAAK,GAAG,KAAKA,KAAnB;AACA,eAAO,EAAEA,KAAK,KAAK,CAAV,IAAeA,KAAK,KAAK,KAAzB,IAAkCA,KAAlC,IAA2C,KAAKqsK,WAAlD,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgB;AACZ,aAAKmR,aAAL,CAAmBt0K,IAAnB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,aAAK65G,YAAL;AACA,aAAK2zD,iBAAL;;AACA,YAAI,KAAKkI,+BAAT,EAA0C;AACtC,eAAKA,+BAAL,CAAqCnvL,WAArC;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,qBAAY6O,OAAZ,EAAqB;AACjB,YAAMg0K,OAAO,GAAG,KAAKA,OAArB;AACA,YAAMqE,kBAAkB,GAAGrE,OAAO,IAAIh0K,OAAO,CAAC1Q,IAAnB,IAA2B0Q,OAAO,CAAC1Q,IAAR,CAAagjE,aAAb,EAAtD;;AACA,YAAI+lH,kBAAJ,EAAwB;AACpB,eAAK93G,UAAL,CAAgB;AAAEyuC,YAAAA,IAAI,EAAE,CAAR;AAAWhsF,YAAAA,IAAI,EAAEgxJ,OAAO,CAACl9J;AAAzB,WAAhB;AACH;;AACD,YAAIi/F,0EAAS,CAAC,aAAD,EAAgB/1G,OAAhB,EAAyB,KAAzB,CAAb,EAA8C;AAC1C,eAAKyyK,oBAAL,CAA0B1E,WAA1B,GAAwC,KAAKA,WAA7C;AACH;;AACD,YAAIhgD,2EAAU,CAAC,CAAC,WAAD,EAAc,YAAd,EAA4B,gBAA5B,EAA8C,aAA9C,EAA6D,cAA7D,CAAD,EAA+E/tH,OAA/E,EAAwF,KAAxF,CAAd,EAA8G;AAC1G,eAAKy7K,QAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iCAAwB;AACpB,aAAK19D,cAAL;AACH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,qBAAY/wF,KAAZ,EAAmB;AACf,YAAMwzJ,QAAQ,GAAGppE,SAAS,CAAC,KAAK22D,WAAN,CAAT,GAA8B,CAAC,CAA/B,GAAmC,CAApD;AACA,YAAMl2C,SAAS,GAAG2oD,QAAQ,IAAIxzJ,KAAZ,IAAqBA,KAAK,GAAG,KAAK19B,IAAL,CAAUuX,MAAzD;;AACA,YAAIuwG,SAAS,CAACpqF,KAAD,CAAT,IAAoB6qG,SAApB,IAAiC,CAAC,KAAK46C,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAtC,EAAwF;AACpF,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4BtmB,KAA5B;AACH,SAFD,MAGK;AACD,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4B,IAA5B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAKq4F,OAAL,CAAa79G,aAAb,CAA2BiwC,KAA3B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAKq4F,OAAL,CAAa79G,aAAb,CAA2B+sF,IAA3B;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,gBAAOvqF,IAAP,EAAa;AAAA;;AACT;AACA;AACA1G,QAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B,YAAM;AAC7B,cAAM07H,UAAU,GAAGrT,SAAS,CAACvxG,IAAD,CAAT,GAAkBA,IAAlB,GAAyB,CAAC,OAAI,CAACJ,KAAlD;;AACA,iBAAI,CAACg+G,OAAL,CAAagH,UAAb;AACH,SAHD;AAIH;;;aACD,iBAAQ5kH,IAAR,EAAc;AACV,aAAKJ,KAAL,GAAaI,IAAb;AACA,aAAK4+G,YAAL;;AACA,YAAI,KAAKh/G,KAAT,EAAgB;AACZ,eAAKm/G,WAAL;AACH;AACJ;;;aACD,4BAAmB/+G,IAAnB,EAAyB;AACrB,YAAMq4G,SAAS,GAAG,IAAIjB,gBAAJ,EAAlB;;AACA,YAAIp3G,IAAJ,EAAU;AACN,eAAKA,IAAL,CAAU+E,IAAV,CAAeszG,SAAf;AACH,SAFD,MAGK;AACD,eAAKt8G,KAAL,CAAWgJ,IAAX,CAAgBszG,SAAhB;AACH;;AACD,eAAOA,SAAS,CAACC,kBAAV,EAAP;AACH;AACD;AACJ;AACA;;;;aACI,qBAAYt4G,IAAZ,EAAkB;AACd,YAAMu8B,UAAU,GAAG,KAAKvZ,QAAL,IAAiB,KAAK+K,QAAzC;AACA,YAAMokJ,SAAS,GAAG,KAAKtzK,MAAL,KAAgBmB,IAAlC;;AACA,YAAIu8B,UAAU,IAAI41I,SAAlB,EAA6B;AACzB;AACH;;AACD,YAAM75D,kBAAkB,GAAG,KAAK85D,kBAAL,CAAwBpyK,IAAxB,CAA3B;;AACA,YAAI,CAACs4G,kBAAL,EAAyB;AACrB,cAAI,CAACt4G,IAAD,IAAS,KAAKixK,UAAd,IAA4B,KAAK90I,SAArC,EAAgD;AAC5C,iBAAKsR,KAAL;AACH;;AACD,eAAKmwE,OAAL,CAAa59G,IAAb;AACH;AACJ;AACD;AACJ;AACA;;;;WACI,eAAa;AACT,eAAO,KAAKJ,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAK/D,KAAL,GAAaud,SAAb;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWzS,GAAX,EAAgB;AACZ,eAAO,KAAK+sG,YAAL,CAAkBnsG,GAAlB,CAAsBZ,GAAtB,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW9K,KAAX,EAAkB;AACd,aAAKA,KAAL,GAAaA,KAAK,KAAK,IAAV,GAAiBud,SAAjB,GAA6Bvd,KAA1C;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKg1I,gBAAL,GAAwBh1I,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKi1I,iBAAL,GAAyBj1I,EAAzB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,UAAjB,EAA6B;AACzB,aAAKvZ,QAAL,GAAgBuZ,UAAhB;AACH;AACD;AACJ;AACA;;;;WACI,eAAoB;AAChB,eAAO,KAAKk9C,OAAL,GAAe,kCAAf,GAAoD,KAAK4/B,SAAL,IAAkB,aAA7E;AACH;AACD;AACJ;AACA;;;;WACI,eAA0B;AACtB,yBAAU,KAAKvlH,IAAL,GAAY0hI,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAAxB,GAAgD,EAA1D,cAAgE,KAAK6+G,QAAL,GAAgB,cAAc,KAAKA,QAAnC,GAA8C,EAA9G,cAAoH,KAAKA,QAAL,GAAgB,cAAc,KAAKA,QAAnB,GAA8B,OAA9C,GAAwD,EAA5K;AACH;AACD;AACJ;AACA;;;;WACI,eAAyB;AACrB,yBAAU,KAAK7+G,IAAL,GAAY0hI,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAxB,GAA+C,EAAzD,cAA+D,KAAK6+G,QAAL,GAAgB,aAAa,KAAKA,QAAlC,GAA6C,EAA5G,cAAkH,KAAKoC,OAAL,GAAe0gB,eAAe,CAAC,KAAK1gB,OAAN,CAA9B,GAA+C,EAAjK;AACH;AACD;AACJ;AACA;;;;WACI,eAA2B;AACvB,yBAAU,KAAKjhH,IAAL,GAAY0hI,YAAY,CAAC,MAAD,EAAS,KAAK1hI,IAAd,CAAxB,GAA8C,EAAxD;AACH;AACD;AACJ;AACA;;;;WACI,eAA2B;AACvB,YAAMg+K,gBAAgB,GAAG,CAAC,kBAAD,EAAqB,SAArB,CAAzB;;AACA,YAAI,KAAKxzD,aAAL,CAAmBpD,UAAvB,EAAmC;AAC/B42D,UAAAA,gBAAgB,CAAChxK,IAAjB,CAAsB,KAAKw9G,aAAL,CAAmBpD,UAAzC;AACH;;AACD,eAAO42D,gBAAP;AACH;AACD;AACJ;AACA;;;;WACI,eAA4B;AACxB,eAAO,KAAKlF,oBAAL,CAA0BgO,cAA1B,CAAyC,KAAK1S,WAA9C,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,mBAAU;AACN,eAAO,KAAKhkK,IAAZ;AACH;AACD;AACJ;AACA;;;;aACI,8BAAqB;AACjB,eAAOwmJ,MAAM,CAAC,KAAKwd,WAAN,EAAmB,KAAK9uD,SAAxB,CAAb;AACH;;;aACD,uBAAc;AAAA;;AACV,YAAI,KAAK+0D,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,YAAMyqE,eAAe,GAAG,KAAK9xI,SAAL,KAAmB,KAAnB,GAA2B,OAA3B,GAAqC,MAA7D;AACA,YAAM+xI,cAAc,GAAG;AAAEn1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAvB;AACA,YAAMm1D,aAAa,GAAG;AAAEp1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAtB;AACA,aAAKR,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,UAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnC2D,UAAAA,WAAW,EAAE60D,cAFsB;AAGnC17K,UAAAA,OAAO,EAAE,KAAKmmH,aAAL,CAAmBnmH,OAHO;AAInC+gF,UAAAA,QAAQ,EAAE,KAAKA,QAJoB;AAKnC9pB,UAAAA,OAAO,EAAE,KAAK6vD,aALqB;AAMnCV,UAAAA,UAAU,EAAEu1D,aANuB;AAOnC54D,UAAAA,UAAU,EAAE,KAAK64D,oBAPkB;AAQnC9vD,UAAAA,YAAY,EAAE;AARqB,SAAvB,CAAhB;AAUA,YAAM0uD,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,2BAAqB,KAAKviH,KAA1B;AAAA,YAAQg4B,GAAR,gBAAQA,GAAR;AAAA,YAAaD,GAAb,gBAAaA,GAAb;AACA2+I,QAAAA,YAAY,CAACqB,gBAAb,CAA8B,WAA9B,EAA2C,KAAKxC,qBAAhD;AACAmB,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmBI,MAAnB,GAA4B,KAAKA,MAAjC;AACAm6K,QAAAA,YAAY,CAACx/K,YAAb,CAA0B,KAA1B,EAAiC,KAAK2uC,SAAtC;AACA,aAAKq8E,QAAL,CAAcgB,SAAd,CAAwBh0H,SAAxB,CAAkC,YAAM;AACpC,iBAAI,CAACmF,GAAL,CAASoC,aAAT;;AACA,iBAAI,CAACuhL,WAAL,CAAiBhG,YAAjB,CAA8B,OAAI,CAACtoC,gBAAL,CAAsBziH,OAApD;;AACA,iBAAI,CAAC7D,MAAL,CAAYta,IAAZ;AACH,SAJD;AAKA,aAAKo5G,QAAL,CAAc+1D,UAAd,CAAyB/oL,SAAzB,CAAmC,YAAM;AACrC,iBAAI,CAAC0uD,MAAL,CAAY90C,IAAZ;AACH,SAFD;;AAGA,YAAI,CAAC,KAAKksK,UAAV,EAAsB;AAClB,eAAK9yD,QAAL,CAAce,wBAAd,CAAuC/zH,SAAvC,CAAiD;AAAA,mBAAM,OAAI,CAAC43J,WAAL,CAAiB,KAAjB,CAAN;AAAA,WAAjD;AACH;AACJ;;;aACD,wBAAe;AACX,YAAI,KAAK5kC,QAAT,EAAmB;AACf,eAAKA,QAAL,CAAcK,YAAd,CACK21D,mBADL,CACyB,WADzB,EACsC,KAAK3C,qBAD3C;AAEA,eAAKrzD,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;AACH;AACJ;;;aACD,4BAA2C;AAAA,YAA7BhF,QAA6B,SAA7BA,QAA6B;AAAA,kCAAnBy+D,OAAmB;AAAA,YAAnBA,OAAmB,8BAAT,KAAS;AACvC,aAAKz+D,QAAL,GAAgBA,QAAhB;AACA,aAAKj1G,IAAL,GAAYwmJ,MAAM,CAACvxC,QAAD,EAAW,KAAKC,SAAhB,CAAlB;;AACA,YAAIw+D,OAAJ,EAAa;AACT,eAAKP,iBAAL,GAAyBl+D,QAAzB;AACH;AACJ;;;aACD,sBAAa;AACT,aAAKj1G,IAAL,GAAYkV,SAAZ;AACA,aAAK+/F,QAAL,GAAgB//F,SAAhB;AACH;;;aACD,wBAAe+N,KAAf,EAAsB;AAClB,YAAM7iB,KAAK,GAAG,CAACitG,SAAS,CAACpqF,KAAD,CAAxB;AACA,aAAKw+G,gBAAL,CAAsBgsC,cAAtB,CAAqCrtK,KAAK,GAAG,EAAH,GAAQ,CAAC6iB,KAAD,CAAlD;AACA,aAAKw+G,gBAAL,CAAsBziH,OAAtB,GAAgC5e,KAAK,GAAG,KAAKyoK,mBAAL,CAAyB,CAAzB,CAAH,GAAiC5lJ,KAAtE;AACH;;;aACD,kCAAgC;AAAA,YAAZgyF,QAAY,SAAZA,QAAY;AAC5B,aAAK69D,WAAL,CAAiB;AAAE79D,UAAAA,QAAQ,EAARA;AAAF,SAAjB;AACA,aAAKg8D,eAAL,CAAqBpwK,IAArB,CAA0Bo0G,QAA1B,EAF4B,CAG5B;AACA;;AACA,aAAKuhE,qBAAL;AACH;;;aACD,2BAAkB;AAAA;;AACd,YAAI,CAAC1qE,oFAAmB,EAAxB,EAA4B;AACxB;AACH,SAHa,CAId;;;AACA,aAAKypE,qBAAL,CAA2Bh8I,GAA3B,CAA+B,KAAKkoG,gBAAL,CAAsBylC,QAAtB,CAA+BngL,IAA/B,CAAoCP,uDAAM,CAAC,UAAA8G,CAAC;AAAA,iBAAI,OAAI,CAACqN,MAAT;AAAA,SAAF,CAA1C,EAA8DxE,oDAAG,CAAC,KAAKwgL,aAAL,CAAmBvlL,IAAnB,CAAwB,IAAxB,CAAD,CAAjE,EAC1BnK,SAD0B,CAChB,KAAK2vL,iBAAL,CAAuBxlL,IAAvB,CAA4B,IAA5B,CADgB,CAA/B,EALc,CAOd;;AACA,aAAKmkL,qBAAL,CAA2Bh8I,GAA3B,CAA+BzjC,4CAAK,CAAC,KAAK2rI,gBAAL,CAAsBylC,QAAtB,CAA+BngL,IAA/B,CAAoCP,uDAAM,CAAC,UAAA8G,CAAC;AAAA,iBAAI,CAAC,OAAI,CAACqN,MAAV;AAAA,SAAF,CAA1C,CAAD,EAAiE,KAAK8mI,gBAAL,CAAsB1pG,QAAvF,CAAL,CAAsGhxC,IAAtG,CAA2GoP,oDAAG,CAAC,KAAKwgL,aAAL,CAAmBvlL,IAAnB,CAAwB,IAAxB,CAAD,CAA9G,EAA+I8nB,oDAAG,CAAC,UAAA5rB,CAAC;AAAA,iBAAI,OAAI,CAACuxJ,WAAL,CAAiB,KAAjB,CAAJ;AAAA,SAAF,CAAlJ,EAC1B53J,SAD0B,CAChB,kBAAiD;AAAA,cAA9CguH,QAA8C,UAA9CA,QAA8C;AAAA,cAA7B7G,QAA6B,UAApCz2G,KAAoC;AAAA,cAAnByvK,YAAmB,UAAnBA,YAAmB;;AAC5D,cAAIA,YAAJ,EAAkB;AACd,mBAAI,CAACwP,iBAAL,CAAuB;AAAE3hE,cAAAA,QAAQ,EAARA;AAAF,aAAvB;AACH;;AACD,cAAM4hE,iBAAiB,GAAG,CAACxpE,SAAS,CAAC4H,QAAD,CAAV,IAAwB,OAAI,CAACk+D,iBAAvD;AACA,cAAM2D,iBAAiB,GAAG1oE,QAAQ,KAAKo4C,MAAM,CAAC,OAAI,CAAC7uJ,KAAN,EAAa,OAAI,CAAC2rK,UAAlB,CAA7C;;AACA,cAAIuT,iBAAJ,EAAuB;AACnB,mBAAI,CAAC/D,WAAL,CAAiB;AAAE79D,cAAAA,QAAQ,EAAE,OAAI,CAACk+D;AAAjB,aAAjB;;AACA,mBAAI,CAAC1F,cAAL;AACH,WAHD,MAIK,IAAIqJ,iBAAJ,EAAuB;AACxB,mBAAI,CAACn/K,KAAL,GAAa,OAAI,CAACu6K,cAAL,GAAsB9jE,QAAtB,GAAiC6G,QAA9C;AACA,mBAAI,CAACk+D,iBAAL,GAAyBl+D,QAAzB;;AACA,mBAAI,CAACx0G,UAAL,CAAgB,OAAI,CAAC9I,KAArB;AACH;;AACD,iBAAI,CAACs6K,WAAL;AACH,SAjB8B,CAA/B;AAkBA,aAAK9C,sBAAL,GAA8Br5K,4CAAK,CAAC,KAAK8gH,iBAAL,CAAuBqwB,EAAxB,EAA4B,KAAKrwB,iBAAL,CAAuBioD,IAAnD,EAAyD,KAAKjoD,iBAAL,CAAuBnmH,IAAvB,CAA4B1J,IAA5B,CAAiC27K,0DAAS,CAAC;AAAA,iBAAM,OAAI,CAACqK,UAAX;AAAA,SAAD,CAA1C,CAAzD,EAA6H,KAAKn2D,iBAAL,CAAuB/lE,KAAvB,CAA6B9pD,IAA7B,CAAkC27K,0DAAS,CAAC;AAAA,iBAAM,OAAI,CAACqK,UAAX;AAAA,SAAD,CAA3C,CAA7H,EAAkM,KAAKn2D,iBAAL,CAAuB+xD,IAAzN,EAA+N,KAAK/xD,iBAAL,CAAuBr0E,GAAtP,CAAL,CACzBx7C,IADyB,CACpBP,uDAAM,CAAC,UAACQ,KAAD;AAAA,iBAAW,CAACmpC,KAAK,CAACnpC,KAAK,CAACi8B,KAAP,CAAjB;AAAA,SAAD,CADc,EAEzBh8B,SAFyB,CAEf,UAACD,KAAD;AAAA,iBAAW,OAAI,CAACy6I,gBAAL,CAAsB5kH,MAAtB,CAA6B71B,KAAK,CAACi8B,KAAnC,CAAX;AAAA,SAFe,CAA9B;AAGA,aAAK8zJ,gBAAL,GAAwB,KAAKngE,iBAAL,CAAuB96G,IAAvB,CAA4B7U,SAA5B,CAAsC;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,IAAjB,CAAN;AAAA,SAAtC,CAAxB;AACA,aAAKuwB,iBAAL,GAAyB,KAAKx4D,iBAAL,CAAuB/+G,KAAvB,CAA6B5Q,SAA7B,CAAuC,YAAM;AAClE,iBAAI,CAAC43J,WAAL,CAAiB,KAAjB;;AACA,iBAAI,CAACt1G,KAAL;AACH,SAHwB,CAAzB;AAIA,aAAK8lI,iBAAL,GAAyB,KAAKz4D,iBAAL,CAAuBptF,KAAvB,CACpBziC,IADoB,CACfmyB,oDAAG,CAAC,UAAClyB,KAAD;AAAA,iBAAWA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB,EAAX;AAAA,SAAD,CADY,EAEpBjU,SAFoB,CAEV,KAAKqoL,WAAL,CAAiBl+K,IAAjB,CAAsB,IAAtB,CAFU,CAAzB;AAGA,aAAKm+K,eAAL,GAAuB,KAAK34D,iBAAL,CAAuBf,GAAvB,CAClB5uH,SADkB,CACR,KAAK83K,YAAL,CAAkB3tK,IAAlB,CAAuB,IAAvB,CADQ,CAAvB;AAEA,aAAK4lL,yBAAL,GAAiC,KAAK5B,aAAL,CAAmBruL,IAAnB,CAAwBqkG,0DAAS,CAAC;AAAA,iBAAMtwD,+CAAQ,CAAC,EAAD,CAAR,CAAa/zC,IAAb,CAAkBkyB,qDAAI,CAAC,CAAD,CAAtB,EAA2BriB,0DAAS,CAAC,OAAI,CAACy+K,kBAAN,CAApC,CAAN;AAAA,SAAD,CAAjC,EAC5BpuL,SAD4B,CAClB,YAAM;AACjB,iBAAI,CAACquL,kBAAL,CAAwBz0K,IAAxB;AACH,SAHgC,CAAjC;;AAIA,aAAKktD,KAAL,CAAW7xB,iBAAX,CAA6B,YAAM;AAC/B,iBAAI,CAAC+6I,4BAAL,GACInhL,4CAAK,CAAC,OAAI,CAACw/K,kBAAL,CAAwBvuL,IAAxB,CAA6BqkG,0DAAS,CAAC;AAAA,mBAAMtwD,+CAAQ,CAAC,EAAD,CAAR,CAAa/zC,IAAb,CAAkBkyB,qDAAI,CAAC,CAAD,CAAtB,EAA2BriB,0DAAS,CAAC,OAAI,CAACu+K,aAAN,CAApC,CAAN;AAAA,WAAD,CAAtC,CAAD,EAA2G,OAAI,CAACv+D,iBAAL,CAAuBv2C,GAAlI,CAAL,CAA4It5E,IAA5I,CAAiJmyB,oDAAG,CAAC,UAAAlyB,KAAK;AAAA,mBAAIA,KAAK,YAAYwgD,eAAjB,IAAoC,OAAI,CAAC+B,KAAL,EAAxC;AAAA,WAAN,CAApJ,EAAiN/iD,uDAAM,CAAC;AAAA,mBAAM,OAAI,CAACyxC,SAAX;AAAA,WAAD,CAAvN,EACKhxC,SADL,CACe;AAAA,mBAAM,OAAI,CAACiwL,aAAL,EAAN;AAAA,WADf,CADJ;AAGH,SAJD;AAKH;;;aACD,gCAAuB;AAAA;;AACnB,YAAI,CAACprE,oFAAmB,EAApB,IAA0B,CAAC,KAAKggB,YAApC,EAAkD;AAC9C;AACH;;AACD,aAAK/9D,KAAL,CAAW7xB,iBAAX,CAA6B;AAAA,iBAC7B;AACA,mBAAI,CAACszI,wBAAL,GAAgC,OAAI,CAACrjL,QAAL,CAAc0tE,MAAd,CAAqB3tE,QAArB,EAA+B,YAA/B,EAA6C,UAACmE,CAAD,EAAO;AAChF,kBAAMM,MAAM,GAAGN,CAAC,CAACM,MAAjB;;AACA,kBAAI,OAAI,CAACsnC,SAAL,IAAkB,CAACgtI,UAAU,CAAC,OAAI,CAAC9tD,OAAN,EAAexmH,MAAf,EAAuB,OAAI,CAACspH,QAA5B,CAAjC,EAAwE;AACpE,uBAAI,CAAClsD,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,sBAAI,OAAI,CAACq4I,aAAT,EAAwB;AACpB;AACA,2BAAI,CAACt2B,WAAL,CAAiB,KAAjB;AACH;;AACD,yBAAI,CAACx4D,IAAL;AACH,iBAND;AAOH;AACJ,aAX+B;AAFH;AAAA,SAA7B;AAcH;;;aACD,gCAAuB;AAAA;;AACnB,YAAIylB,oFAAmB,EAAvB,EAA2B;AACvB,eAAKqrE,cAAL,GAAsB,KAAKA,cAAL,CAAoB/lL,IAApB,CAAyB,IAAzB,CAAtB;AACA,eAAKkuJ,aAAL,GAAqB,KAAKA,aAAL,CAAmBluJ,IAAnB,CAAwB,IAAxB,CAArB;;AACA,eAAK28D,KAAL,CAAW7xB,iBAAX,CAA6B,YAAM;AAC/B,gBAAMk7I,UAAU,GAAG,IAAnB;AACAlrL,YAAAA,QAAQ,CAAC4jL,gBAAT,CAA0B,OAA1B,EAAmC,OAAI,CAACqH,cAAxC,EAAwDC,UAAxD;AACAlrL,YAAAA,QAAQ,CAAC4jL,gBAAT,CAA0B,MAA1B,EAAkC,OAAI,CAACxwB,aAAvC,EAAsD83B,UAAtD;AACH,WAJD;AAKH;AACJ;;;aACD,kCAAyB;AACrB,YAAItrE,oFAAmB,EAAvB,EAA2B;AACvB,cAAMsrE,UAAU,GAAG,IAAnB;AACAlrL,UAAAA,QAAQ,CAAC+jL,mBAAT,CAA6B,OAA7B,EAAsC,KAAKkH,cAA3C,EAA2DC,UAA3D;AACAlrL,UAAAA,QAAQ,CAAC+jL,mBAAT,CAA6B,MAA7B,EAAqC,KAAK3wB,aAA1C,EAAyD83B,UAAzD;AACH;AACJ;;;aACD,6BAAoB;AAChB,YAAI,CAACtrE,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,aAAKqjE,sBAAL,CAA4B/nL,WAA5B;AACA,aAAK2vL,gBAAL,CAAsB3vL,WAAtB;AACA,aAAKgoL,iBAAL,CAAuBhoL,WAAvB;AACA,aAAKioL,iBAAL,CAAuBjoL,WAAvB;AACA,aAAKmoL,eAAL,CAAqBnoL,WAArB;AACA,aAAK6vL,4BAAL,CAAkC7vL,WAAlC;AACA,aAAK4vL,yBAAL,CAA+B5vL,WAA/B;AACA,aAAKiwL,sBAAL;;AACA,YAAI,KAAK7H,wBAAT,EAAmC;AAC/B,eAAKA,wBAAL;AACH;;AACD,YAAI,KAAK+F,qBAAT,EAAgC;AAC5B,eAAKA,qBAAL,CAA2BnuL,WAA3B;AACH;AACJ;;;aACD,uBAAcJ,KAAd,EAAqB;AACjB,YAAMi8B,KAAK,GAAGj8B,KAAK,CAACmgL,OAAN,CAAc,CAAd,CAAd;AACA,YAAIlyD,QAAQ,GAAG,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAf;AACAgyF,QAAAA,QAAQ,GAAG5H,SAAS,CAAC4H,QAAD,CAAT,GAAsBA,QAAtB,GAAiC,KAAKqiE,gBAAL,CAAsBr0J,KAAtB,CAA5C;AACA,YAAMtrB,KAAK,GAAG6uJ,MAAM,CAACvxC,QAAD,EAAW,KAAKquD,UAAhB,CAApB;AACA,YAAM8D,YAAY,GAAGpgL,KAAK,CAACogL,YAA3B;AACA,eAAO;AACHnyD,UAAAA,QAAQ,EAARA,QADG;AAEHhyF,UAAAA,KAAK,EAALA,KAFG;AAGHmkJ,UAAAA,YAAY,EAAZA,YAHG;AAIHzvK,UAAAA,KAAK,EAALA;AAJG,SAAP;AAMH;;;aACD,0BAAiBujF,aAAjB,EAAgC;AAC5B,YAAMq8F,gBAAgB,GAAG,CAAC,CAA1B;;AACA,YAAIlqE,SAAS,CAAC,KAAK4H,QAAN,CAAT,IAA4B/5B,aAAa,KAAKq8F,gBAAlD,EAAoE;AAChE,iBAAO,KAAKtiE,QAAZ;AACH,SAFD,MAGK;AACD,iBAAO,KAAK+uD,WAAZ;AACH;AACJ;;;aACD,6BAAoB/gJ,KAApB,EAA2B;AACvB,YAAMitJ,QAAQ,GAAG,KAAK3H,WAAL,CAAiBN,UAAjB,GAA8B,CAA/C;;AACA,YAAI,KAAKS,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD,iBAAQA,KAAK,GAAGitJ,QAAT,GAAqB,KAAKrH,mBAAL,CAAyB5lJ,KAAK,GAAG,CAAjC,CAArB,GAA2D/N,SAAlE;AACH,SAFD,MAGK;AACD,iBAAO+N,KAAP;AACH;AACJ;;;aACD,uBAAc;AACV,YAAI,KAAKtoB,MAAT,EAAiB;AACb,eAAK8mI,gBAAL,CAAsBh6H,MAAtB,CAA6B,KAAKg6H,gBAAL,CAAsBziH,OAAnD;AACA,eAAKuqB,KAAL;AACH,SAHD,MAIK;AACD,eAAKs1G,WAAL,CAAiB,IAAjB;AACH;AACJ;;;aACD,wBAAe;AACX,YAAIxxC,SAAS,CAAC,KAAKo0B,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAAD,CAAb,EAAkD;AAC9C,eAAK6iH,gBAAL,CAAsBh6H,MAAtB,CAA6B,KAAKg6H,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAA7B;AACH,SAFD,MAGK;AACD,eAAKigI,WAAL,CAAiB,KAAjB;AACA,eAAKozB,WAAL;AACH;;AACD,aAAK1oI,KAAL;AACH;;;aACD,uBAAc;AACV,YAAI,EAAE,KAAKwjI,UAAL,IAAmB,KAAKuE,UAA1B,CAAJ,EAA2C;AACvC;AACH;;AACD,aAAKA,UAAL,GAAkB,EAAlB;AACA,aAAKllL,GAAL,CAASS,YAAT;AACA,aAAKmgL,YAAL,CAAkBnsK,IAAlB,CAAuB,KAAKywK,UAA5B;AACH;;;aACD,0BAAiB;AACb,YAAI,CAAC1lE,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAI,KAAKo4D,WAAL,IAAoB,KAAKV,UAAzB,IAAuC,OAAO,KAAKU,WAAZ,KAA4B,QAAvE,EAAiF;AAC7E,gBAAM,IAAI53J,KAAJ,CAAUokK,oBAAoB,CAACxM,WAA/B,CAAN;AACH;;AACD,YAAI,KAAKkO,cAAL,KAAwB,IAAxB,IAAgC7kE,SAAS,CAAC,KAAK11G,KAAN,CAAzC,IAAyD,OAAO,KAAKA,KAAZ,KAAsB,QAAnF,EAA6F;AACzF,gBAAM,IAAIyU,KAAJ,CAAUokK,oBAAoB,CAAC6C,SAA/B,CAAN;AACH;;AACD,YAAI,KAAKnB,cAAL,KAAwB,KAAxB,IAAiC7kE,SAAS,CAAC,KAAK11G,KAAN,CAA1C,IAA0D,OAAO,KAAKA,KAAZ,KAAsB,QAApF,EAA8F;AAC1F,gBAAM,IAAIyU,KAAJ,CAAUokK,oBAAoB,CAAC7lE,MAA/B,CAAN;AACH;;AACD,YAAM2oE,WAAW,GAAG,CAACjmE,SAAS,CAAC,KAAKi2D,UAAN,CAAV,KAAgC,CAACj2D,SAAS,CAAC,KAAK6H,SAAN,CAA9D;;AACA,YAAIo+D,WAAJ,EAAiB;AACb,gBAAM,IAAIlnK,KAAJ,CAAUokK,oBAAoB,CAAC+C,YAA/B,CAAN;AACH;AACJ;;;aACD,yBAAgB;AAAA;;AACZ,aAAKt7I,SAAL,GAAiB,KAAjB;AACA,YAAM6jH,gBAAgB,GAAGzuC,SAAS,CAAC,KAAKo0B,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAAD,CAAlC;AACA,YAAMkwJ,eAAe,GAAGhzB,gBAAgB,IAAI0K,MAAM,CAAC,KAAK7uJ,KAAN,EAAa,KAAK2rK,UAAlB,CAAN,KAAwC9c,MAAM,CAAC,KAAK+hB,WAAL,CAAiBP,MAAjB,CAAwB,KAAKvmC,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAAxB,CAAD,EAA6D,KAAK0kJ,UAAlE,CAA1F;;AACA,YAAIwL,eAAe,IACf7iE,6EAAY,CAAC,KAAKp0G,KAAN,CADZ,IAEAo0G,6EAAY,CAAC,KAAK1zD,MAAN,CAFZ,IAGA0zD,6EAAY,CAAC,KAAK+gE,YAAN,CAHZ,IAIApI,WAAW,CAAC,KAAKztD,OAAL,CAAa79G,aAAd,CAJf,EAI6C;AACzC,eAAKy0D,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,gBAAIgyI,eAAJ,EAAqB;AACjB,qBAAI,CAACrtC,gBAAL,CAAsBh6H,MAAtB,CAA6B,OAAI,CAACg6H,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAA7B;AACH;;AACD,mBAAI,CAACigI,WAAL,CAAiB,KAAjB;;AACA,mBAAI,CAACozB,WAAL;;AACA,mBAAI,CAAC15H,MAAL,CAAY13C,IAAZ;;AACA,mBAAI,CAACwsK,iBAAL;AACH,WARD;AASH,SAdD,MAeK;AACD,eAAKxuB,WAAL,CAAiB,KAAjB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,qBAAY73J,KAAZ,EAAmB;AACf,YAAMo3F,OAAO,GAAGp3F,KAAK,CAAC2J,MAAN,CAAaytF,OAAb,CAAqBt8E,WAArB,EAAhB;;AACA,YAAIs8E,OAAO,KAAK,OAAhB,EAAyB;AACrBp3F,UAAAA,KAAK,CAACkU,cAAN;AACH;AACJ;;;aACD,oBAAWlU,KAAX,EAAkB;AACd,YAAIA,KAAK,CAACkkD,KAAN,KAAgB,CAAhB,IAAqBlkD,KAAK,CAAC+9F,OAAN,KAAkBgnB,uEAA3C,EAAuD;AACnD;AACH;;AACD,YAAIo4D,SAAS,GAAGxoF,MAAM,CAACoZ,YAAP,CAAoB/tG,KAAK,CAACwwL,QAAN,IAAkBxwL,KAAK,CAAC+9F,OAA5C,CAAhB;;AACA,YAAI,KAAKw/E,UAAT,EAAqB;AACjBJ,UAAAA,SAAS,GAAGA,SAAS,CAACriK,WAAV,EAAZ;AACH;;AACD,YAAIqiK,SAAS,KAAK,GAAlB,EAAuB;AACnBn9K,UAAAA,KAAK,CAACkU,cAAN;AACH;;AACD,aAAKgpK,IAAL,IAAaC,SAAb;AACA,aAAKp0H,IAAL,GAAYo0H,SAAZ;AACA,aAAKrwH,MAAL;AACH;;;aACD,kBAAS;AAAA;;AACL7iD,QAAAA,YAAY,CAAC,KAAKwmL,aAAN,CAAZ;;AACA,YAAI,CAAC,KAAK1K,UAAV,EAAsB;AAClB,eAAK0K,aAAL,GAAqBvmL,UAAU,CAAC,YAAM;AAClC,mBAAI,CAACgzK,IAAL,GAAY,EAAZ;AACH,WAF8B,EAE5B,KAAK9qJ,KAFuB,CAA/B;AAGA,eAAKs+J,UAAL;AACH;AACJ;;;aACD,sBAAa;AAAA;;AACT,YAAInyL,IAAI,GAAG,KAAKgjL,WAAL,CACN/hL,MADM,CACC,UAACqb,IAAD;AAAA,iBAAUwrG,SAAS,CAACxrG,IAAD,CAAT,IAAmB,CAACA,IAAI,CAACisB,MAAzB,IAAmC,CAAC,OAAI,CAAC46I,oBAAL,CAA0BgO,cAA1B,CAAyC70K,IAAzC,CAA9C;AAAA,SADD,EAEN1L,GAFM,CAEF,UAAC0L,IAAD,EAAU;AACf,cAAI,OAAI,CAAC0mK,WAAL,CAAiBf,OAArB,EAA8B;AAC1B,mBAAO;AAAE3lK,cAAAA,IAAI,EAAEA,IAAI,CAAClK,KAAb;AAAoB0xI,cAAAA,SAAS,EAAExnI,IAAI,CAACkmK;AAApC,aAAP;AACH;;AACD,iBAAO;AAAElmK,YAAAA,IAAI,EAAEA,IAAR;AAAcwnI,YAAAA,SAAS,EAAE,OAAI,CAACk/B,WAAL,CAAiBr9J,OAAjB,CAAyBrJ,IAAzB;AAAzB,WAAP;AACH,SAPU,CAAX;AAQA,YAAM81K,QAAQ,GAAG1T,aAAa,CAAC,KAAKC,IAAN,EAAY,KAAKn0H,IAAjB,CAA9B;AACA,YAAIqpF,UAAU,GAAG7zI,IAAI,CAACuX,MAAtB;AACA,YAAI82K,WAAW,GAAG,CAACzjJ,KAAK,CAAC,KAAKsxG,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAAD,CAAxB;AACA,YAAImqJ,UAAU,GAAG,CAAC6K,WAAD,GAAe,CAAf,GAAmB,KAAKnyC,gBAAL,CAAsB7iH,QAAtB,CAA+B,CAA/B,CAApC;AACA,YAAI5e,IAAJ,EAAUijB,KAAV,EAAiB+gJ,WAAjB;;AACA,YAAI,KAAKA,WAAL,IAAoB,CAAC,KAAK0E,oBAAL,CAA0BgO,cAA1B,CAAyC,KAAK1S,WAA9C,CAAzB,EAAqF;AACjFA,UAAAA,WAAW,GAAG;AAAEniK,YAAAA,IAAI,EAAE,KAAKmiK,WAAb;AAA0B36B,YAAAA,SAAS,EAAE,CAAC;AAAtC,WAAd;AACAjQ,UAAAA,UAAU,IAAI,CAAd;AACA2vC,UAAAA,UAAU,IAAI,CAAd;AACH;;AACDA,QAAAA,UAAU,IAAI4O,QAAQ,IAAI/D,WAAZ,GAA0B,CAA1B,GAA8B,CAA5C;AACAruL,QAAAA,IAAI,GAAG6+K,WAAW,CAAC7+K,IAAD,EAAOwjL,UAAP,EAAmB/E,WAAnB,CAAlB;AACA/gJ,QAAAA,KAAK,GAAG,CAAR;;AACA,eAAOA,KAAK,GAAGm2G,UAAf,EAA2Bn2G,KAAK,EAAhC,EAAoC;AAChCjjB,UAAAA,IAAI,GAAGwmJ,MAAM,CAACjhK,IAAI,CAAC09B,KAAD,CAAJ,CAAYphB,IAAb,EAAmB,KAAKqzG,SAAxB,CAAb;AACA,cAAM0iE,SAAS,GAAGlyD,OAAO,CAACiyD,QAAQ,IAAIrT,SAAS,CAACtkK,IAAD,EAAO,KAAK+vC,IAAZ,EAAkB,KAAKw0H,UAAvB,CAAtB,CAAzB;AACA,cAAMsT,SAAS,GAAGnyD,OAAO,CAAC4+C,SAAS,CAACtkK,IAAD,EAAO,KAAKkkK,IAAZ,EAAkB,KAAKK,UAAvB,CAAV,CAAzB;;AACA,cAAIqT,SAAS,IAAIC,SAAjB,EAA4B;AACxB50J,YAAAA,KAAK,GAAG19B,IAAI,CAAC09B,KAAD,CAAJ,CAAYomH,SAApB;AACA;AACH;AACJ;;AACD,YAAIpmH,KAAK,KAAKm2G,UAAd,EAA0B;AACtB,eAAKpkI,QAAL,CAAciuB,KAAd;AACH;AACJ;;;aACD,oBAAWtrB,KAAX,EAAkB;AACd,aAAKy1K,gBAAL,CAAsBz1K,KAAtB;AACA,aAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsBlJ,KAAtB;AACH;;;aACD,kBAASsrB,KAAT,EAAgB;AACZ,aAAKw+G,gBAAL,CAAsB5kH,MAAtB,CAA6BoG,KAA7B;AACH;;;aACD,8BAAoC;AAAA,YAArBqgJ,UAAqB,UAArBA,UAAqB;AAAA,YAAT3rK,KAAS,UAATA,KAAS;AAChC,YAAMi3B,MAAM,GAAG;AACXqmF,UAAAA,QAAQ,EAAE,IADC;AAEXhyF,UAAAA,KAAK,EAAE,CAAC;AAFG,SAAf;;AAIA,YAAMmtB,IAAI,GAAG,SAAPA,IAAO,CAAA6kE,QAAQ;AAAA,iBAAIuxC,MAAM,CAACvxC,QAAD,EAAWquD,UAAX,CAAV;AAAA,SAArB;;AACA,YAAIqQ,QAAJ;;AACA,YAAI,KAAKpL,WAAL,CAAiBf,OAArB,EAA8B;AAC1BmM,UAAAA,QAAQ,GAAG,kBAAC55K,OAAD,EAAa;AACpB,mBAAOq2C,IAAI,CAACr2C,OAAO,CAACpC,KAAT,CAAJ,KAAwBy4C,IAAI,CAACz4C,KAAD,CAAnC;AACH,WAFD;AAGH,SAJD,MAKK;AACDg8K,UAAAA,QAAQ,GAAG,kBAAC55K,OAAD,EAAa;AACpB,mBAAOq2C,IAAI,CAACr2C,OAAD,CAAJ,KAAkBq2C,IAAI,CAACz4C,KAAD,CAA7B;AACH,WAFD;AAGH;;AACD,YAAMsrB,KAAK,GAAG,KAAKslJ,WAAL,CAAiBnmI,SAAjB,CAA2BuxI,QAA3B,CAAd;AACA/kJ,QAAAA,MAAM,CAACqmF,QAAP,GAAkB,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwB/kJ,KAAxB,CAAlB;AACA2L,QAAAA,MAAM,CAAC3L,KAAP,GAAeA,KAAf;AACA,eAAO2L,MAAP;AACH;;;aACD,oBAAW;AACP,YAAMj3B,KAAK,GAAG,KAAKA,KAAnB;AACA,YAAM2rK,UAAU,GAAG,KAAKA,UAAxB;AACA,YAAMpuD,SAAS,GAAG,KAAKA,SAAvB;AACA,YAAMm+D,SAAS,GAAG,KAAKnB,cAAvB;;AACA,YAAI,KAAKlO,WAAT,EAAsB;AAClB,cAAMl9H,YAAY,GAAG0/G,MAAM,CAAC,KAAKwd,WAAN,EAAmBV,UAAnB,CAA3B;AACA,cAAMjtI,YAAY,GAAGmwH,MAAM,CAAC7uJ,KAAD,EAAQ2rK,UAAR,CAA3B;;AACA,cAAI,CAACj2D,SAAS,CAAC11G,KAAD,CAAV,IAAsB0+B,YAAY,KAAKyQ,YAA3C,EAA0D;AACtD,iBAAKgsI,WAAL,CAAiB;AAAE79D,cAAAA,QAAQ,EAAE,KAAK+uD,WAAjB;AAA8B0P,cAAAA,OAAO,EAAE;AAAvC,aAAjB;AACA,iBAAKjG,cAAL,CAAoB,CAAC,CAArB;;AACA,gBAAI,KAAKV,UAAL,IAAmB,KAAKuE,UAAxB,IAAsC,KAAK/I,WAAL,CAAiBN,UAA3D,EAAuE;AACnE,mBAAKxmC,gBAAL,CAAsBziH,OAAtB,GAAgC,KAAK6pJ,mBAAL,CAAyB,CAAzB,CAAhC;AACH;;AACD;AACH;AACJ;;AACD,YAAM3qE,QAAQ,GAAG,KAAKu1E,YAAL,CAAkB;AAAEnQ,UAAAA,UAAU,EAAVA,UAAF;AAAc3rK,UAAAA,KAAK,EAALA;AAAd,SAAlB,CAAjB,CAjBO,CAkBP;AACA;AACA;;AACA,YAAMmgL,UAAU,GAAG,EAAEzE,SAAS,IAAIn+D,SAAf,CAAnB;;AACA,YAAIhX,QAAQ,CAAC+W,QAAb,EAAuB;AACnB,eAAK69D,WAAL,CAAiB;AAAE79D,YAAAA,QAAQ,EAAE/W,QAAQ,CAAC+W,QAArB;AAA+By+D,YAAAA,OAAO,EAAE;AAAxC,WAAjB;AACA,eAAKjG,cAAL,CAAoBvvE,QAAQ,CAACj7E,KAA7B;AACH,SAHD,MAIK,IAAIoqF,SAAS,CAAC11G,KAAD,CAAT,IAAoBmgL,UAAxB,EAAoC;AACrC,eAAKhF,WAAL,CAAiB;AAAE79D,YAAAA,QAAQ,EAAEt9G;AAAZ,WAAjB;AACA,eAAK81K,cAAL;AACH,SAHI,MAIA,IAAI,KAAK0F,iBAAT,EAA4B;AAC7B,eAAKL,WAAL,CAAiB;AAAE79D,YAAAA,QAAQ,EAAE,KAAKk+D;AAAjB,WAAjB;AACA,eAAK1F,cAAL;AACH,SAHI,MAIA;AACD,eAAKuF,UAAL;AACA,eAAKvF,cAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,sBAAazmL,KAAb,EAAoB;AAChB,aAAKgmL,YAAL,CAAkBnsK,IAAlB,CAAuB7Z,KAAK,CAAC2J,MAAN,CAAagH,KAApC;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW3Q,KAAX,EAAkB;AACd,YAAMijL,OAAO,GAAG,KAAKA,OAArB;AACAA,QAAAA,OAAO,CAAChlE,IAAR,GAAej+G,KAAK,CAACi+G,IAArB;AACH;;;aACD,iCAAwB;AACpB,YAAM5uE,YAAY,GAAG,KAAK8gF,OAAL,CAAa79G,aAAb,CAA2Bu4D,YAA3B,CAAwC,kBAAxC,KAA+D,EAApF;AACA,YAAMkmH,OAAO,GAAG1hJ,YAAY,CAACjsB,OAAb,CAAqB,KAAK4tK,YAA1B,EAAwC,EAAxC,EAA4C5oL,IAA5C,EAAhB,CAFoB,CAGpB;;AACA,aAAK4oL,YAAL,GAAoB9rE,IAAI,EAAxB,CAJoB,CAKpB;;AACA,YAAMkC,QAAQ,GAAG,UAAG,KAAK4pE,YAAR,cAAwBD,OAAxB,EAAkC3oL,IAAlC,EAAjB;AACA,aAAKjD,QAAL,CAAc8C,YAAd,CAA2B,KAAKkoH,OAAL,CAAa79G,aAAxC,EAAuD,kBAAvD,EAA2E80G,QAA3E;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAKx+G,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAA/D;AACH;;AACD,YAAI,KAAKihH,OAAL,KAAiB,MAArB,EAA6B;AACzB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAAlE;AACH;;AACD,YAAI,KAAKpC,QAAL,KAAkB,MAAtB,EAA8B;AAC1B,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAAnE;AACH;AACJ;;;;;;AAELsmE,EAAAA,qBAAqB,CAACtjJ,IAAtB;AAAA,qBAAmHsjJ,qBAAnH,EAttLsG1tL,gEAstLtG,CAA0JA,sDAA1J,GAttLsGA,gEAstLtG,CAAoLkE,8EAApL,GAttLsGlE,gEAstLtG,CAAuNmE,wEAAvN,GAttLsGnE,gEAstLtG,CAAmPu4I,gBAAnP,GAttLsGv4I,gEAstLtG,CAAgRquH,iBAAhR,GAttLsGruH,gEAstLtG,CAA8SihL,oBAA9S,GAttLsGjhL,gEAstLtG,CAA+UkgL,WAA/U,GAttLsGlgL,gEAstLtG,CAAuWA,kDAAvW,GAttLsGA,gEAstLtG,CAA6XA,qDAA7X,GAttLsGA,gEAstLtG,CAAsZA,6DAAtZ,GAttLsGA,gEAstLtG,CAAubk2J,aAAvb;AAAA;;AACAw3B,EAAAA,qBAAqB,CAAC5gJ,IAAtB,kBAvtLsG9sC,gEAutLtG;AAAA,UAAuG0tL,qBAAvG;AAAA;AAAA;AAAA;AAvtLsG1tL,QAAAA,6DAutLtG,WAiByEw/K,qBAjBzE;AAvtLsGx/K,QAAAA,6DAutLtG,WAiB8K2/K,sBAjB9K;AAvtLsG3/K,QAAAA,6DAutLtG,WAiByR4/K,2BAjBzR;AAvtLsG5/K,QAAAA,6DAutLtG,WAiBoYstL,sBAjBpY;AAvtLsGttL,QAAAA,6DAutLtG,WAiB2ey/K,uBAjB3e;AAvtLsGz/K,QAAAA,6DAutLtG,WAiBmlB0/K,uBAjBnlB;AAvtLsG1/K,QAAAA,6DAutLtG,WAiB2rB4hL,uBAjB3rB;AAAA;;AAAA;AAAA;;AAvtLsG5hL,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAAA;AAAA;AAAA;AAAA;AAvtLsGA,QAAAA,0DAutLtG,SAiBq1BkP,4DAjBr1B;AAvtLsGlP,QAAAA,0DAutLtG;AAvtLsGA,QAAAA,0DAutLtG;AAAA;;AAAA;AAAA;;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAvtLsGA,QAAAA,6DAutLtG,MAvtLsGA,0DAutLtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAvtLsGA,QAAAA,yDAutLtG;AAAA,iBAAuG,mBAAvG;AAAA;AAAA,iBAAuG,oBAAvG;AAAA;AAAA,iBAAuG,iBAAvG;AAAA;AAAA;;AAAA;AAvtLsGA,QAAAA,0DAutLtG;AAvtLsGA,QAAAA,0DAutLtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAvtLsGA,iEAutLtG,CAA+oD,CACvoDytL,2BADuoD,EAEvoDvN,WAFuoD,EAGvoD3nC,gBAHuoD,EAIvoDlqB,iBAJuoD,EAKvoD4yD,oBALuoD,EAMvoDl8D,8EANuoD,EAOvoD;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAPuoD,EAWvoD;AACIH,MAAAA,OAAO,EAAEy+K,mBADb;AACkCzxI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMy9J,qBAAN;AAAA,OAAD;AADzD,KAXuoD,EAcvoD;AACItqL,MAAAA,OAAO,EAAEk/H,uEADb;AACyBlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMy9J,qBAAN;AAAA,OAAD;AADhD,KAduoD,CAA/oD,GAvtLsG1tL,mEAutLtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAvtLsGA,QAAAA,iEAyuL9F,MAlBR;AAvtLsGA,QAAAA,6DAivL9F,4BA1BR;AAvtLsGA,QAAAA,yDAmvLtF,oDA5BhB;AAvtLsGA,QAAAA,yDAyvLtF,yEAlChB;AAvtLsGA,QAAAA,2DA0vL1F,IAnCZ;AAvtLsGA,QAAAA,6DA4vL9F,gBArCR;AAvtLsGA,QAAAA,wDAuwL1F,cAhDZ;AAvtLsGA,QAAAA,2DA4wL9F,EArDR;AAvtLsGA,QAAAA,yDA6wL9F,iFA7wL8FA,qEA6wL9F,CAtDR;AAvtLsGA,QAAAA,yDA42L9F,yEArJR;AAvtLsGA,QAAAA,iEA+2L9F,aAxJR;AAAA;;AAAA;AAvtLsGA,QAAAA,wDAivLlC,GA1BpE;AAvtLsGA,QAAAA,yDAivLlC,wBA1BpE;AAvtLsGA,QAAAA,wDAmvLxE,GA5B9B;AAvtLsGA,QAAAA,yDAmvLxE,2BA5B9B;AAvtLsGA,QAAAA,wDAyvLzE,GAlC7B;AAvtLsGA,QAAAA,yDAyvLzE,4BAlC7B;AAvtLsGA,QAAAA,wDAiwL1F,GA1CZ;AAvtLsGA,QAAAA,yDAiwL1F,kEAjwL0FA,8DAiwL1F,2BA1CZ;AAvtLsGA,QAAAA,0DAkwL1F,kDA3CZ;AAvtLsGA,QAAAA,wDA0wLtF,GAnDhB;AAvtLsGA,QAAAA,yDA0wLtF,8BAnDhB;AAvtLsGA,QAAAA,wDA42LjF,GArJrB;AAvtLsGA,QAAAA,yDA42LjF,oBArJrB;AAAA;AAAA;AAAA,iBAyJ0CwtH,aAzJ1C,EAyJqXutD,kFAzJrX,EAyJofpY,0BAzJpf,EAyJ61B2Y,kDAzJ71B,EAyJ+6BhuD,wBAzJ/6B,EAyJ+gCguD,qDAzJ/gC,EAyJ2lCP,0FAzJ3lC,EAyJguCv2D,iEAzJhuC,EAyJ69C+oE,oBAzJ79C,EAyJijD/oE,4DAzJjjD,EAyJsoDA,oDAzJtoD,EAyJ20D09D,mBAzJ30D;AAAA;AAAA;SAznCMwL;;;AAmxCN;AAAA;AAAA;AAmUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMqD;MAAAA,wOACF,qCAAY99J,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAEL89J,EAAAA,2BAA2B,CAAC3mJ,IAA5B;AAAA,qBAAyH2mJ,2BAAzH,EAptMsG/wL,gEAotMtG,CAAsKA,uDAAtK;AAAA;;AACA+wL,EAAAA,2BAA2B,CAACnmJ,IAA5B,kBArtMsG5qC,gEAqtMtG;AAAA,UAA6G+wL,2BAA7G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,iOACF,8BAAY/9J,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAEL+9J,EAAAA,oBAAoB,CAAC5mJ,IAArB;AAAA,qBAAkH4mJ,oBAAlH,EA3vMsGhxL,gEA2vMtG,CAAwJA,uDAAxJ;AAAA;;AACAgxL,EAAAA,oBAAoB,CAACpmJ,IAArB,kBA5vMsG5qC,gEA4vMtG;AAAA,UAAsGgxL,oBAAtG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,sOACF,mCAAYh+J,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELg+J,EAAAA,yBAAyB,CAAC7mJ,IAA1B;AAAA,qBAAuH6mJ,yBAAvH,EAnyMsGjxL,gEAmyMtG,CAAkKA,uDAAlK;AAAA;;AACAixL,EAAAA,yBAAyB,CAACrmJ,IAA1B,kBApyMsG5qC,gEAoyMtG;AAAA,UAA2GixL,yBAA3G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;;;IACMC;;;;;AACF;AACJ;AACA;AACA;AACI,0BAAYtjE,QAAZ,EAAsB;AAAA;;AAAA;;AAClB;AACA,YAAKA,QAAL,GAAgBA,QAAhB;AAFkB;AAGrB;;;EARwB/B;AAW7B;AACA;AACA;;;AACA,IAAMslE,2BAA2B,GAAG,SAA9BA,2BAA8B,CAAC/+D,QAAD,EAAc;AAC9C,MAAI5jC,QAAQ,CAAC4jC,QAAD,CAAZ,EAAwB;AACpB,QAAMg/D,eAAe,GAAG;AAAErtL,MAAAA,OAAO,EAAE,IAAX;AAAiBs+K,MAAAA,YAAY,EAAE;AAA/B,KAAxB;AACA,WAAOxlK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBs0K,eAAlB,EAAmCh/D,QAAnC,CAAP;AACH;;AACD,SAAO;AAAEruH,IAAAA,OAAO,EAAEs6H,OAAO,CAACjM,QAAD,CAAlB;AAA8BiwD,IAAAA,YAAY,EAAE;AAA5C,GAAP;AACH,CAND;AAQA;AACA;AACA;;;IACMgP;MAAAA;AACF,8BAAYvsL,QAAZ,EAAsBolD,WAAtB,EAAmC;AAAA;;AAC/B,WAAKplD,QAAL,GAAgBA,QAAhB;AACA,WAAKolD,WAAL,GAAmBA,WAAnB;AACA,WAAKs/D,OAAL,GAAe,QAAf;AACA,WAAKpC,QAAL,GAAgB,OAAhB;AACA;AACR;AACA;;AACQ,WAAKkqE,eAAL,GAAuB,IAAI1/I,GAAJ,EAAvB;AACA,WAAK2/I,SAAL,GAAiB,IAAI3+K,wDAAJ,EAAjB;AACA,WAAKwwJ,WAAL,GAAmB,IAAnB;AACA,WAAK56C,KAAL,GAAa,QAAb;AACH;;;;WAQD,eAAW;AACP,eAAO,KAAKA,KAAZ;AACH;WATD,aAASjgH,IAAT,EAAe;AACX,aAAKzD,QAAL,CAAcc,WAAd,CAA0B,KAAKskD,WAAL,CAAiBj4C,aAA3C,EAA0Dg4H,YAAY,CAAC,WAAD,EAAc,KAAK1hI,IAAnB,CAAtE;;AACA,YAAIA,IAAJ,EAAU;AACN,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK+kD,WAAL,CAAiBj4C,aAAxC,EAAuDg4H,YAAY,CAAC,WAAD,EAAc1hI,IAAd,CAAnE;AACH;;AACD,aAAKigH,KAAL,GAAajgH,IAAb;AACH;;;WAID,eAAa;AACT,eAAO,KAAKgZ,EAAZ;AACH;;;aACD,iBAAQ09E,GAAR,EAAal2C,IAAb,EAAmBntB,KAAnB,EAA0B;AACtB,YAAM41J,SAAS,GAAGzoI,IAAI,IAAI,KAAK0oI,YAAL,CAAkBxyF,GAAlB,EAAuBl2C,IAAvB,EAA6BntB,KAA7B,CAA1B;AACA,eAAOujI,MAAM,CAAClgE,GAAD,EAAMuyF,SAAN,CAAb;AACH;;;aACD,uBAAcvyF,GAAd,EAAmByyF,aAAnB,EAAkC;AAAA;;AAC9B,YAAI,KAAKC,UAAL,CAAgB1yF,GAAhB,CAAJ,EAA0B;AACtB;AACZ;AACA;AACA;AACA;AACA;AACY,iBAAOA,GAAG,CAACxL,KAAJ,CAAU,UAACm+F,IAAD,EAAOh2J,KAAP;AAAA,mBAAiB,OAAI,CAAC01J,eAAL,CAAqBvgD,GAArB,CAAyBn1G,KAAK,GAAG81J,aAAjC,CAAjB;AAAA,WAAV,CAAP;AACH;;AACD,eAAO,KAAKJ,eAAL,CAAqBvgD,GAArB,CAAyB2gD,aAAzB,CAAP;AACH;;;aACD,mBAAU/xL,KAAV,EAAiBs/F,GAAjB,EAAsBrjE,KAAtB,EAA6B;AACzBj8B,QAAAA,KAAK,CAACkU,cAAN;AACAlU,QAAAA,KAAK,CAACunL,wBAAN;;AACA,YAAI,CAAC,KAAKzvJ,QAAN,IAAkB93B,KAAK,CAACkkD,KAAN,KAAgB,CAAtC,EAAyC;AACrC,eAAK0tI,SAAL,CAAe/3K,IAAf,CAAoB;AAAEylF,YAAAA,GAAG,EAAHA,GAAF;AAAOrjE,YAAAA,KAAK,EAALA;AAAP,WAApB;AACH;AACJ;;;aACD,gBAAOqjE,GAAP,EAAYrjE,KAAZ,EAAmB;AACf,YAAIqjE,GAAJ,EAAS;AAAE;AACP,iBAAO,KAAK4yF,SAAL,GAAiB,GAAjB,GAAuB,KAAKC,OAAL,CAAa7yF,GAAb,EAAkB,KAAKg9E,UAAvB,EAAmCrgJ,KAAnC,CAA9B;AACH;AACJ;;;aACD,oBAAWqjE,GAAX,EAAgB;AACZ,eAAOA,GAAG,YAAY3/E,KAAtB;AACH;;;aACD,uBAAcsc,KAAd,EAAqB;AACjB,eAAOoqF,SAAS,CAAC,KAAKruF,OAAN,CAAT,IAA2B,KAAKA,OAAL,KAAiBiE,KAAnD;AACH;;;aACD,sBAAaqjE,GAAb,EAAkBl2C,IAAlB,EAAwBntB,KAAxB,EAA+B;AAC3B;AACA,YAAMm2J,WAAW,GAAGhpI,IAAI,CAACtzC,MAAL,GAAc,CAAlC;;AACA,YAAI,OAAOszC,IAAP,KAAgB,QAApB,EAA8B;AAC1B,iBAAOA,IAAP;AACH,SAFD,MAGK,IAAI,KAAKipI,UAAT,EAAqB;AACtB,cAAMC,KAAK,GAAG,KAAKD,UAAL,CAAgBp2J,KAAhB,CAAd;AACA,iBAAOm2J,WAAW,GAAGE,KAAd,GAAsBlpI,IAAI,CAACgpI,WAAD,CAA1B,GAA0ChpI,IAAI,CAACkpI,KAAD,CAArD;AACH,SAHI,MAIA;AACD,iBAAOlpI,IAAI,CAACnzC,IAAL,CAAU,UAAA4E,IAAI;AAAA,mBAAIA,IAAI,IAAIykF,GAAZ;AAAA,WAAd,CAAP;AACH;AACJ;;;;;;AAELoyF,EAAAA,gBAAgB,CAACjnJ,IAAjB;AAAA,qBAA8GinJ,gBAA9G,EAr5MsGrxL,gEAq5MtG,CAAgJA,qDAAhJ,GAr5MsGA,gEAq5MtG,CAAyKA,sDAAzK;AAAA;;AACAqxL,EAAAA,gBAAgB,CAACvkJ,IAAjB,kBAt5MsG9sC,gEAs5MtG;AAAA,UAAkGqxL,gBAAlG;AAAA;AAAA;AAAA;AAAA;AAt5MsGrxL,QAAAA,0DAs5MtG;AAt5MsGA,QAAAA,0DAs5MtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAt5MsGA,QAAAA,8DAs5MtG;AAt5MsGA,QAAAA,yDAu5M9F,sDADR;AAt5MsGA,QAAAA,2DA48M9F,GAtDR;AAAA;;AAAA;AAt5MsGA,QAAAA,yDAw5M1E,qBAF5B;AAAA;AAAA;AAAA,iBAuD0Cs7K,qDAvD1C,EAuDqJA,qDAvDrJ,EAuDiOA,kDAvDjO,EAuDmThuD,wBAvDnT;AAAA;AAAA;SA7EM+jE;;;AAqIN;AAAA;AAAA;;AAyGA,IAAMa,0BAA0B,GAAG;AAC/B5uL,EAAAA,KAAK,EAAE,IADwB;AAE/BF,EAAAA,OAAO,EAAEguB,8DAFsB;AAG/Bgf,EAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,WAAMkiK,oBAAN;AAAA,GAAD;AAHQ,CAAnC;AAKA,IAAMC,cAAc,GAAG,QAAvB;AACA,IAAMtqE,iBAAiB,GAAG,QAA1B;AACA,IAAMG,mBAAmB,GAAG,OAA5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMkqE;MAAAA;AACF,kCAAYriE,OAAZ,EAAqB3H,YAArB,EAAmCwJ,YAAnC,EAAiDuvD,WAAjD,EAA8D9mC,gBAA9D,EAAgF7qB,iBAAhF,EAAmG8xD,oBAAnG,EAAyHt8K,GAAzH,EAA8HstL,OAA9H,EAAuIvtL,QAAvI,EAAiJ4hE,KAAjJ,EAAwJ+9D,YAAxJ,EAAsK;AAAA;;AAAA;;AAClK,WAAK3U,OAAL,GAAeA,OAAf;AACA,WAAK3H,YAAL,GAAoBA,YAApB;AACA,WAAKwJ,YAAL,GAAoBA,YAApB;AACA,WAAKuvD,WAAL,GAAmBA,WAAnB;AACA,WAAK9mC,gBAAL,GAAwBA,gBAAxB;AACA,WAAK7qB,iBAAL,GAAyBA,iBAAzB;AACA,WAAK8xD,oBAAL,GAA4BA,oBAA5B;AACA,WAAKt8K,GAAL,GAAWA,GAAX;AACA,WAAKstL,OAAL,GAAeA,OAAf;AACA,WAAKvtL,QAAL,GAAgBA,QAAhB;AACA,WAAK4hE,KAAL,GAAaA,KAAb;AACA,WAAK+9D,YAAL,GAAoBA,YAApB;AACA,WAAKohD,SAAL,GAAiBhhE,IAAI,EAArB;AACA,WAAKytE,SAAL,GAAiBztE,IAAI,EAArB;AACA,WAAKgtE,SAAL,GAAiB,SAAShtE,IAAI,EAA9B;AACA,WAAKihE,YAAL,GAAoB,YAAYjhE,IAAI,EAApC;AACA,WAAK0tE,eAAL,GAAuB1kK,SAAvB;AACA;AACR;AACA;;AACQ,WAAK8jI,WAAL,eAAwB9sC,IAAI,EAA5B;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKv3D,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;;AACQ,WAAKxyB,QAAL,GAAgB,CAAhB;AACA;AACR;AACA;;AACQ,WAAKrD,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAKkjJ,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKrnB,UAAL,GAAkB,GAAlB;AACA;AACR;AACA;AACA;;AACQ,WAAKonB,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK+M,SAAL,GAAiB,UAACC,IAAD;AAAA,eAAUA,IAAI,IAAI,EAAlB;AAAA,OAAjB;AACA;AACR;AACA;AACA;AACA;;;AACQ,WAAK/I,WAAL,GAAmB,KAAnB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKC,eAAL,GAAuB,UAAChxK,IAAD;AAAA,eAAUA,IAAI,CAACjZ,IAAL,CAAUoP,oDAAG,CAAC,UAAC8vK,SAAD,EAAe;AAC1D,cAAM0N,QAAQ,GAAG,SAAXA,QAAW,CAAC9xK,IAAD;AAAA,mBAAU,OAAOA,IAAP,KAAgB,QAAhB,IAA4BokK,SAAS,CAACnkK,WAAV,OAA4BD,IAAI,CAACC,WAAL,EAAlE;AAAA,WAAjB;;AACA,cAAMi4K,aAAa,GAAG,OAAI,CAACpiL,KAAL,CAAWsF,IAAX,CAAgB02K,QAAhB,CAAtB;;AACA,cAAIoG,aAAJ,EAAmB;AACf,mBAAOA,aAAP;AACH;;AACD,cAAMC,YAAY,GAAG,OAAI,CAACzR,WAAL,CAAiBtrK,IAAjB,CAAsB02K,QAAtB,CAArB;;AACA,iBAAOqG,YAAY,GAAGA,YAAH,GAAkB/T,SAArC;AACH,SAR6C,CAAb,CAAV;AAAA,OAAvB;AASA;AACR;AACA;AACA;;;AACQ,WAAK+G,YAAL,GAAoB,IAAI/yK,wDAAJ,EAApB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK+nI,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK6B,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;;AACQ,WAAKkhB,MAAL,GAAc,IAAIlhB,wDAAJ,EAAd;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAK07C,MAAL,GAAc,IAAI17C,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA;AACR;AACA;AACA;;AACQ,WAAK2+K,SAAL,GAAiB,IAAI3+K,wDAAJ,EAAjB;AACA,WAAKwwJ,WAAL,GAAmB,IAAnB;AACA,WAAK7qJ,IAAL,GAAY,UAAZ;AACA,WAAKq6K,WAAL,GAAmB,KAAnB;AACA,WAAKpqE,KAAL,GAAa,QAAb;AACA,WAAKC,QAAL,GAAgB,QAAhB;AACA,WAAKC,SAAL,GAAiB,OAAjB;;AACA,WAAKq9D,gBAAL,GAAwB,UAAC9/K,CAAD,EAAO,CAAG,CAAlC;;AACA,WAAK+/K,iBAAL,GAAyB,UAAC//K,CAAD,EAAO,CAAG,CAAnC;;AACA,WAAK04K,YAAL,GAAoB,EAApB;AACA,WAAKtqK,KAAL,GAAa,KAAb;AACA,WAAKw9B,MAAL,GAAc,EAAd;AACA,WAAK69E,cAAL,GAAsB;AAAE9iH,QAAAA,OAAO,EAAE;AAAX,OAAtB;AACA,WAAKimL,WAAL,GAAmB;AAAE9uL,QAAAA,OAAO,EAAE;AAAX,OAAnB;AACA,WAAK8rH,UAAL,GAAkB,KAAlB;AACA,WAAKijE,iBAAL,GAAyB,EAAzB;AACA,WAAK5I,kBAAL,GAA0B,IAAIhsK,0CAAJ,EAA1B;AACA,WAAK60K,uBAAL,GAA+B,IAAI7tE,+CAAJ,EAA/B;AACAC,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAKwgE,qBAAL,GAA6B,KAAKmI,WAAL,CAAiBrkL,IAAjB,CAAsB,IAAtB,CAA7B;AACA,WAAK7L,IAAL,GAAY,EAAZ;AACA,WAAKq4C,SAAL,GAAiB,KAAK4xE,YAAL,CAAkBW,GAAlB,GAAwB,KAAxB,GAAgC,KAAjD;AACA,WAAKuE,eAAL;AACA,WAAK84D,oBAAL;AACH;AACD;AACJ;AACA;AACA;AACA;;;;;aACI,qBAAYvqJ,KAAZ,EAAmB;AACf,YAAMwzJ,QAAQ,GAAG,KAAK1F,WAAL,GAAmB,CAAC,CAApB,GAAwB,CAAzC;AACA,YAAMjjD,SAAS,GAAG2oD,QAAQ,IAAI,CAAZ,IAAiBxzJ,KAAK,GAAG,KAAK19B,IAAL,CAAUuX,MAArD;;AACA,YAAIuwG,SAAS,CAACpqF,KAAD,CAAT,IAAoB6qG,SAApB,IAAiC,CAAC,KAAK46C,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAtC,EAAwF;AACpF,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4BtmB,KAA5B;AACH,SAFD,MAGK;AACD,eAAKw+G,gBAAL,CAAsBl4F,KAAtB,CAA4B,IAA5B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAK0vJ,SAAL,CAAejlI,KAAf;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,4BAAmB;AAAA;;AACf,YAAI,CAAC,KAAKtR,SAAV,EAAqB;AACjB,eAAKA,SAAL,GAAiB,IAAjB;;AACA,cAAIg0E,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,iBAAK0V,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,qBAAI,CAACub,OAAL,CAAax3C,IAAb;AACH,aAFD;AAGH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,YAAI,CAAC,KAAKie,QAAV,EAAoB;AAChB,eAAK0vJ,SAAL,CAAenoF,IAAf;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,2BAAkB;AAAA;;AACd,YAAI,CAAC,KAAKpuD,SAAV,EAAqB;AACjB;AACH;;AACD,aAAKA,SAAL,GAAiB,KAAjB;;AACA,YAAIg0E,6EAAY,CAAC,KAAK1zD,MAAN,CAAZ,IACA0zD,6EAAY,CAAC,KAAK+gE,YAAN,CADZ,IAEA/gE,6EAAY,CAAC,KAAKp0G,KAAN,CAFZ,IAGA+sK,WAAW,CAAC,KAAKztD,OAAL,CAAa79G,aAAd,CAHf,EAG6C;AACzC,eAAKy0D,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,mBAAI,CAAC8kF,UAAL;;AACA,gBAAI,EAAE,OAAI,CAACjnH,MAAL,IAAe,OAAI,CAACo2K,WAAtB,CAAJ,EAAwC;AACpC,qBAAI,CAACkB,WAAL;AACH;;AACD,mBAAI,CAAC15H,MAAL,CAAY13C,IAAZ;;AACA,mBAAI,CAACwsK,iBAAL;AACH,WAPD;AAQH,SAZD,MAaK;AACD,cAAI,CAAC,KAAK0D,WAAV,EAAuB;AACnB,iBAAKkB,WAAL;AACH;;AACD,eAAKrwD,UAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,qBAAY56H,KAAZ,EAAmB;AACfA,QAAAA,KAAK,CAACkU,cAAN;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW;AACP,YAAI,KAAKQ,KAAT,EAAgB;AACZ,cAAM+yK,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,6BAAqB,KAAKviH,KAA1B;AAAA,cAAQg4B,GAAR,gBAAQA,GAAR;AAAA,cAAaD,GAAb,gBAAaA,GAAb;AACA2+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,UAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACH;AACJ;;;WACD,eAAe;AACX,YAAQklD,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WAUI,eAAW;AACP,YAAMi1F,OAAO,GAAG,KAAKA,OAArB;;AACA,YAAIA,OAAJ,EAAa;AACT,cAAM3nI,KAAK,GAAG2nI,OAAO,CAAChlE,IAAR,IAAgB,CAA9B;AACA,cAAM1iE,GAAG,GAAGD,KAAK,GAAG2nI,OAAO,CAACl9J,QAA5B,CAFS,CAGT;;AACAk9J,UAAAA,OAAO,CAAC31C,KAAR,GAAgB,KAAKi0C,WAAL,CAAiBhjL,IAAjB,CAAsBuX,MAAtC;AACA,iBAAO,KAAKyrK,WAAL,CAAiBhjL,IAAjB,CAAsByc,KAAtB,CAA4BsgC,KAA5B,EAAmCC,GAAnC,CAAP;AACH;;AACD,eAAO,KAAKgmI,WAAL,CAAiBhjL,IAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAzBI,aAASA,IAAT,EAAe;AACX,aAAKgjL,WAAL,CAAiBhjL,IAAjB,GAAwBA,IAAI,IAAI,EAAhC;;AACA,YAAI,KAAK0kL,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,YAAI,KAAKg1E,WAAT,EAAsB;AAClB,eAAKvI,QAAL,CAAc,KAAK/5K,KAAnB;AACH;AACJ;;;WA4BD,eAAY;AACR,eAAO,KAAKuhC,MAAZ;AACH;AACD;AACJ;AACA;;WAfI,aAAUmqI,MAAV,EAAkB;AACd,aAAKnqI,MAAL,GAAcmqI,MAAM,GAAGA,MAAH,GAAY,EAAhC;;AACA,YAAI,CAAC,KAAKgX,MAAN,IAAgB,KAAK1iL,KAAzB,EAAgC;AAC5B,eAAK0iL,MAAL,GAAc,KAAKX,OAAL,CAAaz8K,IAAb,CAAkB,KAAKtF,KAAvB,EAA8BG,MAA9B,EAAd;AACH;;AACD,aAAKwiL,mBAAL,GAA2B,IAA3B;;AACA,YAAI,KAAKL,WAAT,EAAsB;AAClB,eAAKvI,QAAL,CAAc,KAAK/5K,KAAnB;AACH;AACJ;;;WAUD,eAAe;AACX,eAAO,KAAKwqB,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAfI,aAAaotB,QAAb,EAAuB;AACnB,aAAKptB,QAAL,GAAgBotB,QAAhB;AACH;;;WAsBD,eAAW;AACP,eAAO,KAAKsgE,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WArBI,aAASjgH,IAAT,EAAe;AACX,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAU6pL,cAA9B;AACA,aAAKttL,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAlE;;AACA,YAAIA,IAAI,KAAK,MAAb,EAAqB;AACjB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAA/D;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAa1B,iBAAvC;AACA,aAAKhjH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAArE;;AACA,YAAIA,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAACzgB,UAAD,CAAlE;AACH;;AACD,aAAKhB,QAAL,GAAgBgB,UAAhB;AACH;;;WAsBD,eAAe;AACX,eAAO,KAAKf,SAAZ;AACH;AACD;AACJ;AACA;AACA;;WAdI,aAAatB,QAAb,EAAuB;AACnB,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAca,mBAA1C;AACA,aAAKnjH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAtE;;AACA,YAAIA,QAAQ,KAAK,MAAjB,EAAyB;AACrB,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAUzgB,WAAV,CAAnE;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;WAWD,eAAkB;AACd,eAAO,KAAKopE,iBAAL,CAAuBr9K,MAAvB,GAAgC,EAAhC,GAAqC,KAAKkpK,YAAjD;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAgBhmK,IAAhB,EAAsB;AAClB,aAAKgmK,YAAL,GAAoBhmK,IAAI,IAAI,EAA5B;AACH;;;WAQD,aAAiBo4B,EAAjB,EAAqB;AACjB,YAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;AAC1B,gBAAM,IAAIhsB,KAAJ,yDAA2D5F,IAAI,CAACC,SAAL,CAAe2xB,EAAf,CAA3D,OAAN;AACH;;AACD,aAAKswI,oBAAL,CAA0BF,YAA1B,GAAyCpwI,EAAzC;AACH;AACD;AACJ;AACA;;;;WAII,eAAiB;AACb,eAAO,KAAK8hJ,WAAZ;AACH;AACD;AACJ;AACA;;WARI,aAAezgE,QAAf,EAAyB;AACrB,aAAKygE,WAAL,GAAmB1B,2BAA2B,CAAC/+D,QAAD,CAA9C;AACH;;;WAUD,eAAc;AACV,eAAO,KAAK20D,gBAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAfI,aAAY30D,QAAZ,EAAsB;AAClB,aAAK20D,gBAAL,GAAwBhF,+BAA+B,CAAC3vD,QAAD,CAAvD;AACH;;;WAiBD,eAAoB;AAChB,eAAO,KAAK1C,cAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;WAVI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc;AAAElQ,UAAAA,OAAO,EAAE;AAAX,SAAd,EAAiCwlH,QAAjC,CAAtB;AACH;;;WAYD,eAAqB;AACjB,YAAI,CAACpM,SAAS,CAAC,KAAKukE,eAAN,CAAd,EAAsC;AAClC,iBAAO,CAACvkE,SAAS,CAAC,KAAKi2D,UAAN,CAAjB;AACH;;AACD,eAAO,KAAKsO,eAAZ;AACH;WARD,aAAmBlqF,WAAnB,EAAgC;AAC5B,aAAKkqF,eAAL,GAAuBlqF,WAAvB;AACH;;;WAOD,eAAU;AACN,eAAO,KAAK9pD,SAAZ;AACH;;;WACD,eAAoB;AAChB,eAAO,KAAK9e,QAAZ;AACH;;;WACD,eAAgB;AACZ,eAAO,KAAKy2D,OAAZ;AACH;;;WACD,eAAqB;AACjB,eAAO,KAAK56E,MAAZ;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc3T,KAAd,EAAqB;AACjB,YAAMyzJ,YAAY,GAAG,KAAK+zB,SAAL,CAAe1kK,KAAf,CAAqBxQ,aAA1C;;AACA,YAAItS,KAAK,CAAC6nD,MAAN,KAAiB,CAArB,EAAwB;AACpB,cAAI,KAAK5W,SAAL,IAAkB,KAAKt9B,MAAvB,IAAiC3T,KAAK,CAAC2J,MAAN,KAAiB8pJ,YAAtD,EAAoE;AAChE;AACH;;AACD,cAAI,CAAC,KAAK3uB,YAAN,IAAuB,KAAKA,YAAL,IAAqB9kI,KAAK,CAAC2J,MAAN,CAAaytF,OAAb,KAAyB,MAAzE,EAAkF;AAC9E,iBAAKowF,SAAL,CAAejlI,KAAf;AACH;;AACD,eAAKs1G,WAAL,CAAiB,CAAC,KAAKlkJ,MAAvB;AACA3T,UAAAA,KAAK,CAACkU,cAAN;AACH;AACJ;;;WACD,eAA2B;AACvB,YAAM0yK,gBAAgB,GAAG,CAAC,kBAAD,EAAqB,SAArB,CAAzB;;AACA,YAAI,KAAKxzD,aAAL,CAAmBpD,UAAvB,EAAmC;AAC/B42D,UAAAA,gBAAgB,CAAChxK,IAAjB,CAAsB,KAAKw9G,aAAL,CAAmBpD,UAAzC;AACH;;AACD,eAAO42D,gBAAP;AACH;AACD;AACJ;AACA;;;;WACI,eAA0B;AACtB,yBAAU,KAAKh+K,IAAL,GAAY0hI,YAAY,CAAC,MAAD,EAAS,KAAK1hI,IAAd,CAAxB,GAA8C,EAAxD;AACH;;;WACD,eAAY;AACR,YAAI89K,kBAAkB,GAAG,CAAzB;;AACA,YAAI5hE,oFAAmB,EAAvB,EAA2B;AACvB4hE,UAAAA,kBAAkB,GAAG,KAAKv2D,OAAL,CAAa79G,aAAb,CAA2BtB,WAAhD;AACH;;AACD,YAAMD,KAAK,GAAG,KAAKqiH,aAAL,CAAmBriH,KAAnB,IAA4B21K,kBAA1C;AACA,YAAM3sF,QAAQ,GAAG5wD,KAAK,CAACu9I,kBAAD,CAAL,GAA4BA,kBAA5B,aAAoDA,kBAApD,OAAjB;AACA,YAAMxU,QAAQ,GAAG/oI,KAAK,CAACp4B,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAjB;AACA,eAAO;AAAEg4B,UAAAA,GAAG,EAAEgxD,QAAP;AAAiBjxD,UAAAA,GAAG,EAAEopI;AAAtB,SAAP;AACH;;;WACD,eAAa;AACT,YAAMyU,WAAW,GAAG,KAAKvzD,aAAL,CAAmB9lH,MAAvC;AACA,eAAO+4G,SAAS,CAACsgE,WAAD,CAAT,aAA4BA,WAA5B,UAA8C,MAArD;AACH;;;WACD,eAAuB;AACnB,YAAMiM,eAAe,GAAG,KAAKA,eAA7B;AACA,YAAMW,gBAAgB,GAAG,KAAK94C,gBAAL,CAAsBziH,OAA/C;AACA,YAAIuzE,MAAJ;AACA,YAAI1wF,IAAJ;;AACA,YAAIwrG,SAAS,CAACusE,eAAD,CAAT,IAA8B,CAAC,KAAKj/K,MAAxC,EAAgD;AAC5CkH,UAAAA,IAAI,GAAG,KAAKi4K,IAAL,CAAUF,eAAV,CAAP;AACArnF,UAAAA,MAAM,GAAG,KAAK2mF,SAAd;AACH,SAHD,MAIK,IAAI7rE,SAAS,CAACktE,gBAAD,CAAT,IAA+BA,gBAAgB,KAAK,CAAC,CAArD,IAA0D,KAAK5/K,MAAnE,EAA2E;AAC5EkH,UAAAA,IAAI,GAAG,KAAK0mK,WAAL,CAAiBP,MAAjB,CAAwBuS,gBAAxB,CAAP;AACAhoF,UAAAA,MAAM,GAAG,KAAK46E,YAAd;AACH,SAHI,MAIA;AACD,iBAAO,IAAP;AACH;;AACD,eAAO56E,MAAM,GAAG,GAAT,GAAei0D,MAAM,CAAC3kJ,IAAD,EAAO,KAAKyhK,UAAZ,CAA5B;AACH;;;WACD,eAAkB;AACd,YAAI,KAAKiF,WAAL,CAAiBN,UAAjB,KAAgC,CAApC,EAAuC;AACnC,iBAAO,KAAKkG,UAAL,CAAgB,YAAhB,CAAP;AACH;AACJ;;;WACD,eAA2B;AACvB,YAAI,KAAKriD,YAAT,EAAuB;AACnB,iBAAO,SAAP;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,0BAAiB;AACb,YAAI,CAAClgB,yDAAS,EAAV,IAAgB,KAAKj0G,KAAL,CAAWmF,MAAX,KAAsB,CAA1C,EAA6C;AACzC;AACH;;AACD,YAAI,CAACo2C,OAAO,CAAC,KAAKv7C,KAAN,CAAZ,EAA0B;AACtB,gBAAM,IAAIyU,KAAJ,CAAUgkK,mBAAmB,CAAC1iI,KAA9B,CAAN;AACH;;AACD,YAAI,KAAKwkI,cAAL,KAAwB,IAAxB,IAAgCvO,aAAa,CAAC,KAAKhsK,KAAN,CAAjD,EAA+D;AAC3D,gBAAM,IAAIyU,KAAJ,CAAUgkK,mBAAmB,CAACiD,SAA9B,CAAN;AACH;;AACD,YAAI,KAAKnB,cAAL,KAAwB,KAAxB,IAAiC,CAACvO,aAAa,CAAC,KAAKhsK,KAAN,CAAnD,EAAiE;AAC7D,gBAAM,IAAIyU,KAAJ,CAAUgkK,mBAAmB,CAACzlE,MAA9B,CAAN;AACH;;AACD,YAAM2oE,WAAW,GAAG,CAACjmE,SAAS,CAAC,KAAKi2D,UAAN,CAAV,KAAgC,CAACj2D,SAAS,CAAC,KAAK6H,SAAN,CAA9D;;AACA,YAAIo+D,WAAJ,EAAiB;AACb,gBAAM,IAAIlnK,KAAJ,CAAUgkK,mBAAmB,CAACmD,YAA9B,CAAN;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAOvsL,KAAP,EAAc;AAAA;;AACV,YAAMwzL,YAAY,GAAG,CAACntE,SAAS,CAACrmH,KAAK,CAACqgL,KAAP,CAAT,IAA0Bh6D,SAAS,CAACrmH,KAAK,CAACsgL,OAAP,CAApC,MAAyDtgL,KAAK,CAACqgL,KAAN,KAAgB,CAAC,CAAjB,IAAsBrgL,KAAK,CAACsgL,OAAN,KAAkB,CAAC,CAAlG,CAArB;;AACA,YAAIkT,YAAJ,EAAkB;AACd,eAAKC,cAAL,CAAoB,KAAKz6K,IAAzB;AACA,iBAFc,CAEN;AACX,SALS,CAMV;;;AACA,YAAIqtG,SAAS,CAACrmH,KAAK,CAACqgL,KAAP,CAAb,EAA4B;AACxB,cAAMpyD,QAAQ,GAAG,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwBhhL,KAAK,CAACqgL,KAA9B,CAAjB;AACA,cAAMqT,OAAO,GAAI,KAAKxI,cAAL,IAAuB7kE,SAAS,CAAC4H,QAAD,CAAhC,IAA8C5H,SAAS,CAAC4H,QAAQ,CAAC,KAAKquD,UAAN,CAAT,CAAxD,GAAuFruD,QAAQ,CAAC,KAAKquD,UAAN,CAA/F,GAAmHruD,QAAnI;AACA,eAAKt9G,KAAL,gNAAiB,KAAKA,KAAtB,IAA6B+iL,OAA7B;AACH;;AACD,YAAIrtE,SAAS,CAACrmH,KAAK,CAACsgL,OAAP,CAAb,EAA8B;AAC1B,cAAMryD,SAAQ,GAAG,KAAKszD,WAAL,CAAiBP,MAAjB,CAAwBhhL,KAAK,CAACsgL,OAA9B,CAAjB;;AACA,cAAM9gL,OAAM,GAAG,SAATA,OAAS,CAACqb,IAAD;AAAA,mBAAU2kJ,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACyhK,UAAZ,CAAN,KAAkC9c,MAAM,CAACvxC,SAAD,EAAW,OAAI,CAACquD,UAAhB,CAAlD;AAAA,WAAf;;AACA,eAAK3rK,KAAL,GAAa,KAAKA,KAAL,CAAWnR,MAAX,CAAkBA,OAAlB,CAAb;AACA,eAAKi7I,gBAAL,CAAsBziH,OAAtB,GAAgCh4B,KAAK,CAACsgL,OAAtC;AACA,eAAKl7K,GAAL,CAASoC,aAAT;AACH;;AACD,aAAKmkL,eAAL;AACH;AACD;AACJ;AACA;;;;aACI,kBAASh7K,KAAT,EAAgB;AAAA;;AACZ,YAAIpS,IAAI,GAAG,KAAKgjL,WAAL,CAAiBhjL,IAA5B;;AACA,YAAI,KAAKgjL,WAAL,CAAiBf,OAArB,EAA8B;AAC1BjiL,UAAAA,IAAI,GAAGA,IAAI,CAACiB,MAAL,CAAY,UAAAqb,IAAI;AAAA,mBAAI,CAACA,IAAI,CAACisB,MAAV;AAAA,WAAhB,EAAkC33B,GAAlC,CAAsC,UAAA0L,IAAI;AAAA,mBAAIA,IAAI,CAAClK,KAAT;AAAA,WAA1C,CAAP;AACH;;AACD,YAAM07G,SAAS,GAAGuwD,eAAe,CAAC,KAAKjsK,KAAN,EAAapS,IAAb,EAAmB,KAAK+9K,UAAxB,CAAjC;AACA,aAAK7hC,gBAAL,CAAsBgsC,cAAtB,CAAqCp6D,SAArC;;AACA,YAAI,KAAKq1D,oBAAL,CAA0BM,eAA1B,CAA0C,KAAKvnC,gBAAL,CAAsBziH,OAAhE,CAAJ,EAA8E;AAC1E,eAAKyiH,gBAAL,CAAsBziH,OAAtB,GAAgC,KAAK6pJ,mBAAL,CAAyB,CAAzB,CAAhC;AACH;;AACD,YAAI,KAAKluK,MAAL,IAAe,KAAK8mI,gBAAL,CAAsBziH,OAAtB,KAAkC9J,SAArD,EAAgE;AAC5D,cAAI,KAAKqzJ,WAAL,CAAiBN,UAAjB,GAA8B,CAAlC,EAAqC;AACjC,iBAAKxmC,gBAAL,CAAsBziH,OAAtB,GAAgC,KAAK6pJ,mBAAL,CAAyB,CAAzB,CAAhC;AACH,WAFD,MAGK,IAAI,KAAKkI,WAAT,EAAsB;AACvB,iBAAKtvC,gBAAL,CAAsBziH,OAAtB,GAAgC,CAAC,CAAjC;AACH;AACJ;;AACD,YAAI,KAAKkzJ,cAAL,IAAuB,CAAC,KAAK5O,UAAjC,EAA6C;AACzC,eAAK6W,iBAAL,GAAyBxiL,KAAK,CAACqK,KAAN,EAAzB;AACH;;AACD,YAAI2hK,aAAa,CAAChsK,KAAD,CAAb,IAAwB,KAAKu6K,cAAL,IAAuB,KAAK5O,UAAxD,EAAoE;AAChE,eAAK6W,iBAAL,GAAyB3W,gBAAgB,CAAC7rK,KAAD,EAAQpS,IAAR,EAAc,KAAK+9K,UAAnB,CAAzC;AACH;;AACD,YAAI,KAAK6W,iBAAL,CAAuBr9K,MAAvB,GAAgCnF,KAAK,CAACmF,MAA1C,EAAkD;AAC9C,eAAKq9K,iBAAL,GAAyBxiL,KAAK,CACzBxB,GADoB,CAChB,UAAAkmC,OAAO,EAAI;AAChB,gBAAM44E,QAAQ,GAAG,OAAI,CAACklE,iBAAL,CAAuBl9K,IAAvB,CAA4B,UAAA4E,IAAI;AAAA,qBAAI2kJ,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACyhK,UAAZ,CAAN,KAAkC9c,MAAM,CAACnqH,OAAD,EAAU,OAAI,CAACinI,UAAf,CAA5C;AAAA,aAAhC,CAAjB;;AACA,mBAAOj2D,SAAS,CAAC4H,QAAD,CAAT,GAAsBA,QAAtB,GAAiC,OAAI,CAAC0lE,uBAAL,CAA6Bt+I,OAA7B,CAAxC;AACH,WAJwB,EAKpB71C,MALoB,CAKb,UAAAyuH,QAAQ;AAAA,mBAAI5H,SAAS,CAAC4H,QAAD,CAAb;AAAA,WALK,CAAzB;AAMH;;AACD,aAAK6kE,IAAL,GAAY,KAAKD,SAAL,CAAe,KAAKM,iBAAL,CAAuBn4K,KAAvB,CAA6B,CAA7B,CAAf,CAAZ;AACA,aAAK22K,eAAL,GAAuB,KAAKiC,mBAAL,EAAvB;AACA,aAAKxuL,GAAL,CAASS,YAAT;AACH;AACD;AACJ;AACA;;;;aACI,sBAAamT,IAAb,EAAmB;AACf,aAAKA,IAAL,GAAYA,IAAZ;;AACA,YAAIA,IAAI,IAAI,CAAC,KAAKrF,MAAlB,EAA0B;AACtB,eAAK8mH,SAAL;AACH;;AACD,YAAI,KAAKsrD,UAAT,EAAqB;AACjB,eAAKC,YAAL,CAAkBnsK,IAAlB,CAAuBb,IAAvB;AACH,SAFD,MAGK;AACD,eAAK66K,kBAAL,CAAwB76K,IAAxB;AACH;;AACD,aAAKwuK,SAAL,CAAetI,YAAf;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWl/K,KAAX,EAAkB;AACd,YAAMijL,OAAO,GAAG,KAAKA,OAArB;AACAA,QAAAA,OAAO,CAAChlE,IAAR,GAAej+G,KAAK,CAACi+G,IAArB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,YAAI,KAAK8nE,UAAL,IAAmB,KAAK/sK,IAA5B,EAAkC;AAC9B,eAAKgtK,YAAL,CAAkBnsK,IAAlB,CAAuB,EAAvB;AACH;;AACD,aAAKb,IAAL,GAAY,EAAZ;AACA;AACR;AACA;;AACQ,aAAKwuK,SAAL,CAAe1kK,KAAf,CAAqBxQ,aAArB,CAAmC3B,KAAnC,GAA2C,EAA3C;AACA,aAAK62K,SAAL,CAAetI,YAAf;AACH;AACD;AACJ;AACA;;;;aACI,wBAAel/K,KAAf,EAAsB;AAClB,YAAM8zL,aAAa,GAAG,KAAK96K,IAAL,IAAahZ,KAAK,CAAC+9F,OAAN,KAAkBgnB,2EAA/B,IAAiD/kH,KAAK,CAAC+9F,OAAN,KAAkBgnB,yEAAzF;AACA,YAAMgvE,WAAW,GAAG,KAAK/6K,IAAL,IAAahZ,KAAK,CAAC+9F,OAAN,KAAkBgnB,uEAA/B,IAA6C/kH,KAAK,CAAC+9F,OAAN,KAAkBgnB,wEAAnF;AACA,YAAMivE,SAAS,GAAG,CAAC,KAAKh7K,IAAN,IAAchZ,KAAK,CAAC+9F,OAAN,KAAkBgnB,2EAAhC,IAAkD,KAAK+tE,IAAL,CAAUh9K,MAAV,GAAmB,CAAvF;;AACA,YAAIk+K,SAAJ,EAAe;AACX,eAAKC,eAAL;AACA;AACH;;AACD,YAAI,KAAKn8J,QAAL,IAAiBg8J,aAAa,IAAI,CAACC,WAAvC,EAAoD;AAChD;AACH;;AACD,YAAM3iE,SAAS,GAAGpxH,KAAlB;AACA,YAAMg4B,OAAO,GAAGmR,KAAK,CAAC,KAAKsxG,gBAAL,CAAsBziH,OAAvB,CAAL,GAAuC,CAAC,CAAxC,GAA4C,KAAKyiH,gBAAL,CAAsBziH,OAAlF;AACA,YAAMo/E,MAAM,GAAG,KAAKwY,iBAAL,CAAuByB,OAAvB,CAA+B;AAC1Ch8E,UAAAA,OAAO,EAAErd,OADiC;AAE1C8Q,UAAAA,GAAG,EAAE,KAAKy4I,WAAL,CAAiBN,UAAjB,GAA8B,CAFO;AAG1Cl4I,UAAAA,GAAG,EAAE,KAAKghJ,WAAL,IAAoB,KAAK/wK,IAAzB,GAAgC,CAAC,CAAjC,GAAqC,CAHA;AAI1ClE,UAAAA,IAAI,EAAE,KAAKnB,MAJ+B;AAK1C6hH,UAAAA,aAAa,EAAEpE;AAL2B,SAA/B,CAAf;;AAOA,YAAIha,MAAM,KAAKoX,gBAAgB,CAACQ,SAA5B,KACE5X,MAAM,KAAKoX,gBAAgB,CAAC5pE,KAA5B,IAAqC,KAAKjxC,MAA3C,IAAsDyjG,MAAM,KAAKoX,gBAAgB,CAAC5pE,KADnF,CAAJ,EAC+F;AAC3F5kD,UAAAA,KAAK,CAACkU,cAAN;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iCAAyB;AAAA,YAAPorF,GAAO,UAAPA,GAAO;AACrB,YAAM6tB,SAAS,GAAG,IAAIokE,cAAJ,CAAmBjyF,GAAnB,CAAlB;;AACA,YAAI,KAAKxnE,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,aAAK0f,KAAL;AACA,aAAKqvI,SAAL,CAAe/3K,IAAf,CAAoBszG,SAApB;;AACA,YAAIA,SAAS,CAACC,kBAAV,EAAJ,EAAoC;AAChC;AACH;;AACD,YAAI9tB,GAAG,YAAY3/E,KAAnB,EAA0B;AACtB,eAAKu0K,cAAL,CAAoB50F,GAApB;AACH,SAFD,MAGK;AACD,eAAK60F,eAAL,CAAqB70F,GAArB;AACH;;AACD,aAAKl6F,GAAL,CAASoC,aAAT;AACH;AACD;AACJ;AACA;;;;aACI,kBAASxH,KAAT,EAAgB;AAAA;;AACZA,QAAAA,KAAK,CAACunL,wBAAN;AACAvnL,QAAAA,KAAK,CAACkU,cAAN;AACA,aAAKquC,KAAL;AACA,aAAK0oI,WAAL;AACA,YAAMrzJ,QAAQ,GAAG,KAAK6iH,gBAAL,CAAsB7iH,QAAvC;AACA,aAAKjnB,KAAL,GAAa,KAAKA,KAAL,CAAWnR,MAAX,CAAkB,UAAC40L,KAAD,EAAQn4J,KAAR;AAAA,iBAAkB,OAAI,CAACylJ,oBAAL,CAA0BM,eAA1B,CAA0CpqJ,QAAQ,CAACqE,KAAD,CAAlD,CAAlB;AAAA,SAAlB,CAAb;AACA,aAAK0vJ,eAAL;AACH;AACD;AACJ;AACA;;;;aACI,wBAAe3yK,IAAf,EAAqB;AACjB,aAAKuxK,kBAAL,CAAwBntK,IAAxB,CAA6BpE,IAA7B;AACH;;;aACD,iCAAwB;AACpB,aAAKg0G,cAAL;AACH;;;aACD,qBAAY;AACR,YAAMsxC,YAAY,GAAG,KAAK+0B,MAAL,IAAe,KAAKA,MAAL,CAAYt8H,IAAZ,CAAiB,KAAKpmD,KAAtB,CAApC;;AACA,YAAI2tJ,YAAY,IAAI,CAAC,KAAKg1B,mBAA1B,EAA+C;AAC3C,eAAK5I,QAAL,CAAc,KAAK/5K,KAAnB;AACH;;AACD,aAAK2iL,mBAAL,GAA2B,KAA3B;AACH;;;aACD,oBAAW;AAAA;;AACP,aAAKnuL,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAL,CAAa79G,aAA3C,EAA0D,UAA1D;AACA,aAAK+hL,uBAAL;AACA,aAAKlpC,8BAAL,GAAsC,KAAK3iC,YAAL,CACjCv5G,OADiC,CACzBhP,SADyB,CACf,kBAAa;AAAA,cAAVkpH,GAAU,UAAVA,GAAU;AAChC,iBAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA/B;;AACA,iBAAI,CAAC/jH,GAAL,CAASS,YAAT;AACH,SAJqC,CAAtC;AAKA,aAAK6kL,QAAL,CAAc,KAAK/5K,KAAnB;AACA,aAAKsjJ,mBAAL;AACA,aAAKg/B,WAAL,GAAmB,IAAnB;AACH;;;aACD,qBAAYhkL,OAAZ,EAAqB;AACjB,YAAMg0K,OAAO,GAAG,KAAKA,OAArB;AACA,YAAMqE,kBAAkB,GAAGrE,OAAO,IAAIh0K,OAAO,CAAC1Q,IAAnB,IAA2B0Q,OAAO,CAAC1Q,IAAR,CAAagjE,aAAb,EAAtD;;AACA,YAAI+lH,kBAAJ,EAAwB;AACpB,eAAK93G,UAAL,CAAgB;AAAEyuC,YAAAA,IAAI,EAAE,CAAR;AAAWhsF,YAAAA,IAAI,EAAEgxJ,OAAO,CAACl9J;AAAzB,WAAhB;AACH;;AACD,YAAIi/F,0EAAS,CAAC,iBAAD,EAAoB/1G,OAApB,CAAb,EAA2C;AACvC,eAAKolL,uBAAL;AACH;;AACD,YAAIr3D,2EAAU,CAAC,CAAC,WAAD,EAAc,YAAd,EAA4B,gBAA5B,CAAD,EAAgD/tH,OAAhD,CAAd,EAAwE;AACpE,eAAKy7K,QAAL,CAAc,KAAK/5K,KAAnB;AACH;AACJ;;;aACD,2BAAkB;AACd,aAAK62K,SAAL,CAAetI,YAAf;AACH;;;aACD,uBAAc;AACV,aAAKxsD,OAAL,CAAa,KAAb;;AACA,aAAK20D,iBAAL;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,gBAAOvyK,IAAP,EAAa;AAAA;;AACT;AACA;AACA1G,QAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B,YAAM;AAC7B,cAAM07H,UAAU,GAAGrT,SAAS,CAACvxG,IAAD,CAAT,GAAkBA,IAAlB,GAAyB,CAAC,OAAI,CAACJ,KAAlD;;AACA,iBAAI,CAACg+G,OAAL,CAAagH,UAAb;;AACA,iBAAI,CAACt0H,GAAL,CAASS,YAAT;AACH,SAJD;AAKH;AACD;AACJ;AACA;;;;WACI,eAAa;AACT,eAAO,KAAK6O,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAKsE,IAAL,GAAY,EAAZ;AACA,aAAKrI,KAAL,GAAa,EAAb;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW8K,GAAX,EAAgB;AACZ,eAAO,KAAK+sG,YAAL,CAAkBnsG,GAAlB,CAAsBZ,GAAtB,CAAP;AACH,QACD;;AACA;AACJ;AACA;;;;aACI,oBAAW9K,KAAX,EAAkB;AACd,aAAKA,KAAL,GAAaA,KAAK,IAAI,EAAtB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKg1I,gBAAL,GAAwBh1I,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKi1I,iBAAL,GAAyBj1I,EAAzB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,UAAjB,EAA6B;AACzB,aAAKvZ,QAAL,GAAgBuZ,UAAhB;AACH;AACD;AACJ;AACA;;;;aACI,6BAAoB;AAChB,aAAKyhJ,IAAL,GAAY,KAAKD,SAAL,CAAe,KAAKM,iBAAL,CAAuBn4K,KAAvB,CAA6B,CAA7B,CAAf,CAAZ;AACA,aAAK5V,GAAL,CAASS,YAAT;AACH;;;WAKD,eAAgB;AACZ,eAAO,KAAKqqH,UAAZ;AACH;WAND,aAAcj/E,SAAd,EAAyB;AACrB,aAAK9rC,QAAL,CAAc8rC,SAAS,GAAG,UAAH,GAAgB,aAAvC,EAAsD,KAAKk/E,OAAL,CAAa79G,aAAnE,EAAkF,SAAlF;AACA,aAAK49G,UAAL,GAAkBj/E,SAAlB;AACH;;;aAID,2BAAkB;AAAA;;AACd,YAAI,CAAC6zE,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,YAAMnxG,MAAM,GAAG,SAATA,MAAS;AAAA,iBAAM,OAAI,CAACA,MAAX;AAAA,SAAf;;AACA,YAAM2gL,QAAQ,GAAG,SAAXA,QAAW;AAAA,iBAAM,CAAC,OAAI,CAAC3gL,MAAZ;AAAA,SAAjB;;AACA,YAAM4gL,YAAY,GAAG,SAAfA,YAAe;AAAA,iBAAM,CAAC,OAAI,CAAC5gL,MAAN,IAAgB,OAAI,CAACi/K,eAAL,KAAyB1kK,SAA/C;AAAA,SAArB;;AACA,SACI,KAAKusH,gBAAL,CAAsB1pG,QAAtB,CAA+B9wC,SAA/B,CAAyC,KAAKgoL,gBAAL,CAAsB79K,IAAtB,CAA2B,IAA3B,CAAzC,CADJ,EAEI,KAAKwlH,iBAAL,CAAuBf,GAAvB,CAA2B5uH,SAA3B,CAAqC,KAAK26H,UAAL,CAAgBxwH,IAAhB,CAAqB,IAArB,CAArC,CAFJ,EAGI,KAAKwlH,iBAAL,CAAuBptF,KAAvB,CAA6BziC,IAA7B,CAAkCP,uDAAM,CAACmU,MAAD,CAAxC,EAAkD1T,SAAlD,CAA4D,KAAKqoL,WAAL,CAAiBl+K,IAAjB,CAAsB,IAAtB,CAA5D,CAHJ,EAII,KAAKwlH,iBAAL,CAAuB96G,IAAvB,CAA4B7U,SAA5B,CAAsC,KAAKw6H,SAAL,CAAerwH,IAAf,CAAoB,IAApB,CAAtC,CAJJ,EAKI,KAAKwlH,iBAAL,CAAuB/+G,KAAvB,CAA6B5Q,SAA7B,CAAuC,KAAKu0L,WAAL,CAAiBpqL,IAAjB,CAAsB,IAAtB,CAAvC,CALJ,EAMI,KAAKwlH,iBAAL,CAAuBqwB,EAAvB,CAA0BlgJ,IAA1B,CAA+BP,uDAAM,CAACmU,MAAD,CAArC,EAA+C1T,SAA/C,CAAyD,UAACD,KAAD;AAAA,iBAAW,OAAI,CAACy0L,QAAL,CAAcz0L,KAAK,CAACi8B,KAApB,CAAX;AAAA,SAAzD,CANJ,EAOI,KAAK2zF,iBAAL,CAAuB+xD,IAAvB,CAA4B5hL,IAA5B,CAAiCP,uDAAM,CAAC;AAAA,iBAAM80L,QAAN;AAAA,SAAD,CAAvC,EAAyDr0L,SAAzD,CAAmE,KAAKy0L,UAAL,CAAgBtqL,IAAhB,CAAqB,IAArB,CAAnE,CAPJ,EAQI,KAAKwlH,iBAAL,CAAuBr0E,GAAvB,CAA2Bx7C,IAA3B,CAAgCP,uDAAM,CAAC;AAAA,iBAAM80L,QAAN;AAAA,SAAD,CAAtC,EAAwDr0L,SAAxD,CAAkE,KAAK00L,SAAL,CAAevqL,IAAf,CAAoB,IAApB,CAAlE,CARJ,EASI,KAAKwlH,iBAAL,CAAuBkjC,SAAvB,CAAiC/yJ,IAAjC,CAAsCP,uDAAM,CAAC+0L,YAAD,CAA5C,EAA4Dt0L,SAA5D,CAAsE,KAAKg0L,eAAL,CAAqB7pL,IAArB,CAA0B,IAA1B,CAAtE,CATJ,EAUI,KAAKwlH,iBAAL,CAAuB1pG,MAAvB,CAA8BnmB,IAA9B,CAAmCP,uDAAM,CAAC+0L,YAAD,CAAzC,EAAyDt0L,SAAzD,CAAmE,KAAK20L,YAAL,CAAkBxqL,IAAlB,CAAuB,IAAvB,CAAnE,CAVJ,EAWI,KAAKwlH,iBAAL,CAAuBnmH,IAAvB,CAA4BxJ,SAA5B,CAAsC,KAAK22C,SAAL,KAAmB,KAAnB,GAA2B,KAAKi+I,cAAL,CAAoBzqL,IAApB,CAAyB,IAAzB,CAA3B,GAA4D,KAAK0qL,aAAL,CAAmB1qL,IAAnB,CAAwB,IAAxB,CAAlG,CAXJ,EAYI,KAAKwlH,iBAAL,CAAuB/lE,KAAvB,CAA6B5pD,SAA7B,CAAuC,KAAK22C,SAAL,KAAmB,KAAnB,GAA2B,KAAKk+I,aAAL,CAAmB1qL,IAAnB,CAAwB,IAAxB,CAA3B,GAA2D,KAAKyqL,cAAL,CAAoBzqL,IAApB,CAAyB,IAAzB,CAAlG,CAZJ,EAaI,KAAKwlH,iBAAL,CAAuBioD,IAAvB,CAA4B53K,SAA5B,CAAsC,UAACD,KAAD;AAAA,iBAAW,OAAI,CAAC+0L,aAAL,CAAmB/0L,KAAK,CAACi8B,KAAzB,CAAX;AAAA,SAAtC,CAbJ,EAcE51B,OAdF,CAcU,UAAA6jC,CAAC;AAAA,iBAAI,OAAI,CAACkpJ,uBAAL,CAA6B7gJ,GAA7B,CAAiCrI,CAAjC,CAAJ;AAAA,SAdX;AAeH;;;aACD,gCAAuB;AAAA;;AACnB,YAAI,CAAC46E,oFAAmB,EAApB,IAA0B,CAAC,KAAKggB,YAApC,EAAkD;AAC9C;AACH;;AACD,aAAK/9D,KAAL,CAAW7xB,iBAAX,CAA6B;AAAA,iBAC7B;AACA,mBAAI,CAACszI,wBAAL,GAAgC,OAAI,CAACrjL,QAAL,CAAc0tE,MAAd,CAAqB3tE,QAArB,EAA+B,YAA/B,EAA6C,UAACmE,CAAD,EAAO;AAChF,kBAAMM,MAAM,GAAGN,CAAC,CAACM,MAAjB;;AACA,kBAAI,CAAC,OAAI,CAACsnC,SAAL,IAAkB,OAAI,CAACt9B,MAAxB,KAAmC,CAACsqK,UAAU,CAAC,OAAI,CAAC9tD,OAAN,EAAexmH,MAAf,EAAuB,OAAI,CAACspH,QAA5B,CAAlD,EAAyF;AACrF,uBAAI,CAAClsD,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,yBAAI,CAACupD,IAAL;;AACA,sBAAI,OAAI,CAAC1rF,MAAT,EAAiB;AACb,2BAAI,CAACkkJ,WAAL,CAAiB,KAAjB;AACH;AACJ,iBALD;AAMH;AACJ,aAV+B;AAFH;AAAA,SAA7B;AAaH;;;aACD,6BAAoB;AAChB,YAAI,CAAC/yC,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,aAAKsuE,uBAAL,CAA6BhzL,WAA7B;;AACA,YAAI,KAAK40L,uBAAT,EAAkC;AAC9B,eAAKA,uBAAL,CAA6B50L,WAA7B;AACH;;AACD,YAAI,KAAK+qJ,8BAAT,EAAyC;AACrC,eAAKA,8BAAL,CAAoC/qJ,WAApC;AACH;;AACD,YAAI,KAAKooL,wBAAT,EAAmC;AAC/B,eAAKA,wBAAL;AACH;AACJ;;;aACD,wBAAeyM,SAAf,EAA0B;AAAA;;AACtB,YAAI12L,IAAI,GAAG,KAAKgjL,WAAL,CAAiBhjL,IAA5B;;AACA,YAAI,KAAKgjL,WAAL,CAAiBf,OAArB,EAA8B;AAC1BjiL,UAAAA,IAAI,GAAGA,IAAI,CAACiB,MAAL,CAAY,UAAAqb,IAAI;AAAA,mBAAI,CAACA,IAAI,CAACisB,MAAV;AAAA,WAAhB,EAAkC33B,GAAlC,CAAsC,UAAA0L,IAAI;AAAA,mBAAIA,IAAI,CAAClK,KAAT;AAAA,WAA1C,CAAP;AACH;;AACD,YAAMukL,cAAc,GAAG,IAAIjjJ,GAAJ,CAAQgjJ,SAAS,CAAC9lL,GAAV,CAAc,UAAA0L,IAAI;AAAA,iBAAI2kJ,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACyhK,UAAZ,CAAV;AAAA,SAAlB,CAAR,CAAvB;AACA,aAAK3rK,KAAL,GAAa,KAAKA,KAAL,CAAWnR,MAAX,CAAkB,UAAAmR,KAAK,EAAI;AACpC,cAAMsrB,KAAK,GAAG2gJ,eAAe,CAAC,CAACjsK,KAAD,CAAD,EAAUpS,IAAV,EAAgB,OAAI,CAAC+9K,UAArB,CAAf,CAAgD,CAAhD,CAAd;;AACA,cAAM6Y,kBAAkB,GAAG,OAAI,CAACzT,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAA3B;;AACA,iBAAO,CAACi5J,cAAc,CAAC9jD,GAAf,CAAmBouB,MAAM,CAAC7uJ,KAAD,EAAQ,OAAI,CAAC2rK,UAAb,CAAzB,CAAD,IAAuD6Y,kBAA9D;AACH,SAJY,CAAb;AAKA,aAAKxJ,eAAL;AACH;;;aACD,yBAAgB19D,QAAhB,EAA0B;AAAA;;AACtB,YAAI1vH,IAAI,GAAG,KAAKgjL,WAAL,CAAiBhjL,IAA5B;;AACA,YAAI,KAAKgjL,WAAL,CAAiBf,OAArB,EAA8B;AAC1BjiL,UAAAA,IAAI,GAAGA,IAAI,CAACiB,MAAL,CAAY,UAAAqb,IAAI;AAAA,mBAAI,CAACA,IAAI,CAACisB,MAAV;AAAA,WAAhB,EAAkC33B,GAAlC,CAAsC,UAAA0L,IAAI;AAAA,mBAAIA,IAAI,CAAClK,KAAT;AAAA,WAA1C,CAAP;AACH;;AACD,YAAMsrB,KAAK,GAAG2gJ,eAAe,CAAC,CAAC3uD,QAAD,CAAD,EAAa1vH,IAAb,EAAmB,KAAK+9K,UAAxB,CAAf,CAAmD,CAAnD,CAAd;;AACA,YAAI,KAAKoF,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD;AACH;;AACD,YAAIiN,QAAQ,CAACjN,KAAD,CAAZ,EAAqB;AACjB,eAAKw+G,gBAAL,CAAsBjyD,QAAtB,CAA+BvsD,KAA/B;AACA,eAAKw+G,gBAAL,CAAsBziH,OAAtB,GAAgCiE,KAAhC;AACA,eAAK47H,WAAL,CAAiB,KAAjB;AACH,SAJD,MAKK;AAAE;AACH,cAAMr4J,QAAM,GAAG,SAATA,QAAS,CAAAqb,IAAI;AAAA,mBAAI2kJ,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACyhK,UAAZ,CAAN,KAAkC9c,MAAM,CAACvxC,QAAD,EAAW,OAAI,CAACquD,UAAhB,CAA5C;AAAA,WAAnB;;AACA,eAAK3rK,KAAL,GAAa,KAAKA,KAAL,CAAWnR,MAAX,CAAkBA,QAAlB,CAAb;AACA,eAAKmsL,eAAL;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,+BAAsB;AAAA;;AAClB,YAAQ/zJ,QAAR,GAAqB,KAAK6iH,gBAA1B,CAAQ7iH,QAAR;AACA,eAAO,IAAIqa,GAAJ,CAAQ,KAAKkhJ,iBAAL,CAAuB5zI,MAAvB,CAA8B,UAAC4gI,OAAD,EAAUiU,KAAV,EAAiBn4J,KAAjB,EAA2B;AACpE,cAAI,OAAI,CAACylJ,oBAAL,CAA0BM,eAA1B,CAA0CpqJ,QAAQ,CAACqE,KAAD,CAAlD,CAAJ,EAAgE;AAC5DkkJ,YAAAA,OAAO,CAACvqK,IAAR,CAAaqmB,KAAb;AACH;;AACD,iBAAOkkJ,OAAP;AACH,SALc,EAKZ,EALY,CAAR,CAAP;AAMH;;;aACD,mCAA0B;AAAA;;AACtB,YAAI,KAAK6U,uBAAT,EAAkC;AAC9B,eAAKA,uBAAL,CAA6B50L,WAA7B;AACH;;AACD,aAAK40L,uBAAL,GAA+B,KAAKzK,kBAAL,CAAwBxqL,IAAxB,CAA6BmyB,oDAAG,CAAC,YAAM;AAClE,iBAAI,CAACq8D,OAAL,GAAe,IAAf;AACA,iBAAI,CAACz2D,QAAL,GAAgB,IAAhB;;AACA,iBAAI,CAAC1yB,GAAL,CAASoC,aAAT;AACH,SAJ8D,CAAhC,EAI3B,KAAKwiL,eAJsB,EAILhqK,2DAAU,CAAC,YAAM;AACvC,iBAAI,CAACuuE,OAAL,GAAe,KAAf;AACA,iBAAI,CAACz2D,QAAL,GAAgB,KAAhB;;AACA,cAAI,OAAI,CAAC61B,SAAT,EAAoB;AAChB,mBAAI,CAACkqG,WAAL,CAAiB,KAAjB;AACH;;AACD,cAAI,OAAI,CAAClqG,SAAL,IAAkB,CAAC,OAAI,CAACo4H,UAA5B,EAAwC;AACpC,mBAAI,CAACkF,WAAL;AACH;;AACD,iBAAI,CAAC4C,QAAL,CAAc,YAAM;AAChB,mBAAI,CAACrG,SAAL,CAAejlI,KAAf;AACH,WAFD;;AAGA,iBAAI,CAAC8xI,uBAAL;;AACA,iBAAOvwF,yCAAE,CAAC,IAAD,CAAT;AACH,SAdmC,CAJL,EAmB1B7jG,SAnB0B,CAmBhB,UAAC+9K,eAAD,EAAqB;AAChC,iBAAI,CAACzvF,OAAL,GAAe,KAAf;AACA,iBAAI,CAACz2D,QAAL,GAAgB,KAAhB;;AACA,cAAIuuF,SAAS,CAAC23D,eAAD,CAAb,EAAgC;AAAE;AAC9B,gBAAM52D,QAAQ,GAAG,OAAI,CAAC8jE,cAAL,GAAsB1rB,MAAM,CAACwe,eAAD,EAAkB,OAAI,CAAC1B,UAAvB,CAA5B,GAAiE0B,eAAlF;;AACA,gBAAM37B,SAAS,GAAG,OAAI,CAACk/B,WAAL,CAAiBr9J,OAAjB,CAAyBkjG,QAAzB,CAAlB;;AACA,gBAAMguE,UAAU,GAAG/yC,SAAS,KAAK,CAAC,CAAlC;;AACA,gBAAI,OAAI,CAAC1xI,KAAL,CAAWuT,OAAX,CAAmBkjG,QAAnB,MAAiC,CAAC,CAAtC,EAAyC;AACrC,qBAAI,CAAC0rE,IAAL,GAAY,OAAI,CAACD,SAAL,8MAAmB,OAAI,CAACM,iBAAxB,IAA2CnV,eAA3C,GAAZ;;AACA,kBAAI,CAACoX,UAAL,EAAiB;AACb,uBAAI,CAAC36C,gBAAL,CAAsBloG,GAAtB,CAA0B8vG,SAA1B;AACH,eAFD,MAGK;AACD,uBAAI,CAAC1xI,KAAL,gNAAiB,OAAI,CAACA,KAAtB,IAA6By2G,QAA7B;AACH;AACJ,aARD,MASK;AACD,kBAAI,CAACguE,UAAD,IAAe,OAAI,CAAC36C,gBAAL,CAAsBjO,UAAtB,CAAiC6V,SAAjC,CAAnB,EAAgE;AAC5D,uBAAI,CAAC5H,gBAAL,CAAsBjyD,QAAtB,CAA+B65D,SAA/B;;AACA,uBAAI,CAAC5H,gBAAL,CAAsBziH,OAAtB,GAAgCqqH,SAAhC;AACH,eAHD,MAIK;AACD,uBAAI,CAAC1xI,KAAL,GAAa,OAAI,CAACA,KAAL,CAAWnR,MAAX,CAAkB,UAAAqb,IAAI;AAAA,yBAAI2kJ,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACyhK,UAAZ,CAAN,KAAkCl1D,QAAtC;AAAA,iBAAtB,CAAb;AACH;AACJ;;AACD,mBAAI,CAACukE,eAAL;AACH;;AACD,cAAI,OAAI,CAACh+H,SAAT,EAAoB;AAChB,mBAAI,CAACkqG,WAAL,CAAiB,KAAjB;AACH;;AACD,cAAI,OAAI,CAAClqG,SAAL,IAAkB,CAAC,OAAI,CAACo4H,UAA5B,EAAwC;AACpC,mBAAI,CAACkF,WAAL;AACH;;AACD,iBAAI,CAAC4C,QAAL,CAAc,YAAM;AAChB,mBAAI,CAACrG,SAAL,CAAejlI,KAAf;AACH,WAFD;AAGH,SAvD8B,CAA/B;AAwDH;;;aACD,0BAAiBviD,KAAjB,EAAwB;AACpB,aAAKygB,MAAL,CAAYzgB,KAAZ;;AACA,YAAI,KAAK2tD,SAAT,EAAoB;AAChB,eAAKkqG,WAAL,CAAiB,KAAjB;AACH;;AACD,YAAI,KAAKlqG,SAAL,IAAkB,CAAC,KAAKo4H,UAA5B,EAAwC;AACpC,eAAKkF,WAAL;AACH;AACJ;;;aACD,qBAAYjrL,KAAZ,EAAmB;AACf,YAAMmqB,OAAO,GAAG,KAAKswH,gBAArB;AACA,YAAM/tB,YAAY,GAAG,KAAK+tB,gBAAL,CAAsBziH,OAA3C;;AACA,YAAI,KAAKrkB,MAAT,EAAiB;AACb3T,UAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;AACH;;AACD,YAAIw4G,YAAY,KAAK,CAAC,CAAtB,EAAyB;AACrB,cAAI,KAAKq9D,WAAL,IAAoB,KAAK/wK,IAA7B,EAAmC;AAC/B,iBAAKy6K,cAAL,CAAoB,KAAKz6K,IAAzB;AACH;;AACD,iBAJqB,CAIb;AACX;;AACD,YAAImR,OAAO,CAACqiH,UAAR,CAAmB9f,YAAnB,CAAJ,EAAsC;AAClCviG,UAAAA,OAAO,CAACq+D,QAAR,CAAiBkkC,YAAjB;AACAviG,UAAAA,OAAO,CAAC6N,OAAR,GAAkB00F,YAAlB;AACH,SAHD,MAIK;AACDviG,UAAAA,OAAO,CAACooB,GAAR,CAAYm6E,YAAZ;AACH;;AACD,YAAI,KAAK/+D,SAAT,EAAoB;AAChB,eAAKkqG,WAAL,CAAiB,KAAjB;AACH;;AACD,YAAI,KAAKlqG,SAAL,IAAkB,CAAC,KAAKo4H,UAA5B,EAAwC;AACpC,eAAKkF,WAAL;AACH;AACJ;;;aACD,uBAAc;AACV,aAAKrwD,UAAL;AACA,aAAK4sD,SAAL,CAAejlI,KAAf;AACH;;;aACD,qBAAY;AACR,aAAKqwI,eAAL,GAAuB,KAAKE,IAAL,CAAUh9K,MAAV,GAAmB,CAA1C;AACH;;;aACD,sBAAa;AACT,aAAK88K,eAAL,GAAuB,CAAvB;AACH;;;aACD,kBAAS32J,KAAT,EAAgB;AACZ,aAAKw+G,gBAAL,CAAsBziH,OAAtB,GAAgCiE,KAAhC;AACH;;;aACD,2BAAkB;AACd,YAAI,KAAK22J,eAAL,KAAyB1kK,SAA7B,EAAwC;AACpC,eAAK0mK,YAAL;AACH,SAFD,MAGK;AACD,eAAKS,eAAL,CAAqB;AAAE/1F,YAAAA,GAAG,EAAE,KAAKwzF,IAAL,CAAU,KAAKA,IAAL,CAAUh9K,MAAV,GAAmB,CAA7B;AAAP,WAArB;AACA,eAAK0xK,SAAL,CAAejlI,KAAf;AACH;AACJ;;;aACD,wBAAe;AACX,aAAK8yI,eAAL,CAAqB;AAAE/1F,UAAAA,GAAG,EAAE,KAAKwzF,IAAL,CAAU,KAAKF,eAAf;AAAP,SAArB;;AACA,YAAI,KAAKA,eAAL,KAAyB,KAAKE,IAAL,CAAUh9K,MAAvC,EAA+C;AAC3C,eAAK88K,eAAL,GAAuB1kK,SAAvB;AACH;AACJ;;;aACD,yBAAgB;AACZ,YAAI,KAAK0kK,eAAL,KAAyB1kK,SAAzB,IAAsC,KAAK0kK,eAAL,GAAuB,CAAjE,EAAoE;AAChE,eAAKA,eAAL,GAAuB,KAAKE,IAAL,CAAUh9K,MAAV,GAAmB,CAA1C;AACH,SAFD,MAGK,IAAI,KAAK88K,eAAL,KAAyB,CAA7B,EAAgC;AACjC,eAAKA,eAAL;AACH;AACJ;;;aACD,uBAAc32J,KAAd,EAAqB;AACjB,YAAI,KAAKtoB,MAAT,EAAiB;AACb,eAAK8mI,gBAAL,CAAsBziH,OAAtB,GAAgCiE,KAAK,IAAI,KAAK4lJ,mBAAL,CAAyB,CAAzB,CAAzC;AACH,SAFD,MAGK;AACD,eAAKpnD,SAAL;AACH;AACJ;;;aACD,0BAAiB;AACb,YAAM1xE,IAAI,GAAG,KAAK+pI,IAAL,CAAUh9K,MAAV,GAAmB,CAAhC;;AACA,YAAI,KAAK88K,eAAL,KAAyB7pI,IAA7B,EAAmC;AAC/B,eAAK6pI,eAAL,GAAuB1kK,SAAvB;AACH,SAFD,MAGK,IAAI,KAAK0kK,eAAL,GAAuB7pI,IAA3B,EAAiC;AAClC,eAAK6pI,eAAL;AACH;AACJ;;;aACD,mBAAU55K,IAAV,EAAgC;AAAA;;AAAA,YAAhBs8K,UAAgB,uEAAH,CAAG;AAC5B,YAAInM,QAAJ;AACAnwK,QAAAA,IAAI,GAAGA,IAAI,CAAC8B,WAAL,EAAP;AACA,YAAImhB,KAAK,GAAG,KAAKslJ,WAAL,CAAiBnmI,SAAjB,CAA2B,UAAAvgC,IAAI,EAAI;AAC3C,cAAI,OAAI,CAAC0mK,WAAL,CAAiBf,OAArB,EAA8B;AAC1B2I,YAAAA,QAAQ,GAAG3pB,MAAM,CAAC3kJ,IAAI,CAAClK,KAAN,EAAa,OAAI,CAACu9G,SAAlB,CAAjB;AACH,WAFD,MAGK;AACDi7D,YAAAA,QAAQ,GAAG3pB,MAAM,CAAC3kJ,IAAD,EAAO,OAAI,CAACqzG,SAAZ,CAAjB;AACH;;AACDi7D,UAAAA,QAAQ,GAAG,CAAC9iE,SAAS,CAAC8iE,QAAD,CAAV,GAAuB,EAAvB,GAA4BA,QAAQ,CAAChhL,QAAT,GAAoB2S,WAApB,EAAvC;AACA,iBAAO9B,IAAI,IAAImwK,QAAQ,CAAC93B,UAAT,CAAoBr4I,IAApB,CAAf;AACH,SATW,EASTs8K,UATS,CAAZ;;AAUA,YAAI,KAAK5T,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD,iBAAQA,KAAK,GAAG,CAAR,GAAY,KAAKslJ,WAAL,CAAiBN,UAA9B,GAA4C,CAAC,CAA7C,GAAiD,KAAK7lI,SAAL,CAAepiC,IAAf,EAAqBijB,KAAK,GAAG,CAA7B,CAAxD;AACH,SAFD,MAGK;AACD,iBAAOA,KAAP;AACH;AACJ;;;aACD,4BAAmBjjB,IAAnB,EAAyB;AACrB,YAAMijB,KAAK,GAAG,KAAKmf,SAAL,CAAepiC,IAAf,CAAd;AACA,aAAKyhI,gBAAL,CAAsBziH,OAAtB,GAAgCiE,KAAhC;AACH;;;aACD,sBAAa;AACT,aAAK47H,WAAL,CAAiB,KAAjB;AACA,aAAK+6B,eAAL,GAAuB1kK,SAAvB;AACH;;;aACD,qBAAY;AACR,aAAK2pI,WAAL,CAAiB,IAAjB;AACA,aAAK+6B,eAAL,GAAuB1kK,SAAvB;AACH;;;aACD,qBAAYpZ,IAAZ,EAAkB;AACd,YAAMu8B,UAAU,GAAG,KAAKvZ,QAAL,IAAiB,KAAK+K,QAAzC;AACA,YAAMokJ,SAAS,GAAG,KAAKtzK,MAAL,KAAgBmB,IAAlC;;AACA,YAAIu8B,UAAU,IAAI41I,SAAlB,EAA6B;AACzB;AACH;;AACD,YAAM75D,kBAAkB,GAAG,KAAK85D,kBAAL,CAAwBpyK,IAAxB,CAA3B;;AACA,YAAI,CAACs4G,kBAAL,EAAyB;AACrB,eAAKsF,OAAL,CAAa59G,IAAb;AACH;AACJ;;;aACD,4BAAmBA,IAAnB,EAAyB;AACrB,YAAMq4G,SAAS,GAAG,IAAIjB,gBAAJ,EAAlB;;AACA,YAAIp3G,IAAJ,EAAU;AACN,eAAKA,IAAL,CAAU+E,IAAV,CAAeszG,SAAf;AACH,SAFD,MAGK;AACD,eAAKt8G,KAAL,CAAWgJ,IAAX,CAAgBszG,SAAhB;AACH;;AACD,eAAOA,SAAS,CAACC,kBAAV,EAAP;AACH;;;aACD,iBAAQt4G,IAAR,EAAc;AACV,aAAKJ,KAAL,GAAaI,IAAb;AACA,aAAK4+G,YAAL;;AACA,YAAI,KAAKh/G,KAAT,EAAgB;AACZ,eAAKm/G,WAAL;AACH;AACJ;;;aACD,wBAAe;AACX,YAAI,KAAKZ,QAAT,EAAmB;AACf,eAAKA,QAAL,CAAcK,YAAd,CACK21D,mBADL,CACyB,WADzB,EACsC,KAAK3C,qBAD3C;AAEA,eAAKrzD,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;AACH;AACJ;;;aACD,uBAAc;AAAA;;AACV,YAAI,KAAKgwD,OAAT,EAAkB;AACd,eAAKA,OAAL,CAAahlE,IAAb,GAAoB,CAApB;AACH;;AACD,YAAMyqE,eAAe,GAAG,KAAK9xI,SAAL,KAAmB,KAAnB,GAA2B,OAA3B,GAAqC,MAA7D;AACA,YAAM+xI,cAAc,GAAG;AAAEn1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAvB;AACA,YAAMm1D,aAAa,GAAG;AAAEp1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAtB;AACA,aAAKR,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,UAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnC2D,UAAAA,WAAW,EAAE60D,cAFsB;AAGnC17K,UAAAA,OAAO,EAAE,KAAKmmH,aAAL,CAAmBnmH,OAHO;AAInC+gF,UAAAA,QAAQ,EAAE,KAAKA,QAJoB;AAKnC9pB,UAAAA,OAAO,EAAE,KAAK6vD,aALqB;AAMnCV,UAAAA,UAAU,EAAEu1D,aANuB;AAOnC54D,UAAAA,UAAU,EAAE,KAAK64D,oBAPkB;AAQnC9vD,UAAAA,YAAY,EAAE;AARqB,SAAvB,CAAhB;AAUA,YAAM0uD,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,2BAAqB,KAAKviH,KAA1B;AAAA,YAAQg4B,GAAR,gBAAQA,GAAR;AAAA,YAAaD,GAAb,gBAAaA,GAAb;AACA2+I,QAAAA,YAAY,CAACqB,gBAAb,CAA8B,WAA9B,EAA2C,KAAKxC,qBAAhD;AACAmB,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmBI,MAAnB,GAA4B,KAAKA,MAAjC;AACAm6K,QAAAA,YAAY,CAACx/K,YAAb,CAA0B,KAA1B,EAAiC,KAAK2uC,SAAtC;AACA,aAAKq8E,QAAL,CAAcgB,SAAd,CAAwBh0H,SAAxB,CAAkC,YAAM;AACpC,iBAAI,CAACmF,GAAL,CAASoC,aAAT;;AACA,iBAAI,CAACuhL,WAAL,CAAiBhG,YAAjB,CAA8B,OAAI,CAACtoC,gBAAL,CAAsBziH,OAApD;;AACA,iBAAI,CAAC7D,MAAL,CAAYta,IAAZ;AACH,SAJD;AAKA,aAAKo5G,QAAL,CAAc+1D,UAAd,CAAyB/oL,SAAzB,CAAmC,YAAM;AACrC,iBAAI,CAAC0uD,MAAL,CAAY90C,IAAZ;AACH,SAFD;AAGA,aAAKo5G,QAAL,CAAce,wBAAd,CAAuC/zH,SAAvC,CAAiD,YAAM;AACnD,iBAAI,CAAC43J,WAAL,CAAiB,KAAjB;AACH,SAFD;AAGH;;;aACD,2BAAkB;AACd,aAAKuuB,gBAAL,CAAsB,KAAKz1K,KAA3B;AACA,aAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsB,KAAKlJ,KAA3B;AACH;;;aACD,iCAAwBA,KAAxB,EAA+B;AAAA;;AAC3B,YAAI,EAAE,KAAKmiL,IAAL,IAAa,KAAKA,IAAL,CAAUh9K,MAAvB,IAAiCuwG,SAAS,CAAC11G,KAAD,CAA5C,CAAJ,EAA0D;AACtD,iBAAOud,SAAP;AACH,SAH0B,CAI3B;;;AACA,YAAM4kK,IAAI,GAAG,KAAKA,IAAL,CAAUvzI,MAAV,CAAiB,UAAC62E,GAAD,EAAM92B,GAAN,EAAc;AACxC,cAAM5kF,KAAK,GAAGwxC,OAAO,CAACozC,GAAD,CAAP,GAAeA,GAAf,GAAqB,CAACA,GAAD,CAAnC;AACA82B,UAAAA,GAAG,CAACxgH,IAAJ,OAAAwgH,GAAG,qMAAS17G,KAAT,EAAH;AACA,iBAAO07G,GAAP;AACH,SAJY,EAIV,EAJU,CAAb;AAKA,eAAO08D,IAAI,CAAC78K,IAAL,CAAU,UAAAqpF,GAAG;AAAA,iBAAIkgE,MAAM,CAAClgE,GAAD,EAAM,OAAI,CAACg9E,UAAX,CAAN,KAAiC9c,MAAM,CAAC7uJ,KAAD,EAAQ,OAAI,CAAC2rK,UAAb,CAA3C;AAAA,SAAb,CAAP;AACH;;;aACD,6BAAoBrgJ,KAApB,EAA2B;AACvB,YAAMitJ,QAAQ,GAAG,KAAK3H,WAAL,CAAiBN,UAAlC;;AACA,YAAI,KAAKS,oBAAL,CAA0BM,eAA1B,CAA0C/lJ,KAA1C,CAAJ,EAAsD;AAClD,cAAMwlE,SAAS,GAAGxlE,KAAK,GAAG,CAA1B;AACA,iBAAQwlE,SAAS,GAAGynF,QAAb,GAAyB,KAAKrH,mBAAL,CAAyBpgF,SAAzB,CAAzB,GAA+DvzE,SAAtE;AACH,SAHD,MAIK;AACD,iBAAO+N,KAAP;AACH;AACJ;;;aACD,kBAASsqF,CAAT,EAAY;AAAA;;AACR,aAAKx/C,KAAL,CAAW7xB,iBAAX,CAA6B,YAAM;AAC/B;AACA;AACAhrC,UAAAA,UAAU,CAAC;AAAA,mBAAM,OAAI,CAAC68D,KAAL,CAAWjxB,GAAX,CAAeywE,CAAf,CAAN;AAAA,WAAD,CAAV;AACH,SAJD;AAKH;;;aACD,+BAAsB;AAClB,YAAI,KAAK39G,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAA/D;AACH;;AACD,YAAI,KAAKihH,OAAL,KAAiB,MAArB,EAA6B;AACzB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAAlE;AACH;;AACD,YAAI,KAAKpC,QAAL,KAAkB,MAAtB,EAA8B;AAC1B,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAnE;AACH;AACJ;;;;;;AAEL+qE,EAAAA,oBAAoB,CAAC/nJ,IAArB;AAAA,qBAAkH+nJ,oBAAlH,EAp0PsGnyL,gEAo0PtG,CAAwJA,sDAAxJ,GAp0PsGA,gEAo0PtG,CAAkLkE,8EAAlL,GAp0PsGlE,gEAo0PtG,CAAqNmE,wEAArN,GAp0PsGnE,gEAo0PtG,CAAiPkgL,WAAjP,GAp0PsGlgL,gEAo0PtG,CAAyQu4I,gBAAzQ,GAp0PsGv4I,gEAo0PtG,CAAsSquH,iBAAtS,GAp0PsGruH,gEAo0PtG,CAAoUihL,oBAApU,GAp0PsGjhL,gEAo0PtG,CAAqWA,6DAArW,GAp0PsGA,gEAo0PtG,CAAsYA,2DAAtY,GAp0PsGA,gEAo0PtG,CAAqaA,qDAAra,GAp0PsGA,gEAo0PtG,CAA8bA,kDAA9b,GAp0PsGA,gEAo0PtG,CAAodk2J,aAApd;AAAA;;AACAi8B,EAAAA,oBAAoB,CAACrlJ,IAArB,kBAr0PsG9sC,gEAq0PtG;AAAA,UAAsGmyL,oBAAtG;AAAA;AAAA;AAAA;AAr0PsGnyL,QAAAA,6DAq0PtG,WAiBqEw/K,qBAjBrE;AAr0PsGx/K,QAAAA,6DAq0PtG,WAiB+K+wL,2BAjB/K;AAr0PsG/wL,QAAAA,6DAq0PtG,WAiB0R2/K,sBAjB1R;AAr0PsG3/K,QAAAA,6DAq0PtG,WAiBqY4/K,2BAjBrY;AAr0PsG5/K,QAAAA,6DAq0PtG,WAiBify/K,uBAjBjf;AAr0PsGz/K,QAAAA,6DAq0PtG,WAiBylB0/K,uBAjBzlB;AAr0PsG1/K,QAAAA,6DAq0PtG,WAiB8rBgxL,oBAjB9rB;AAr0PsGhxL,QAAAA,6DAq0PtG,WAiBqyBixL,yBAjBryB;AAr0PsGjxL,QAAAA,6DAq0PtG,WAiB+4B4hL,uBAjB/4B;AAAA;;AAAA;AAAA;;AAr0PsG5hL,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAAA;AAAA;AAAA;AAAA;AAr0PsGA,QAAAA,0DAq0PtG,SAiByiCkP,4DAjBziC;AAr0PsGlP,QAAAA,0DAq0PtG,CAiBgoCq+K,kBAjBhoC;AAr0PsGr+K,QAAAA,0DAq0PtG;AAr0PsGA,QAAAA,0DAq0PtG;AAAA;;AAAA;AAAA;;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAr0PsGA,QAAAA,6DAq0PtG,MAr0PsGA,0DAq0PtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAr0PsGA,QAAAA,yDAq0PtG;AAAA,iBAAsG,yBAAtG;AAAA;AAAA;;AAAA;AAr0PsGA,QAAAA,0DAq0PtG;AAr0PsGA,QAAAA,0DAq0PtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAr0PsGA,iEAq0PtG,CAA4zC,CACpzCkyL,0BADozC,EAEpzChS,WAFozC,EAGpzC3nC,gBAHozC,EAIpzClqB,iBAJozC,EAKpzC4yD,oBALozC,EAMpzCl8D,8EANozC,EAOpzC;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAPozC,EAWpzC;AACIH,MAAAA,OAAO,EAAEy+K,mBADb;AACkCzxI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMkiK,oBAAN;AAAA,OAAD;AADzD,KAXozC,EAcpzC;AACI/uL,MAAAA,OAAO,EAAEk/H,uEADb;AACyBlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMkiK,oBAAN;AAAA,OAAD;AADhD,KAdozC,CAA5zC,GAr0PsGnyL,mEAq0PtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAr0PsGA,QAAAA,iEAu1P9F,MAlBR;AAr0PsGA,QAAAA,6DA+1P9F,uBA1BR;AAr0PsGA,QAAAA,yDA62P1F;AAAA,iBAAa,2BAAb;AAAA,UAxCZ;AAr0PsGA,QAAAA,6DA+2P1F,4BA1CZ;AAr0PsGA,QAAAA,yDA43PtF;AAAA,iBAAc,0BAAd;AAAA;AAAA,iBACe,wBADf;AAAA;AAAA,iBAEU,qBAFV;AAAA;AAAA,iBAGW,sBAHX;AAAA,UAvDhB;AAr0PsGA,QAAAA,2DAi4P1F,IA5DZ;AAr0PsGA,QAAAA,yDAo4P9F,0DA/DR;AAr0PsGA,QAAAA,yDA+4P9F,0DA1ER;AAr0PsGA,QAAAA,yDAo5P9F,gFAp5P8FA,qEAo5P9F,CA/ER;AAr0PsGA,QAAAA,yDAm9P9F,wEA9IR;AAr0PsGA,QAAAA,iEAs9P9F,YAjJR;AAAA;;AAAA;AAr0PsGA,QAAAA,wDAg2P1F,GA3BZ;AAr0PsGA,QAAAA,yDAg2P1F,uWA3BZ;AAr0PsGA,QAAAA,wDAi3PtF,GA5ChB;AAr0PsGA,QAAAA,yDAi3PtF,8SA5ChB;AAr0PsGA,QAAAA,wDAq4PzF,GAhEb;AAr0PsGA,QAAAA,yDAq4PzF,0JAhEb;AAr0PsGA,QAAAA,wDAg5PzF,GA3Eb;AAr0PsGA,QAAAA,yDAg5PzF,qBA3Eb;AAr0PsGA,QAAAA,wDAm9PjF,GA9IrB;AAr0PsGA,QAAAA,yDAm9PjF,oBA9IrB;AAAA;AAAA;AAAA,iBAkJ0CqxL,gBAlJ1C,EAkJ6ShT,kBAlJ7S,EAkJgmB7wD,aAlJhmB,EAkJ26ButD,kFAlJ36B,EAkJ0iCpY,0BAlJ1iC,EAkJm5C2Y,kDAlJn5C,EAkJq+ChuD,wBAlJr+C,EAkJqkDguD,qDAlJrkD,EAkJipD4G,mBAlJjpD;AAAA;AAAA;SArvCMiQ;;;AAw4CN;AAAA;AAAA;AAySA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMgD;MAAAA,wOACF,qCAAYliK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELkiK,EAAAA,2BAA2B,CAAC/qJ,IAA5B;AAAA,qBAAyH+qJ,2BAAzH,EAhxQsGn1L,gEAgxQtG,CAAsKA,uDAAtK;AAAA;;AACAm1L,EAAAA,2BAA2B,CAACvqJ,IAA5B,kBAjxQsG5qC,gEAixQtG;AAAA,UAA6Gm1L,2BAA7G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,0OACF,uCAAYniK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELmiK,EAAAA,6BAA6B,CAAChrJ,IAA9B;AAAA,qBAA2HgrJ,6BAA3H,EAryQsGp1L,gEAqyQtG,CAA0KA,uDAA1K;AAAA;;AACAo1L,EAAAA,6BAA6B,CAACxqJ,IAA9B,kBAtyQsG5qC,gEAsyQtG;AAAA,UAA+Go1L,6BAA/G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AAOA;AACA;AACA;AACA;;;IACMC;MAAAA,oOACF,mCAAc;AAAA;;AACV;AACR;AACA;AACA;AACA;AACQ,SAAK/tL,MAAL,GAAc,KAAd;AACA;AACR;AACA;;AACQ,SAAKguL,YAAL,GAAoB,IAApB;AACH;;AAELD,EAAAA,uBAAuB,CAACjrJ,IAAxB;AAAA,qBAAqHirJ,uBAArH;AAAA;;AACAA,EAAAA,uBAAuB,CAACvoJ,IAAxB,kBAj0QsG9sC,gEAi0QtG;AAAA,UAAyGq1L,uBAAzG;AAAA;AAAA;AAAA;AAj0QsGr1L,QAAAA,6DAi0QtG,WAA6Zm1L,2BAA7Z;AAj0QsGn1L,QAAAA,6DAi0QtG,WAAygBo1L,6BAAzgB;AAAA;;AAAA;AAAA;;AAj0QsGp1L,QAAAA,6DAi0QtG,MAj0QsGA,0DAi0QtG;AAj0QsGA,QAAAA,6DAi0QtG,MAj0QsGA,0DAi0QtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;SAfMq1L;;;AAgBN;AAAA;AAAA;AAgCA;AACA;AACA;;;AACA,IAAIE,eAAJ;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM1wH,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AACzB;AACA,MAAI/7B,KAAK,CAACysJ,eAAD,CAAT,EAA4B;AACxB,QAAMp9H,GAAG,GAAGtzD,QAAQ,CAACinB,aAAT,CAAuB,KAAvB,CAAZ;AACAqsC,IAAAA,GAAG,CAACtrD,KAAJ,CAAUuzH,OAAV,GAAoB,6EAApB;AACAjoE,IAAAA,GAAG,CAAC22B,SAAJ,GAAgB,QAAhB;AACAjqF,IAAAA,QAAQ,CAACO,IAAT,CAAc4mB,WAAd,CAA0BmsC,GAA1B;AACAo9H,IAAAA,eAAe,GAAGp9H,GAAG,CAACxnD,WAAJ,GAAkBwnD,GAAG,CAACqnE,WAAxC;AACA36H,IAAAA,QAAQ,CAACO,IAAT,CAAcm9D,WAAd,CAA0BpK,GAA1B;AACH;;AACD,SAAOo9H,eAAP;AACH,CAXD;AAYA;AACA;AACA;;;AACA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,OAAD,EAAa;AACrC,MAAI,CAACzvE,SAAS,CAACyvE,OAAD,CAAV,IAAuBA,OAAO,CAAChgL,MAAR,KAAmB,CAA9C,EAAiD;AAC7C,WAAO,KAAP;AACH;;AACD,SAAOggL,OAAO,CAACtgJ,OAAR,GAAkBs+C,KAAlB,CAAwB,UAAAiiG,MAAM;AAAA,WAAI,CAAC5sJ,KAAK,CAAC4sJ,MAAM,CAAChlL,KAAR,CAAN,IAAwBglL,MAAM,CAAChlL,KAAP,GAAe,CAA3C;AAAA,GAA9B,CAAP;AACH,CALD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMilL,0BAA0B,GAAG,SAA7BA,0BAA6B,CAACF,OAAD,EAAa;AAC5C,MAAI,CAACD,mBAAmB,CAACC,OAAD,CAAxB,EAAmC;AAC/B,WAAO,IAAP;AACH;;AACD,MAAMG,YAAY,GAAG,CAArB;AACA,MAAMC,eAAe,GAAGhxH,cAAc,KAAK+wH,YAA3C;AACA,SAAOH,OAAO,CAACv2I,MAAR,CAAe,UAAC42I,UAAD,EAAaJ,MAAb,EAAwB;AAC1C,QAAI,CAACA,MAAM,CAACpuL,MAAR,IAAkBouL,MAAM,CAACJ,YAA7B,EAA2C;AACvCQ,MAAAA,UAAU,IAAIvtJ,QAAQ,CAACmtJ,MAAM,CAAChlL,KAAR,EAAe,EAAf,CAAtB;AACH;;AACD,WAAOolL,UAAP;AACH,GALM,EAKJD,eALI,CAAP;AAMH,CAZD;AAcA;AACA;AACA;;;IACME;MAAAA;;;;;AACF,0CAAY5tE,YAAZ,EAA0BwJ,YAA1B,EAAwCyoB,gBAAxC,EAA0D7qB,iBAA1D,EAA6E8xD,oBAA7E,EAAmGH,WAAnG,EAAgHh6H,IAAhH,EAAsH8uI,cAAtH,EAAsIlxL,QAAtI,EAAgJgrH,OAAhJ,EAAyJ2U,YAAzJ,EAAuK;AAAA;;AAAA;;AACnK,mCAAM3U,OAAN,EAAe3H,YAAf,EAA6BwJ,YAA7B,EAA2CyoB,gBAA3C,EAA6D7qB,iBAA7D,EAAgF8xD,oBAAhF,EAAsGH,WAAtG,EAAmHh6H,IAAnH,EAAyH8uI,cAAzH,EAAyIlxL,QAAzI,EAAmJ2/H,YAAnJ;AACA;AACR;AACA;;AACQ,cAAK2+B,WAAL,GAAmB,IAAnB;AACA,cAAK6yB,0BAAL,GAAkC1xH,IAAlC,CANmK,CAOnK;;AACA,cAAKslH,wBAAL,GAAgC,EAAhC,CARmK,CASnK;;AACA,cAAKC,sBAAL,GAA8B,EAA9B;AAVmK;AAWtK;AACD;AACJ;AACA;;;;;WACI,eAAiB;AACb,eAAO,KAAKryJ,QAAZ;AACH;AACD;AACJ;AACA;;;;WACI,aAAWgP,MAAX,EAAmB;AACf;AACA,aAAKyvJ,mBAAL,CAAyBzvJ,MAAM,IAAIA,MAAM,CAACx0B,aAA1C;AACH;;;WACD,eAAiB;AACb,YAAMo0K,kBAAkB,GAAG,KAAKv2D,OAAL,CAAa79G,aAAb,CAA2BtB,WAAtD;AACA,YAAM+3B,GAAG,aAAM29I,kBAAN,OAAT;AACA,YAAM31K,KAAK,GAAG,KAAKqiH,aAAL,CAAmBriH,KAAnB,IAA4BilL,0BAA0B,CAAC,KAAKF,OAAN,CAAtD,IAAwEpP,kBAAtF;AACA,YAAM59I,GAAG,GAAGK,KAAK,CAACp4B,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAZ;AACA,eAAO;AAAEg4B,UAAAA,GAAG,EAAHA,GAAF;AAAOD,UAAAA,GAAG,EAAHA;AAAP,SAAP;AACH;AACD;AACJ;AACA;;;;WACI,eAAqB;AACjB,yBAAU,KAAKlgC,IAAL,GAAY0hI,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAxB,GAA+C,EAAzD;AACH;AACD;AACJ;AACA;;;;WACI,eAA2B;AACvB,eAAO,CACH,SADG,EAEH,sBAFG,EAGLq7F,MAHK,CAGE,KAAKmvB,aAAL,CAAmBpD,UAAnB,IAAiC,EAHnC,CAAP;AAIH;;;aACD,2BAAkB;AACd,aAAKwmE,uBAAL;AACA,aAAKC,uBAAL;AACH;;;aACD,uBAAc;AACV;;AACA,aAAKH,0BAAL;AACH;AACD;AACJ;AACA;;;;aACI,kBAASroE,QAAT,EAAmBua,KAAnB,EAA0B;AACtB,eAAOg3B,MAAM,CAACvxC,QAAD,EAAWua,KAAX,CAAb;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,6BAAoB1hG,MAApB,EAA4B;AACxB,YAAI,CAACu/E,SAAS,CAACv/E,MAAD,CAAd,EAAwB;AACpB;AACH,SAHuB,CAIxB;;;AACA,YAAM4vJ,qBAAqB,GAAG,KAAKluE,YAAL,CAAkBW,GAAlB,GAAwB,cAAxB,GAAyC,eAAvE;;AACA,YAAI,KAAK4/D,WAAL,CAAiB4N,YAAjB,MAAmCzxH,cAAc,KAAK,CAA1D,EAA6D;AACzD,eAAK//D,QAAL,CAAc29D,QAAd,CAAuBh8B,MAAvB,EAA+B4vJ,qBAA/B,YAAyDxxH,cAAc,EAAvE;AACH,SAFD,MAGK;AACD,eAAK//D,QAAL,CAAcw9D,WAAd,CAA0B77B,MAA1B,EAAkC4vJ,qBAAlC;AACH;AACJ;;;aACD,0BAAiB;AACb,YAAI,CAAC9xE,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAIyB,SAAS,CAAC,KAAK9nH,IAAN,CAAT,IAAwB,KAAKA,IAAL,CAAUuX,MAAV,GAAmB,CAA3C,IAAgD,KAAKvX,IAAL,CAAUgd,IAAV,CAAe,UAAAV,IAAI;AAAA,iBAAI,CAACg0E,QAAQ,CAACh0E,IAAD,CAAb;AAAA,SAAnB,CAApD,EAA6F;AACzF,gBAAM,IAAIuK,KAAJ,CAAUmkK,2BAA2B,CAAChrL,IAAtC,CAAN;AACH;;AACD,YAAI,CAAC8nH,SAAS,CAAC,KAAKi2D,UAAN,CAAV,IAA+B,CAACj2D,SAAS,CAAC,KAAK6H,SAAN,CAA7C,EAA+D;AAC3D,gBAAM,IAAI9oG,KAAJ,CAAUmkK,2BAA2B,CAACgD,YAAtC,CAAN;AACH;;AACD;AACH;;;aACD,mCAA0B;AAAA;;AACtB,YAAI,CAACznE,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,aAAKv9D,IAAL,CAAUrS,iBAAV,CAA4B;AAAA,iBAAM,OAAI,CAACohJ,0BAAL,GAAkC,OAAI,CAACnxL,QAAL,CAAc0tE,MAAd,CAAqB3yE,MAArB,EAA6B,QAA7B,EAAuC,OAAI,CAACs2L,uBAAL,CAA6BpsL,IAA7B,CAAkC,OAAlC,CAAvC,CAAxC;AAAA,SAA5B;AACH;;;aACD,mCAA0B;AAAA;;AACtB,YAAI,EAAEi8G,SAAS,CAAC,KAAKyvE,OAAN,CAAT,IAA2BhxE,oFAAmB,EAAhD,CAAJ,EAAyD;AACrD;AACH;;AACD,aAAKgxE,OAAL,CAAazvL,OAAb,CAAqB,UAAA0vL,MAAM,EAAI;AAC3B,cAAMJ,YAAY,GAAG,CAACI,MAAM,CAACa,KAAR,IAAiB12L,MAAM,CAAC22L,UAAP,CAAkBd,MAAM,CAACa,KAAzB,EAAgC7sJ,OAAtE;;AACA,cAAIgsJ,MAAM,CAACJ,YAAP,KAAwBA,YAA5B,EAA0C;AACtCI,YAAAA,MAAM,CAACJ,YAAP,GAAsBA,YAAtB;;AACA,gBAAI,OAAI,CAAChiL,MAAT,EAAiB;AACb;AACA;AACA,qBAAI,CAAC4zC,IAAL,CAAUzR,GAAV,CAAc;AAAA,uBAAM,OAAI,CAACm9E,QAAL,CAAcK,YAAd,CAA2BpmH,KAA3B,CAAiC6D,KAAjC,GAAyC,OAAI,CAACq7K,UAAL,CAAgBtjJ,GAA/D;AAAA,eAAd;AACH;AACJ;AACJ,SAVD;AAWH;;;;IAnHsC6gJ;;AAqH3CyM,EAAAA,4BAA4B,CAAC3rJ,IAA7B;AAAA,qBAA0H2rJ,4BAA1H,EA7gRsG/1L,gEA6gRtG,CAAwKkE,8EAAxK,GA7gRsGlE,gEA6gRtG,CAA2MmE,wEAA3M,GA7gRsGnE,gEA6gRtG,CAAuOu4I,gBAAvO,GA7gRsGv4I,gEA6gRtG,CAAoQquH,iBAApQ,GA7gRsGruH,gEA6gRtG,CAAkSihL,oBAAlS,GA7gRsGjhL,gEA6gRtG,CAAmUkgL,WAAnU,GA7gRsGlgL,gEA6gRtG,CAA2VA,kDAA3V,GA7gRsGA,gEA6gRtG,CAAiXA,6DAAjX,GA7gRsGA,gEA6gRtG,CAAkZA,qDAAlZ,GA7gRsGA,gEA6gRtG,CAA2aA,sDAA3a,GA7gRsGA,gEA6gRtG,CAAqck2J,aAArc;AAAA;;AACA6/B,EAAAA,4BAA4B,CAACjpJ,IAA7B,kBA9gRsG9sC,gEA8gRtG;AAAA,UAA8G+1L,4BAA9G;AAAA;AAAA;AAAA;AA9gRsG/1L,QAAAA,6DA8gRtG,WAuBuDq1L,uBAvBvD;AAAA;;AAAA;AAAA;;AA9gRsGr1L,QAAAA,6DA8gRtG,MA9gRsGA,0DA8gRtG;AAAA;AAAA;AAAA;AAAA;AA9gRsGA,QAAAA,0DA8gRtG;AAAA;;AAAA;AAAA;;AA9gRsGA,QAAAA,6DA8gRtG,MA9gRsGA,0DA8gRtG;AAAA;AAAA;AAAA;AAAA;AAAA;AA9gRsGA,QAAAA,0DA8gRtG;AAAA;AAAA;AAAA,eA9gRsGA,iEA8gRtG,CAA2S,CACnSu4I,gBADmS,EAEnS2nC,WAFmS,EAGnS7xD,iBAHmS,EAInS4yD,oBAJmS,EAKnSl8D,8EALmS,EAMnS;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KANmS,EAUnS;AACID,MAAAA,KAAK,EAAE,IADX;AAEIF,MAAAA,OAAO,EAAEguB,8DAFb;AAGIgf,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM8lK,4BAAN;AAAA,OAAD;AAH3B,KAVmS,EAenS;AACI3yL,MAAAA,OAAO,EAAEk/H,uEADb;AAEIlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM8lK,4BAAN;AAAA,OAAD;AAF3B,KAfmS,EAmBnS;AACI3yL,MAAAA,OAAO,EAAEy+K,mBADb;AAEIzxI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM8lK,4BAAN;AAAA,OAAD;AAF3B,KAnBmS,CAA3S,GA9gRsG/1L,yEA8gRtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AA9gRsGA,QAAAA,iEAsiR9F,MAxBR;AA9gRsGA,QAAAA,6DAgjR9F,4BAlCR;AA9gRsGA,QAAAA,yDA8jR1F;AAAA,iBAAc,0BAAd;AAAA;AAAA,iBACe,2BADf;AAAA;AAAA,iBAEU,gBAFV;AAAA;AAAA,iBAGW,iBAHX;AAAA,UAhDZ;AA9gRsGA,QAAAA,2DAmkR9F,EArDR;AA9gRsGA,QAAAA,yDAqkR9F,kEAvDR;AA9gRsGA,QAAAA,6DAmlR9F,mBArER;AA9gRsGA,QAAAA,wDAgmR1F,cAlFZ;AA9gRsGA,QAAAA,2DAimR9F,EAnFR;AA9gRsGA,QAAAA,yDAmmR9F,yFAnmR8FA,qEAmmR9F,CArFR;AA9gRsGA,QAAAA,yDAovR9F,gGAtOR;AA9gRsGA,QAAAA,iEA2vR9F,aA7OR;AAAA;;AAAA;AA9gRsGA,QAAAA,wDAkjR1F,GApCZ;AA9gRsGA,QAAAA,yDAkjR1F,kVApCZ;AA9gRsGA,QAAAA,wDAskRzF,GAxDb;AA9gRsGA,QAAAA,yDAskRzF,0HAxDb;AA9gRsGA,QAAAA,wDA0lR1F,GA5EZ;AA9gRsGA,QAAAA,yDA0lR1F,kEA1lR0FA,8DA0lR1F,oCA5EZ;AA9gRsGA,QAAAA,0DA2lR1F,kDA7EZ;AA9gRsGA,QAAAA,wDAgmRvD,GAlF/C;AA9gRsGA,QAAAA,yDAgmRvD,8BAlF/C;AA9gRsGA,QAAAA,wDAqvRzF,GAvOb;AA9gRsGA,QAAAA,yDAqvRzF,oBAvOb;AAAA;AAAA;AAAA,iBA8O4Cq+K,kBA9O5C,EA8O+V7wD,aA9O/V,EA8O0qButD,kFA9O1qB,EA8OyyBpY,0BA9OzyB,EA8OkpC2Y,kDA9OlpC,EA8OouCP,0FA9OpuC,EA8Oy2CO,qDA9Oz2C,EA8Oq7ChuD,wBA9Or7C,EA8OqhDguD,qDA9OrhD,EA8OgoDA,qDA9OhoD;AAAA;AAAA;SAtHMya;;;AAqWN;AAAA;AAAA;AAsQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMU;MAAAA,kOACF,+BAAYxjK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELwjK,EAAAA,qBAAqB,CAACrsJ,IAAtB;AAAA,qBAAmHqsJ,qBAAnH,EAjhSsGz2L,gEAihStG,CAA0JA,uDAA1J;AAAA;;AACAy2L,EAAAA,qBAAqB,CAAC7rJ,IAAtB,kBAlhSsG5qC,gEAkhStG;AAAA,UAAuGy2L,qBAAvG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;;AAOA,IAAMC,wBAAwB,GAAG;AAAE9pL,EAAAA,OAAO,EAAE;AAAX,CAAjC;;AACA,IAAM+pL,aAAa,GAAG,SAAhBA,aAAgB;AAAA,SAAM,KAAN;AAAA,CAAtB;;AACA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAAMnzF,yCAAE,CAAC,EAAD,CAAR;AAAA,CAAxB;;AACA,IAAMozF,cAAc,GAAG,SAAjBA,cAAiB;AAAA,SAAM,KAAN;AAAA,CAAvB;;AACA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAAM,IAAN;AAAA,CAAxB;;AACA,IAAM/uE,cAAc,GAAG,QAAvB;AACA,IAAMyJ,iBAAiB,GAAG,QAA1B;AACA,IAAMC,mBAAmB,GAAG,OAA5B;AACA;AACA;AACA;;IACMslE;MAAAA;AACF,mCAAYjnE,OAAZ,EAAqB6B,YAArB,EAAmCpC,iBAAnC,EAAsDzqH,QAAtD,EAAgE4hE,KAAhE,EAAuE3hE,GAAvE,EAA4EojH,YAA5E,EAA0Fsc,YAA1F,EAAwG;AAAA;;AACpG,WAAK3U,OAAL,GAAeA,OAAf;AACA,WAAK6B,YAAL,GAAoBA,YAApB;AACA,WAAKpC,iBAAL,GAAyBA,iBAAzB;AACA,WAAKzqH,QAAL,GAAgBA,QAAhB;AACA,WAAK4hE,KAAL,GAAaA,KAAb;AACA,WAAK3hE,GAAL,GAAWA,GAAX;AACA,WAAKojH,YAAL,GAAoBA,YAApB;AACA,WAAKsc,YAAL,GAAoBA,YAApB;AACA,WAAK2+B,WAAL,GAAmB,IAAnB;AACA,WAAK7qJ,IAAL,GAAY,SAAZ;AACA,WAAKy+K,YAAL,GAAoB,MAApB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKviL,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;;AACQ,WAAKkhB,MAAL,GAAc,IAAIlhB,wDAAJ,EAAd;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAK07C,MAAL,GAAc,IAAI17C,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKqkL,UAAL,GAAkB,IAAIrkL,wDAAJ,EAAlB;AACA;AACR;AACA;;AACQ,WAAKskL,YAAL,GAAoB,IAAItkL,wDAAJ,EAApB;AACA;AACR;AACA;;AACQ,WAAKo+C,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA;AACR;AACA;AACA;;AACQ,WAAK+nI,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;;AACQ,WAAK+yK,YAAL,GAAoB,IAAI/yK,wDAAJ,EAApB;AACA;AACR;AACA;AACA;;AACQ,WAAK6yK,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;;AACQ,WAAK0R,WAAL,GAAmBR,aAAnB;AACA;AACR;AACA;;AACQ,WAAKS,aAAL,GAAqBR,eAArB;AACA;AACR;AACA;;AACQ,WAAK/7F,WAAL,GAAmB,EAAnB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKwjE,UAAL,GAAkB,GAAlB;AACA;AACR;AACA;;AACQ,WAAK5mI,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKqoJ,cAAL,GAAsB,KAAtB;AACA;AACR;AACA;;AACQ,WAAK1J,YAAL,GAAoB0V,cAApB;AACA;AACR;AACA;AACA;;AACQ,WAAKQ,aAAL,GAAqBP,eAArB;AACA;AACR;AACA;AACA;;AACQ,WAAKQ,YAAL,GAAoB,IAApB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK5R,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;;AACQ,WAAKvmL,MAAL,GAAc,EAAd;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKwyJ,WAAL,eAAwBqpB,qEAAM,EAA9B;AACA;AACR;AACA;;AACQ,WAAKuc,YAAL,GAAoB,EAApB;AACA;AACR;AACA;;AACQ,WAAKC,iBAAL,GAAyB,IAAI5kL,wDAAJ,EAAzB;AACA;AACR;AACA;;AACQ,WAAK6kL,cAAL,GAAsB,KAAtB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK9G,YAAL,eAAyB3V,qEAAM,EAA/B;AACA,WAAKtrD,cAAL,GAAsBgnE,wBAAtB;AACA,WAAK9yB,SAAL,GAAiB,CAAjB;AACA,WAAK/zC,UAAL,GAAkB,KAAlB;AACA,WAAKrH,KAAL,GAAa,QAAb;AACA,WAAKC,QAAL,GAAgB,QAAhB;AACA,WAAKC,SAAL,GAAiB,OAAjB;AACA,WAAKiP,aAAL,GAAqB,EAArB;AACA,WAAKquD,iBAAL,GAAyBzhH,IAAzB;AACA,WAAKwhH,gBAAL,GAAwBxhH,IAAxB;AACA,WAAKhuB,SAAL,GAAiB4xE,YAAY,CAACW,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;AACA,WAAKuE,eAAL;AACA,WAAK84D,oBAAL;AACA,WAAKgI,oBAAL;AACH;;;;WACD,eAAiB;AACb,eAAO,KAAK12J,QAAZ;AACH;;;WACD,eAAgB;AACZ,eAAO,KAAKy2D,OAAZ;AACH;;;WACD,eAAS;AACL,eAAO,KAAKyjE,WAAZ;AACH;;;WACD,eAAmB;AACf,eAAO,KAAK72H,QAAZ;AACH;;;WACD,eAAqB;AACjB,eAAO,KAAKxnB,MAAZ;AACH;;;WACD,eAAiB;AACb,eAAO,KAAKkvB,QAAZ;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,aAAKg1H,WAAL,CAAiB,CAAC,KAAKlkJ,MAAvB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc3T,KAAd,EAAqB;AACjB,YAAI,KAAK83B,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,YAAMuuF,SAAS,GAAGpxH,KAAlB;AACA,aAAK4vH,iBAAL,CAAuByB,OAAvB,CAA+B;AAC3BmE,UAAAA,aAAa,EAAEpE;AADY,SAA/B;AAGH;;;WAYD,eAAe;AACX,eAAO,KAAK2mE,SAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;WAlBI,aAAaC,QAAb,EAAuB;AACnB,YAAIA,QAAJ,EAAc;AACV,cAAI,KAAK/mJ,SAAL,IAAkB,CAAC,KAAK80I,UAAxB,IAAsC,KAAKjhD,YAA/C,EAA6D;AACzDkzD,YAAAA,QAAQ,CAACz1I,KAAT;AACH,WAHS,CAIV;AACA;;;AACAy1I,UAAAA,QAAQ,CAAC/qL,OAAT,GAAmB,IAAnB;AACA,eAAK8qL,SAAL,GAAiBC,QAAjB;AACH;AACJ;;;WAaD,eAAW;AACP,eAAO,KAAKC,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAZI,aAAS15L,IAAT,EAAe;AACX,aAAK05L,MAAL,GAAc15L,IAAd;AACA,aAAKmsL,QAAL;AACH;;;WAcD,eAAY;AACR,eAAO,KAAKx4I,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAhBI,aAAUk1E,QAAV,EAAoB;AAChB,aAAKl1E,MAAL,GAAck1E,QAAd;AACA,aAAKsjE,QAAL;AACH;;;WAiBD,eAAoB;AAChB,eAAO,KAAK36D,cAAZ;AACH;AACD;AACJ;AACA;AACA;;WATI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB45K,wBAAlB,EAA4CtkE,QAA5C,CAAtB;AACH;;;WAYD,eAAe;AACX,eAAO,KAAKylE,SAAL,GAAiB,KAAKA,SAAtB,GAAkC,KAAKvnL,KAA9C;AACH;AACD;AACJ;AACA;;WATI,aAAakK,IAAb,EAAmB;AACf,aAAKq9K,SAAL,GAAiBr9K,IAAjB;AACA,aAAK6vK,QAAL;AACH;;;WAYD,eAAe;AACX,eAAO,KAAK5yJ,QAAL,GAAgB,CAAC,CAAjB,GAAqB,KAAKmsI,SAAjC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAjBI,aAAatzJ,KAAb,EAAoB;AAChB,YAAMg+K,gBAAgB,GAAG7kD,MAAM,CAACn5H,KAAD,CAA/B;AACA,YAAMi+K,eAAe,GAAG,CAAxB;AACA,aAAK3qB,SAAL,GAAiB,CAAC96H,KAAK,CAACwlJ,gBAAD,CAAN,GAA2BA,gBAA3B,GAA8CC,eAA/D;AACH;;;WAsBD,eAAW;AACP,eAAO,KAAK/lE,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WArBI,aAASjgH,IAAT,EAAe;AACX,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAUw/G,cAA9B;AACA,aAAKjjH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAAlE;;AACA,YAAIA,IAAI,KAAK,MAAb,EAAqB;AACjB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,QAAD,EAAW3gB,OAAX,CAA/D;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAagI,iBAAvC;AACA,aAAK1sH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAArE;;AACA,YAAIA,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAACzgB,UAAD,CAAlE;AACH;;AACD,aAAKhB,QAAL,GAAgBgB,UAAhB;AACH;;;WAsBD,eAAe;AACX,eAAO,KAAKf,SAAZ;AACH;WAVD,aAAatB,QAAb,EAAuB;AACnB,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAcqK,mBAA1C;AACA,aAAK3sH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAAtE;;AACA,YAAIA,QAAQ,KAAK,MAAjB,EAAyB;AACrB,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,QAAD,EAAWzgB,WAAX,CAAnE;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;WAQD,eAAgB;AACZ,eAAO,KAAKmG,UAAZ;AACH;WAND,aAAcj/E,SAAd,EAAyB;AACrB,aAAK9rC,QAAL,CAAc8rC,SAAS,GAAG,UAAH,GAAgB,aAAvC,EAAsD,KAAKk/E,OAAL,CAAa79G,aAAnE,EAAkF,SAAlF;AACA,aAAK49G,UAAL,GAAkBj/E,SAAlB;AACH;;;WAID,eAAY;AACR,YAAMy9I,YAAY,GAAG,KAAKv+D,OAAL,CAAa79G,aAAb,CAA2BtB,WAAhD;AACA,YAAMD,KAAK,GAAG,KAAKqiH,aAAL,CAAmBriH,KAAnB,IAA4B29K,YAA1C;AACA,YAAM30F,QAAQ,GAAG5wD,KAAK,CAACulJ,YAAD,CAAL,GAAsBA,YAAtB,aAAwCA,YAAxC,OAAjB;AACA,YAAMxc,QAAQ,GAAG/oI,KAAK,CAACp4B,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAjB;AACA,eAAO;AAAEg4B,UAAAA,GAAG,EAAEgxD,QAAP;AAAiBjxD,UAAAA,GAAG,EAAEopI;AAAtB,SAAP;AACH;;;WACD,eAAa;AACT,YAAMyU,WAAW,GAAG,KAAKvzD,aAAL,CAAmB9lH,MAAvC;AACA,eAAO+4G,SAAS,CAACsgE,WAAD,CAAT,aAA4BA,WAA5B,UAA8C,MAArD;AACH;AACD;AACJ;AACA;;;;WACI,eAAa;AACT,eAAOtgE,SAAS,CAAC,KAAK4M,QAAN,CAAhB;AACH;;;WACD,eAA2B;AACvB,YAAI,KAAK6R,YAAT,EAAuB;AACnB,iBAAO,SAAP;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WAII,eAAiB;AACb,eAAO,KAAKqzD,cAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAXI,aAAelsK,QAAf,EAAyB;AACrB,aAAKksK,cAAL,GAAsBlsK,QAAtB;AACH;;;WAUD,eAAa;AACT,eAAO,KAAKqrK,UAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WACI,eAAe;AACX,eAAO,KAAKC,YAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WAII,eAAY;AACR,eAAO,KAAKh5L,IAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAXI,aAAUklE,KAAV,EAAiB;AACb,aAAKllE,IAAL,GAAYklE,KAAZ;AACH;;;WAaD,eAAe;AACX,eAAO,KAAKg0H,aAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAXI,aAAaxrK,QAAb,EAAuB;AACnB,aAAKwrK,aAAL,GAAqBxrK,QAArB;AACH;;;WAaD,eAAgB;AACZ,eAAO,KAAKyrK,aAAZ;AACH;WALD,aAAczrK,QAAd,EAAwB;AACpB,aAAKyrK,aAAL,GAAqBzrK,QAArB;AACH;;;aAID,oBAAW;AAAA;;AACP,aAAK9mB,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAL,CAAa79G,aAA3C,EAA0D,UAA1D;AACA,aAAKk9K,qBAAL;AACA,aAAKx3D,aAAL,CAAmBpiH,IAAnB,CAAwB,KAAK4yG,YAAL,CACnBv5G,OADmB,CACXhP,SADW,CACD,kBAAa;AAAA,cAAVkpH,GAAU,UAAVA,GAAU;AAChC,iBAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA/B;;AACA,iBAAI,CAAC/jH,GAAL,CAASS,YAAT;AACH,SAJuB,CAAxB;AAKA,aAAKouJ,mBAAL;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,aAAKvgC,YAAL;AACA,aAAK2zD,iBAAL;AACH;AACD;AACJ;AACA;;;;aACI,qBAAYp4K,OAAZ,EAAqB;AACjB,YAAI+tH,2EAAU,CAAC,CAAC,WAAD,EAAc,YAAd,EAA4B,gBAA5B,CAAD,EAAgD/tH,OAAhD,EAAyD,KAAzD,CAAd,EAA+E;AAC3E,eAAKy7K,QAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,iCAAwB;AACpB,aAAK19D,cAAL;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,mBAAU;AACN,eAAO,CAAC,KAAKh0G,IAAN,IAAc,CAAC,KAAKkiF,WAA3B;AACH;AACD;AACJ;AACA;;;;aACI,qBAAYpmF,IAAZ,EAAkB;AACd,YAAMu8B,UAAU,GAAG,KAAKvZ,QAAL,IAAiB,KAAK+K,QAAzC;AACA,YAAMokJ,SAAS,GAAG,KAAKtzK,MAAL,KAAgBmB,IAAlC;;AACA,YAAIu8B,UAAU,IAAI41I,SAAlB,EAA6B;AACzB;AACH;;AACD,YAAMmR,eAAe,GAAG,KAAKlR,kBAAL,CAAwBpyK,IAAxB,CAAxB;;AACA,YAAI,CAACsjL,eAAL,EAAsB;AAClB,cAAItjL,IAAJ,EAAU;AACN,iBAAK++G,WAAL;AACH,WAFD,MAGK;AACD,iBAAKH,YAAL;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,qBAAY1zH,KAAZ,EAAmB;AAAA;;AACf,YAAIA,KAAK,CAAC2J,MAAN,KAAiB,KAAKwmH,OAAL,CAAa79G,aAAlC,EAAiD;AAC7C;AACH;;AACDtS,QAAAA,KAAK,CAACunL,wBAAN;;AACA,YAAI,CAAC,KAAKt2I,SAAV,EAAqB;AACjB,eAAKA,SAAL,GAAiB,IAAjB;;AACA,cAAIg0E,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,iBAAK0V,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,qBAAI,CAACub,OAAL,CAAax3C,IAAb;AACH,aAFD;AAGH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAWxQ,CAAX,EAAc;AAAA;;AACV,YAAM05C,aAAa,GAAG15C,CAAC,IAAIA,CAAC,CAAC05C,aAA7B;;AACA,YAAI,KAAKotE,OAAL,CAAa79G,aAAb,CAA2BzI,QAA3B,CAAoCk5C,aAApC,KACC,KAAKpvC,MAAL,IAAe,KAAKs/G,QAAL,CAAcK,YAAd,CAA2BzpH,QAA3B,CAAoCk5C,aAApC,CADpB,EACyE;AACrE;AACH;;AACD,aAAK9R,SAAL,GAAiB,KAAjB;;AACA,YAAIg0E,6EAAY,CAAC,KAAK1zD,MAAN,CAAZ,IACAqsH,WAAW,CAAC,KAAKztD,OAAL,CAAa79G,aAAd,CADf,EAC6C;AACzC,eAAKy0D,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,mBAAI,CAAC+hH,WAAL,CAAiB,KAAjB;;AACA,mBAAI,CAACtmG,MAAL,CAAY13C,IAAZ;;AACA,mBAAI,CAACwsK,iBAAL;AACH,WAJD;AAKH,SAPD,MAQK;AACD,eAAKxuB,WAAL,CAAiB,KAAjB;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,qBAAY57H,KAAZ,EAAmB;AACf,YAAI,KAAK+7J,QAAT,EAAmB;AACf,cAAM5Z,MAAM,GAAG,KAAK4Z,QAAL,CAAcK,UAAd,CAAyBp8J,KAAzB,CAAf;AACA,cAAIyzJ,cAAc,GAAG,CAACrpE,SAAS,CAAC+3D,MAAD,CAAV,IAAsB,KAAK4Z,QAAL,CAAc3mJ,UAAd,CAAyB+sI,MAAM,CAACvjK,IAAP,CAAYozG,QAArC,EAA+CmwD,MAAM,CAACvjK,IAAP,CAAYohB,KAA3D,CAA3C;;AACA,cAAI,CAACyzJ,cAAL,EAAqB;AACjB,iBAAKsI,QAAL,CAAcz1I,KAAd,CAAoBtmB,KAApB;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,CAAC,KAAKnE,QAAV,EAAoB;AAChB,eAAKq4F,OAAL,CAAa79G,aAAb,CAA2BiwC,KAA3B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAKq4F,OAAL,CAAa79G,aAAb,CAA2B+sF,IAA3B;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAK1uF,KAAL,GAAaud,SAAb;AACA,aAAK+/F,QAAL,GAAgB//F,SAAhB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,gBAAOpZ,IAAP,EAAa;AAAA;;AACT;AACA;AACA1G,QAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B,YAAM;AAC7B,cAAM07H,UAAU,GAAGrT,SAAS,CAACvxG,IAAD,CAAT,GAAkBA,IAAlB,GAAyB,CAACuxG,SAAS,CAAC,OAAI,CAAC4M,QAAN,CAAtD;;AACA,iBAAI,CAACS,YAAL;;AACA,cAAIgG,UAAJ,EAAgB;AACZ,mBAAI,CAAC7F,WAAL;AACH;AACJ,SAND;AAOH;AACD;AACJ;AACA;;;;WACI,eAA4B;AACxB,YAAM+yD,gBAAgB,GAAG,CAAC,sBAAD,CAAzB;;AACA,YAAI,KAAKxzD,aAAL,CAAmBpD,UAAvB,EAAmC;AAC/B42D,UAAAA,gBAAgB,CAAChxK,IAAjB,CAAsB,KAAKw9G,aAAL,CAAmBpD,UAAzC;AACH;;AACD,eAAO42D,gBAAP;AACH;AACD;AACJ;AACA;;;;aACI,mCAAuC;AAAA,YAAnB34D,QAAmB,UAAnBA,QAAmB;AAAA,YAAThyF,KAAS,UAATA,KAAS;AACnC,aAAKo2J,UAAL,GAAkBp2J,KAAK,CAAC3gB,KAAN,CAAY,GAAZ,EAAiBxF,MAAjB,GAA0B,CAA5C;AACA,YAAMwmK,UAAU,GAAG,KAAKgc,QAAL,CAAc,KAAKhc,UAAnB,EAA+BruD,QAA/B,CAAnB;AACA,YAAM7G,QAAQ,GAAG,KAAK8jE,cAAL,GACb5P,+DAAQ,CAACgB,UAAD,CAAR,CAAqBruD,QAArB,CADa,GAEbA,QAFJ;AAGA,YAAMsqE,iBAAiB,GAAGnxE,QAAQ,KAAK,KAAKz2G,KAA5C;;AACA,YAAI4nL,iBAAJ,EAAuB;AACnB,eAAK5nL,KAAL,GAAay2G,QAAb;AACA,eAAK6G,QAAL,GAAgBA,QAAhB;AACA,eAAK09D,eAAL,CAAqB,KAAKh7K,KAA1B;AACH;;AACD,aAAKknJ,WAAL,CAAiB,KAAjB;AACA,aAAKt1G,KAAL;AACH;AACD;AACJ;AACA;;;;aACI,oBAAW9mC,GAAX,EAAgB;AACZ,eAAO,KAAK+sG,YAAL,CAAkBnsG,GAAlB,CAAsBZ,GAAtB,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWzb,KAAX,EAAkB;AACdA,QAAAA,KAAK,CAACunL,wBAAN;AACA,aAAKhlI,KAAL;AACA,aAAK5xC,KAAL,GAAaud,SAAb;AACA,aAAK+/F,QAAL,GAAgB//F,SAAhB;AACA,aAAK89J,UAAL;AACA,aAAKhxC,WAAL,CAAiBnhI,IAAjB,CAAsBqU,SAAtB;AACA,aAAKy9J,eAAL;AACH;;;WACD,eAAe;AACX,YAAQ39F,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;AACD;AACJ;AACA;;;;aACI,6BAAoBhuF,KAApB,EAA2B;AACvBA,QAAAA,KAAK,CAACkU,cAAN;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWvD,KAAX,EAAkB;AACd;AACA;AACA;AACA;AACA,YAAI,CAAC01G,SAAS,CAAC11G,KAAD,CAAV,IAAqB01G,SAAS,CAAC,KAAK11G,KAAN,CAAlC,EAAgD;AAC5C,eAAKs9G,QAAL,GAAgB,IAAhB;AACH;;AACD,aAAKt9G,KAAL,GAAaA,KAAK,KAAK,IAAV,GAAiBud,SAAjB,GAA6Bvd,KAA1C;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKg1I,gBAAL,GAAwBh1I,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKi1I,iBAAL,GAAyBj1I,EAAzB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,UAAjB,EAA6B;AACzB,aAAKvZ,QAAL,GAAgBuZ,UAAhB;AACA,aAAKjsC,GAAL,CAASS,YAAT;AACH;AACD;AACJ;AACA;;;;aACI,iCAAwBid,KAAxB,EAA+B;AAAA;;AAC3B,aAAKkjK,YAAL,CAAkB5oK,IAAlB,CAAuB0F,KAAK,CAACnS,KAA7B;AACA,aAAKmnL,cAAL,GAAsB,KAAKr0H,KAAL,CAAWqwB,KAAX,CAAiB,UAACoW,IAAD,EAAOjuE,KAAP;AAAA,iBAAiB,CAAC,OAAI,CAAC2iG,SAAL,CAAe10B,IAAf,EAAqBvV,MAAM,CAAC14D,KAAD,CAA3B,CAAlB;AAAA,SAAjB,CAAtB;AACH;AACD;AACJ;AACA;;;;WACI,eAAoB;AAChB,eAAO,KAAKsyD,OAAL,GAAe,kCAAf,GAAoD,aAA3D;AACH;AACD;AACJ;AACA;;;;WACI,eAA0B;AACtB,yBAAU,KAAK3lF,IAAL,GAAY0hI,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAAxB,GAAgD,EAA1D,cAAgE,KAAK6+G,QAAL,GAAgB,cAAc,KAAKA,QAAnC,GAA8C,EAA9G,cAAoH,KAAKA,QAAL,GAAgB,cAAc,KAAKA,QAAnB,GAA8B,OAA9C,GAAwD,EAA5K;AACH;AACD;AACJ;AACA;;;;WACI,eAAyB;AACrB,yBAAU,KAAK7+G,IAAL,GAAY0hI,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAxB,GAA+C,EAAzD,cAA+D,KAAK6+G,QAAL,GAAgB,aAAa,KAAKA,QAAlC,GAA6C,EAA5G,cAAkH,KAAKoC,OAAL,GAAe0gB,eAAe,CAAC,KAAK1gB,OAAN,CAA9B,GAA+C,EAAjK;AACH;;;aACD,0BAAiB;AACb,YAAI,CAACjF,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAI,KAAKsmE,cAAL,KAAwB,IAAxB,IAAgC7kE,SAAS,CAAC,KAAK11G,KAAN,CAAzC,IAAyD,OAAO,KAAKA,KAAZ,KAAsB,QAAnF,EAA6F;AACzF,gBAAM,IAAIyU,KAAJ,CAAUqkK,oBAAoB,CAAC4C,SAA/B,CAAN;AACH;;AACD,YAAI,KAAKnB,cAAL,KAAwB,IAAxB,IAAgC7kE,SAAS,CAAC,KAAK11G,KAAN,CAAzC,IAAyD,OAAO,KAAKs9G,QAAZ,KAAyB,QAAtF,EAAgG;AAC5F,gBAAM,IAAI7oG,KAAJ,CAAUqkK,oBAAoB,CAACx7D,QAA/B,CAAN;AACH;;AACD,YAAI,KAAKi9D,cAAL,KAAwB,KAAxB,IAAiC7kE,SAAS,CAAC,KAAK11G,KAAN,CAA1C,IAA0D,OAAO,KAAKA,KAAZ,KAAsB,QAApF,EAA8F;AAC1F,gBAAM,IAAIyU,KAAJ,CAAUqkK,oBAAoB,CAAC9lE,MAA/B,CAAN;AACH;;AACD,YAAI,CAAC0C,SAAS,CAAC,KAAKi2D,UAAN,CAAV,IAA+B,CAACj2D,SAAS,CAAC,KAAK6H,SAAN,CAA7C,EAA+D;AAC3D,gBAAM,IAAI9oG,KAAJ,CAAUqkK,oBAAoB,CAAC8C,YAA/B,CAAN;AACH;;AACD,YAAI,CAACrgI,OAAO,CAAC,KAAKowH,UAAN,CAAP,IAA4BpwH,OAAO,CAAC,KAAKgiE,SAAN,CAApC,KAAyD7H,SAAS,CAAC,KAAK11G,KAAN,CAAlE,IAAkF,CAAC01G,SAAS,CAAC,KAAKgsE,UAAN,CAAhG,EAAmH;AAC/G,gBAAM,IAAIjtK,KAAJ,CAAUqkK,oBAAoB,CAAC4I,UAA/B,CAAN;AACH;AACJ;;;aACD,yBAAgB1hL,KAAhB,EAAuB;AACnB,aAAKy1K,gBAAL,CAAsBz1K,KAAtB;AACA,aAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsBlJ,KAAtB;AACH;;;aACD,iBAAQu9G,SAAR,EAAmBD,QAAnB,EAA6B;AACzB,YAAI5H,SAAS,CAAC4H,QAAD,CAAT,IAAuB5H,SAAS,CAAC6H,SAAD,CAApC,EAAiD;AAC7C,cAAMsa,KAAK,GAAG,KAAK8vD,QAAL,CAAcpqE,SAAd,EAAyBD,QAAzB,CAAd;AACA,iBAAOqtD,+DAAQ,CAAC9yC,KAAD,CAAR,CAAgBva,QAAhB,CAAP;AACH;;AACD,eAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,kBAASua,KAAT,EAAgB73H,KAAhB,EAAuB;AACnB,YAAMyhL,WAAW,GAAG5pD,KAAK,CAAC1yH,MAAN,GAAe,CAAnC;;AACA,YAAI,OAAO0yH,KAAP,KAAiB,QAArB,EAA+B;AAC3B;AACA,iBAAOA,KAAP;AACH,SAHD,MAIK,IAAIniB,SAAS,CAAC,KAAKgsE,UAAN,CAAb,EAAgC;AACjC;AACA,iBAAOD,WAAW,GAAG,KAAKC,UAAnB,GAAgC7pD,KAAK,CAAC4pD,WAAD,CAArC,GAAqD5pD,KAAK,CAAC,KAAK6pD,UAAN,CAAjE;AACH,SAHI,MAIA;AACD;AACA;AACA,iBAAO7pD,KAAK,CAACvyH,IAAN,CAAW,UAAA4E,IAAI;AAAA,mBAAIA,IAAI,IAAIlK,KAAZ;AAAA,WAAf,CAAP;AACH;AACJ;;;aACD,4BAAmBmE,IAAnB,EAAyB;AACrB,YAAMq4G,SAAS,GAAG,IAAIjB,gBAAJ,EAAlB;;AACA,YAAIp3G,IAAJ,EAAU;AACN,eAAKA,IAAL,CAAU+E,IAAV,CAAeszG,SAAf;AACH,SAFD,MAGK;AACD,eAAKt8G,KAAL,CAAWgJ,IAAX,CAAgBszG,SAAhB;AACH;;AACD,eAAOA,SAAS,CAACC,kBAAV,EAAP;AACH;;;aACD,uBAAc;AAAA;;AACV,YAAMs7D,eAAe,GAAG,KAAK9xI,SAAL,KAAmB,KAAnB,GAA2B,OAA3B,GAAqC,MAA7D;AACA,YAAM+xI,cAAc,GAAG;AAAEn1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAvB;AACA,YAAMm1D,aAAa,GAAG;AAAEp1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAtB;AACA,aAAKR,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,UAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnCniC,UAAAA,QAAQ,EAAE,KAAKA,QAFoB;AAGnC8lC,UAAAA,WAAW,EAAE60D,cAHsB;AAInCzkH,UAAAA,OAAO,EAAE,KAAK6vD,aAJqB;AAKnCV,UAAAA,UAAU,EAAEu1D,aALuB;AAMnC7vD,UAAAA,YAAY,EAAE,UANqB;AAOnC/I,UAAAA,UAAU,EAAE,KAAKwoE;AAPkB,SAAvB,CAAhB;AASA,YAAM/Q,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,2BAAqB,KAAKviH,KAA1B;AAAA,YAAQg4B,GAAR,gBAAQA,GAAR;AAAA,YAAaD,GAAb,gBAAaA,GAAb;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmBI,MAAnB,GAA4B,KAAKA,MAAjC;AACAm6K,QAAAA,YAAY,CAACx/K,YAAb,CAA0B,KAA1B,EAAiC,KAAK2uC,SAAtC;AACA,aAAKq8E,QAAL,CAAcgB,SAAd,CAAwBh0H,SAAxB,CAAkC,YAAM;AACpC,iBAAI,CAACmF,GAAL,CAASoC,aAAT;;AACA,iBAAI,CAAC2sB,MAAL,CAAYta,IAAZ;AACH,SAHD;AAIA,aAAKo5G,QAAL,CAAc+1D,UAAd,CAAyB/oL,SAAzB,CAAmC,YAAM;AACrC,iBAAI,CAAC0uD,MAAL,CAAY90C,IAAZ;AACH,SAFD;AAGH;;;aACD,wBAAe;AAAA;;AACX,YAAI,KAAKo5G,QAAT,EAAmB;AACf,eAAKA,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;;AACA,cAAI,KAAKzzH,MAAL,KAAgB,EAApB,EAAwB;AACpB,iBAAKA,MAAL,GAAc,EAAd;AACA,iBAAKs4L,cAAL,GAAsB,KAAtB;;AACA,gBAAI7yE,6EAAY,CAAC,KAAK+gE,YAAN,CAAhB,EAAqC;AACjC,mBAAKj/G,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,uBAAI,CAACkwI,YAAL,CAAkBnsK,IAAlB,CAAuB,EAAvB;AACH,eAFD;AAGH;AACJ;AACJ;AACJ;;;aACD,wBAAe;AACX,aAAKg+I,WAAL,CAAiB,KAAjB;AACA,aAAKt1G,KAAL;AACH;;;aACD,oBAAW;AACP,YAAI8jE,SAAS,CAAC,KAAK11G,KAAN,CAAT,IAAyB01G,SAAS,CAAC,KAAK4H,QAAN,CAAlC,IAAqD5H,SAAS,CAAC,KAAKi2D,UAAN,CAAlE,EAAqF;AACjF,eAAKtjK,IAAL,GAAY,KAAKy/K,OAAL,CAAa,KAAKvqE,SAAlB,EAA6B,KAAKD,QAAlC,CAAZ;AACA,cAAMquD,UAAU,GAAG,KAAKgc,QAAL,CAAc,KAAKhc,UAAnB,EAA+B,KAAKruD,QAApC,CAAnB;AACA,eAAKyqE,QAAL,GAAgBpc,UAAhB;AACA,eAAKsb,YAAL,GAAoB,CAACtc,+DAAQ,CAACgB,UAAD,CAAR,CAAqB,KAAKruD,QAA1B,CAAD,CAApB;AACH,SALD,MAMK;AACD,eAAK+9D,UAAL;AACH;;AACD,aAAK5mL,GAAL,CAASS,YAAT;AACH;;;aACD,sBAAa;AACT,aAAKmT,IAAL,GAAYkV,SAAZ;AACA,aAAK0pK,YAAL,GAAoB,EAApB;AACH;;;aACD,2BAAkB;AAAA;;AACd,aAAK5/D,aAAL,CAAmBpiH,IAAnB,CAAwB,KAAKg6G,iBAAL,CAAuB96G,IAAvB,CAA4B7U,SAA5B,CAAsC;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,IAAjB,CAAN;AAAA,SAAtC,CAAxB,EAA6F,KAAKjoC,iBAAL,CAAuB/+G,KAAvB,CAA6B5Q,SAA7B,CAAuC,YAAM;AACtI,iBAAI,CAAC43J,WAAL,CAAiB,KAAjB;;AACA,iBAAI,CAACt1G,KAAL;AACH,SAH4F,CAA7F,EAGI,KAAKqtE,iBAAL,CAAuBptF,KAAvB,CACCziC,IADD,CACMmyB,oDAAG,CAAC,UAAClyB,KAAD;AAAA,iBAAWA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB,EAAX;AAAA,SAAD,CADT,EAECjU,SAFD,CAEW;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,IAAjB,CAAN;AAAA,SAFX,CAHJ,EAK8C,KAAKjoC,iBAAL,CAAuBf,GAAvB,CACzC5uH,SADyC,CAC/B;AAAA,iBAAM,OAAI,CAAC83K,YAAL,EAAN;AAAA,SAD+B,CAL9C,EAM2C,KAAKnoD,iBAAL,CAAuBv2C,GAAvB,CAA2Bp5E,SAA3B,CAAqC;AAAA,iBAAM,OAAI,CAACsiD,KAAL,EAAN;AAAA,SAArC,CAN3C,EAMqG,KAAKqtE,iBAAL,CAAuBioD,IAAvB,CAA4B53K,SAA5B,CAAsC,UAACD,KAAD,EAAW;AAClJ,cAAI,CAAC,OAAI,CAACg4L,QAAV,EAAoB;AAChB;AACH;;AACDh4L,UAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;;AACA,cAAI,CAAC,OAAI,CAAC8jL,QAAL,CAAcrlD,QAAnB,EAA6B;AACzB,mBAAI,CAACqlD,QAAL,CAAcz1I,KAAd;AACH;AACJ,SARoG,CANrG,EAcI,KAAKqtE,iBAAL,CAAuBqwB,EAAvB,CAA0BhgJ,SAA1B,CAAoC,UAACD,KAAD,EAAW;AAC/C,cAAI,CAAC,OAAI,CAACg4L,QAAV,EAAoB;AAChB;AACH;;AACDh4L,UAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;;AACA,cAAI,OAAI,CAAC6xK,UAAL,IAAmB,OAAI,CAACiS,QAAL,CAAc,mBAAd,EAAmC,aAAnC,MAAsD,GAA7E,EAAkF;AAC9E,mBAAI,CAACW,WAAL,CAAiBrmL,aAAjB,CAA+BiwC,KAA/B;AACH;AACJ,SARG,CAdJ;AAuBH;;;aACD,gCAAuB;AAAA;;AACnB,YAAI,CAACuiE,oFAAmB,EAApB,IAA0B,CAAC,KAAKggB,YAApC,EAAkD;AAC9C;AACH;;AACD,aAAK/9D,KAAL,CAAW7xB,iBAAX,CAA6B;AAAA,iBAC7B;AACA,mBAAI,CAACszI,wBAAL,GAAgC,OAAI,CAACrjL,QAAL,CAAc0tE,MAAd,CAAqB3tE,QAArB,EAA+B,YAA/B,EAA6C,UAACmE,CAAD,EAAO;AAChF,kBAAMM,MAAM,GAAGN,CAAC,CAACM,MAAjB;;AACA,kBAAI,OAAI,CAACsnC,SAAL,IAAkB,CAACgtI,UAAU,CAAC,OAAI,CAAC9tD,OAAN,EAAexmH,MAAf,EAAuB,OAAI,CAACspH,QAA5B,CAAjC,EAAwE;AACpE,uBAAI,CAAClsD,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,sBAAI,OAAI,CAACniC,MAAT,EAAiB;AACb,2BAAI,CAACqkL,QAAL,CAAc34F,IAAd;AACH;;AACD,yBAAI,CAACA,IAAL;AACH,iBALD;AAMH;AACJ,aAV+B;AAFH;AAAA,SAA7B;AAaH;;;aACD,gCAAuB;AAAA;;AACnB,YAAIylB,oFAAmB,EAAvB,EAA2B;AACvB,eAAKmnC,WAAL,GAAmB,KAAKA,WAAL,CAAiB7hJ,IAAjB,CAAsB,IAAtB,CAAnB;AACA,eAAKwuL,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBxuL,IAAxB,CAA6B,IAA7B,CAA1B;;AACA,eAAK28D,KAAL,CAAW7xB,iBAAX,CAA6B,YAAM;AAC/B,gBAAMk7I,UAAU,GAAG,IAAnB;AACAlrL,YAAAA,QAAQ,CAAC4jL,gBAAT,CAA0B,OAA1B,EAAmC,OAAI,CAAC78B,WAAxC,EAAqDmkC,UAArD;AACAlrL,YAAAA,QAAQ,CAAC4jL,gBAAT,CAA0B,MAA1B,EAAkC,OAAI,CAAC8P,kBAAvC,EAA2DxI,UAA3D;AACH,WAJD;AAKH;AACJ;;;aACD,kCAAyB;AACrB,YAAItrE,oFAAmB,EAAvB,EAA2B;AACvB,cAAMsrE,UAAU,GAAG,IAAnB;AACAlrL,UAAAA,QAAQ,CAAC+jL,mBAAT,CAA6B,OAA7B,EAAsC,KAAKh9B,WAA3C,EAAwDmkC,UAAxD;AACAlrL,UAAAA,QAAQ,CAAC+jL,mBAAT,CAA6B,MAA7B,EAAqC,KAAK2P,kBAA1C,EAA8DxI,UAA9D;AACH;AACJ;;;aACD,6BAAoB;AAChB,aAAKp4D,aAAL,CAAmB3xH,OAAnB,CAA2B,UAAAwyL,GAAG;AAAA,iBAAIA,GAAG,CAACz4L,WAAJ,EAAJ;AAAA,SAA9B;AACA,aAAKiwL,sBAAL;;AACA,YAAI,KAAK7H,wBAAT,EAAmC;AAC/B,eAAKA,wBAAL;AACH;AACJ;;;aACD,4BAAmBxoL,KAAnB,EAA0B;AACtB,YAAIA,KAAK,CAAC2J,MAAN,KAAiB,KAAKwmH,OAAL,CAAa79G,aAAlC,EAAiD;AAC7C;AACH;;AACDtS,QAAAA,KAAK,CAACunL,wBAAN;AACA,aAAK/vG,UAAL,CAAgBx3E,KAAhB;AACH;;;aACD,iCAAwB;AACpB,YAAMqvC,YAAY,GAAG,KAAK8gF,OAAL,CAAa79G,aAAb,CAA2Bu4D,YAA3B,CAAwC,kBAAxC,KAA+D,EAApF,CADoB,CAEpB;;AACA,YAAMu8C,QAAQ,GAAG,UAAG,KAAK4pE,YAAR,cAAwB3hJ,YAAY,CAACjnC,IAAb,EAAxB,EAA8CA,IAA9C,EAAjB;AACA,aAAKjD,QAAL,CAAc8C,YAAd,CAA2B,KAAKkoH,OAAL,CAAa79G,aAAxC,EAAuD,kBAAvD,EAA2E80G,QAA3E;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAKx+G,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,QAAD,EAAW,KAAK1hI,IAAhB,CAA/D;AACH;;AACD,YAAI,KAAKihH,OAAL,KAAiB,MAArB,EAA6B;AACzB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAAlE;AACH;;AACD,YAAI,KAAKpC,QAAL,KAAkB,MAAtB,EAA8B;AAC1B,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,QAAD,EAAW,KAAK/iB,QAAhB,CAAnE;AACH;AACJ;;;;;;AAEL2vE,EAAAA,qBAAqB,CAAC3sJ,IAAtB;AAAA,qBAAmH2sJ,qBAAnH,EA77TsG/2L,gEA67TtG,CAA0JA,sDAA1J,GA77TsGA,gEA67TtG,CAAoLmE,wEAApL,GA77TsGnE,gEA67TtG,CAAgNquH,iBAAhN,GA77TsGruH,gEA67TtG,CAA8OA,qDAA9O,GA77TsGA,gEA67TtG,CAAuQA,kDAAvQ,GA77TsGA,gEA67TtG,CAA6RA,6DAA7R,GA77TsGA,gEA67TtG,CAA8TkE,8EAA9T,GA77TsGlE,gEA67TtG,CAAiWk2J,aAAjW;AAAA;;AACA6gC,EAAAA,qBAAqB,CAACjqJ,IAAtB,kBA97TsG9sC,gEA87TtG;AAAA,UAAuG+2L,qBAAvG;AAAA;AAAA;AAAA;AA97TsG/2L,QAAAA,6DA87TtG,WA2B2E4hL,uBA3B3E;AA97TsG5hL,QAAAA,6DA87TtG,WA2BmLy/K,uBA3BnL;AA97TsGz/K,QAAAA,6DA87TtG,WA2B2R0/K,uBA3B3R;AA97TsG1/K,QAAAA,6DA87TtG,WA2BiYy2L,qBA3BjY;AA97TsGz2L,QAAAA,6DA87TtG,WA2BsestL,sBA3Bte;AAAA;;AAAA;AAAA;;AA97TsGttL,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AAAA;AAAA;AAAA;AAAA;AA97TsGA,QAAAA,0DA87TtG;AA97TsGA,QAAAA,0DA87TtG,SA2B8uBkP,4DA3B9uB;AA97TsGlP,QAAAA,0DA87TtG;AA97TsGA,QAAAA,0DA87TtG;AAAA;;AAAA;AAAA;;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AA97TsGA,QAAAA,6DA87TtG,MA97TsGA,0DA87TtG;AAAA;AAAA;AAAA;AAAA;AAAA;AA97TsGA,QAAAA,yDA87TtG;AAAA,iBAAuG,iBAAvG;AAAA;AAAA,iBAAuG,yBAAvG;AAAA;AAAA;;AAAA;AA97TsGA,QAAAA,0DA87TtG;AA97TsGA,QAAAA,0DA87TtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA97TsGA,iEA87TtG,CAAmoD,CAC3nDkgL,WAD2nD,EAE3nD3nC,gBAF2nD,EAG3nDlqB,iBAH2nD,EAI3nD4yD,oBAJ2nD,EAK3nDl8D,8EAL2nD,EAM3nD;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAN2nD,EAU3nD;AACID,MAAAA,KAAK,EAAE,IADX;AAEIF,MAAAA,OAAO,EAAEguB,8DAFb;AAGIgf,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM8mK,qBAAN;AAAA,OAAD;AAH3B,KAV2nD,EAe3nD;AACI3zL,MAAAA,OAAO,EAAEk/H,uEADb;AAEIlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM8mK,qBAAN;AAAA,OAAD;AAF3B,KAf2nD,EAmB3nD;AACI3zL,MAAAA,OAAO,EAAEm4K,iFADb;AAEInrI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM8mK,qBAAN;AAAA,OAAD;AAF3B,KAnB2nD,EAuB3nD;AACI3zL,MAAAA,OAAO,EAAEo4K,kFADb;AAEIprI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM8mK,qBAAN;AAAA,OAAD;AAF3B,KAvB2nD,CAAnoD,GA97TsG/2L,mEA87TtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AA97TsGA,QAAAA,iEA09T9F,MA5BR;AA97TsGA,QAAAA,6DAq+T9F,4BAvCR;AA97TsGA,QAAAA,yDA2+TtF,oDA7ChB;AA97TsGA,QAAAA,yDAi/TtF,yEAnDhB;AA97TsGA,QAAAA,2DAk/T1F,IApDZ;AA97TsGA,QAAAA,yDAo/T9F,2DAtDR;AA97TsGA,QAAAA,6DA8/T9F,gBAhER;AA97TsGA,QAAAA,wDAsgU1F,cAxEZ;AA97TsGA,QAAAA,2DA0gU9F,EA5ER;AA97TsGA,QAAAA,yDA2gU9F,gFA3gU8FA,qEA2gU9F,CA7ER;AA97TsGA,QAAAA,iEAgmU9F,aAlKR;AAAA;;AAAA;AA97TsGA,QAAAA,wDAs+T1F,GAxCZ;AA97TsGA,QAAAA,0DAs+T1F,wBAxCZ;AA97TsGA,QAAAA,wDA2+TxE,GA7C9B;AA97TsGA,QAAAA,yDA2+TxE,2BA7C9B;AA97TsGA,QAAAA,wDAi/TzE,GAnD7B;AA97TsGA,QAAAA,yDAi/TzE,4BAnD7B;AA97TsGA,QAAAA,wDAq/TzF,GAvDb;AA97TsGA,QAAAA,yDAq/TzF,0HAvDb;AA97TsGA,QAAAA,wDAmgU1F,GArEZ;AA97TsGA,QAAAA,yDAmgU1F,oCArEZ;AA97TsGA,QAAAA,0DAogU1F,kDAtEZ;AA97TsGA,QAAAA,wDAwgUtF,GA1EhB;AA97TsGA,QAAAA,yDAwgUtF,8BA1EhB;AAAA;AAAA;AAAA,iBAmK4C0iI,gFAnK5C,EAmKsqBigC,0BAnKtqB,EAmK+gC2Y,kDAnK/gC,EAmKimChuD,wBAnKjmC,EAmKisCguD,qDAnKjsC,EAmK6wC92D,iEAnK7wC,EAmK0gD+oE,oBAnK1gD,EAmK8lD/oE,4DAnK9lD,EAmKmrDA,oDAnKnrD,EAmKw3Du2D,0FAnKx3D,EAmK6/Dr4C,8EAnK7/D;AAAA;AAAA;AAAA;SAz5BMq0D;;;AA6jCN;AAAA;AAAA;AAuUA;AACA;AACA;AACA;AACA;;;IACM4B;MAAAA;;;;;;;aACF,iBAAQn+K,IAAR,EAAc;AACV,YAAI,KAAKo+K,aAAL,CAAmBp+K,IAAnB,CAAJ,EAA8B;AAC1B;AACH;;AACD,YAAM7F,KAAK,GAAGkpK,wBAAwB,CAACrjK,IAAI,CAACohB,KAAN,CAAtC;AACA,YAAM+pG,SAAS,GAAG9oH,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBtC,IAAlB,CAAd,EAAuC;AAAE7F,UAAAA,KAAK,EAALA;AAAF,SAAvC,CAAlB;AACA,aAAKkkL,YAAL,CAAkBtjL,IAAlB,CAAuBowH,SAAvB;AACA,aAAKmzD,WAAL,CAAiB5mJ,GAAjB,CAAqB,KAAK6mJ,MAAL,CAAYpzD,SAAZ,CAArB;AACH;;;aACD,oBAAWnrH,IAAX,EAAiB;AAAA;;AACb,YAAI,CAAC,KAAKo+K,aAAL,CAAmBp+K,IAAnB,CAAL,EAA+B;AAC3B;AACH;;AACD,YAAM7F,KAAK,GAAGkpK,wBAAwB,CAACrjK,IAAI,CAACohB,KAAN,CAAtC;AACA,YAAM+pG,SAAS,GAAG9oH,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBtC,IAAlB,CAAd,EAAuC;AAAE7F,UAAAA,KAAK,EAALA;AAAF,SAAvC,CAAlB;AACA,aAAKkkL,YAAL,GAAoB,KAAKA,YAAL,CACf15L,MADe,CACR,UAAAqb,IAAI;AAAA,iBAAIiiK,SAAS,CAACjiK,IAAD,EAAO,OAAI,CAACyhK,UAAZ,CAAT,KAAqCQ,SAAS,CAAC92C,SAAD,EAAY,OAAI,CAACs2C,UAAjB,CAAlD;AAAA,SADI,CAApB;AAEA,aAAK6c,WAAL,CAAiBjzK,MAAjB,CAAwB,KAAKkzK,MAAL,CAAYpzD,SAAZ,CAAxB;AACH;;;aACD,uBAAcnrH,IAAd,EAAoB;AAChB,YAAM7F,KAAK,GAAG6F,IAAI,CAACohB,KAAL,CAAW3gB,KAAX,CAAiB,GAAjB,EAAsBxF,MAAtB,GAA+B,CAA7C;AACA+E,QAAAA,IAAI,CAAC7F,KAAL,GAAaA,KAAb;AACA,eAAO,KAAKmkL,WAAL,CAAiB/nD,GAAjB,CAAqB,KAAKgoD,MAAL,CAAYv+K,IAAZ,CAArB,CAAP;AACH;;;aACD,uBAAc;AAAA;;AACV,aAAKq+K,YAAL,GAAoB,KAAKA,YAAL,IAAqB,EAAzC;AACA,aAAKC,WAAL,GAAmB,IAAIlnJ,GAAJ,CAAQ,KAAKinJ,YAAL,CAAkB/pL,GAAlB,CAAsB,UAAA0L,IAAI;AAAA,iBAAI,OAAI,CAACu+K,MAAL,CAAYv+K,IAAZ,CAAJ;AAAA,SAA1B,CAAR,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,gBAAOA,IAAP,EAAa;AACT,YAAIqxC,OAAO,CAAC,KAAKowH,UAAN,CAAX,EAA8B;AAC1B,iBAAOQ,SAAS,CAACjiK,IAAD,EAAO,KAAKyhK,UAAZ,CAAT,GAAmC,GAAnC,GAAyCzhK,IAAI,CAAC7F,KAArD;AACH;;AACD,eAAO8nK,SAAS,CAACjiK,IAAD,EAAO,KAAKyhK,UAAZ,CAAhB;AACH;;;;;;AAEL0c,EAAAA,kBAAkB,CAACvuJ,IAAnB;AAAA,qBAAgHuuJ,kBAAhH;AAAA;;AACAA,EAAAA,kBAAkB,CAAC/tJ,IAAnB,kBAz9UsG5qC,gEAy9UtG;AAAA,UAAoG24L,kBAApG;AAAA;AAAA;AAAA;AAAA;AAAA;SA3CMA;;;AA4CN;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;;;IACMK;MAAAA;;;;;AACF,+BAAYtmL,OAAZ,EAAqBw0C,IAArB,EAA2BniD,GAA3B,EAAgCD,QAAhC,EAA0C;AAAA;;AAAA;;AACtC;AACA,cAAK4N,OAAL,GAAeA,OAAf;AACA,cAAKw0C,IAAL,GAAYA,IAAZ;AACA,cAAKniD,GAAL,GAAWA,GAAX;AACA,cAAKD,QAAL,GAAgBA,QAAhB;AACA;AACR;AACA;;AACQ,cAAKm0L,kBAAL,GAA0B,IAAIrmL,wDAAJ,EAA1B;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,cAAKkmL,WAAL,GAAmB,IAAIlnJ,GAAJ,EAAnB;AAhBsC;AAiBzC;;;;aACD,sBAAajyC,KAAb,EAAoB;AAAA;;AAChB;AACA,aAAKu5L,mBAAL,GAA2Bv5L,KAAK,CAAC8T,OAAjC;AACA,aAAK0lL,yBAAL,GAAiC,KAAKC,eAAtC;AACA,aAAKzB,QAAL,CAAcv0H,KAAd,CAAoBt0D,GAApB,CAAwB,UAAC+iC,MAAD,EAASjW,KAAT,EAAmB;AACvC,cAAMomH,SAAS,GAAG1tD,MAAM,CAAC14D,KAAD,CAAxB;;AACA,cAAMo8J,UAAU,GAAG,OAAI,CAACL,QAAL,CAAcK,UAAd,CAAyBh2C,SAAzB,CAAnB;;AACA,iBAAI,CAACq3C,SAAL,CAAerB,UAAf;AACH,SAJD;AAKA,aAAKiB,kBAAL,CAAwBz/K,IAAxB,CAA6B,KAAKq/K,YAAL,CAAkBl+K,KAAlB,EAA7B;AACH;;;WACD,eAAsB;AAAA;;AAClB,YAAMy+K,eAAe,GAAG,KAAKzB,QAAL,CAAcv0H,KAAd,CAAoBloD,IAApB,CAAyB,UAACo+K,KAAD,EAAQ19J,KAAR,EAAkB;AAC/D,cAAMomH,SAAS,GAAG1tD,MAAM,CAAC14D,KAAD,CAAxB;;AACA,cAAMo8J,UAAU,GAAG,OAAI,CAACL,QAAL,CAAcK,UAAd,CAAyBh2C,SAAzB,CAAnB;;AACA,iBAAO,OAAI,CAACu3C,WAAL,CAAiBvB,UAAjB,CAAP;AACH,SAJuB,CAAxB;AAKA,eAAO,KAAK5U,SAAL,GAAiB,KAAjB,GAAyBgW,eAAhC;AACH;;;WACD,eAAgB;AAAA;;AACZ,YAAMhW,SAAS,GAAG,KAAKuU,QAAL,CAAcv0H,KAAd,CAAoBqwB,KAApB,CAA0B,UAAC6lG,KAAD,EAAQ19J,KAAR,EAAkB;AAC1D,cAAMomH,SAAS,GAAG1tD,MAAM,CAAC14D,KAAD,CAAxB;;AACA,cAAMo8J,UAAU,GAAG,OAAI,CAACL,QAAL,CAAcK,UAAd,CAAyBh2C,SAAzB,CAAnB;;AACA,iBAAO,OAAI,CAACw3C,UAAL,CAAgBxB,UAAhB,CAAP;AACH,SAJiB,CAAlB;AAKA,eAAO5U,SAAP;AACH;;;aACD,qBAAYx0K,OAAZ,EAAqB;AACjB,YAAIo3G,SAAS,CAACp3G,OAAO,CAACiqL,YAAT,CAAb,EAAqC;AACjC,eAAKY,WAAL;AACA,eAAK30L,QAAL,CAAc4tC,WAAd,CAA0B,KAAKhgC,OAAL,CAAaT,aAAvC,EAAsD,SAAtD,EAAiE,KAAKmxK,SAAtE;AACA,eAAKt+K,QAAL,CAAc4tC,WAAd,CAA0B,KAAKhgC,OAAL,CAAaT,aAAvC,EAAsD,eAAtD,EAAuE,KAAKmnL,eAA5E;AACH;AACJ;;;aACD,oBAAW;AAAA;;AACP,YAAI,KAAKzhK,OAAT,EAAkB;AACd,eAAK61J,QAAL,CAAc;AAAA,mBAAM,OAAI,CAAC96K,OAAL,CAAaT,aAAb,CAA2BiwC,KAA3B,EAAN;AAAA,WAAd;AACH;AACJ;;;aACD,kBAASnR,EAAT,EAAa;AACT,aAAKmW,IAAL,CAAUrS,iBAAV,CAA4B;AAAA,iBAAMhrC,UAAU,CAACknC,EAAD,CAAhB;AAAA,SAA5B;AACH;;;aACD,mBAAUinJ,UAAV,EAAsB;AAAA;;AAClB,YAAI,KAAKL,QAAL,CAAc3mJ,UAAd,CAAyBgnJ,UAAU,CAACx9K,IAAX,CAAgBozG,QAAzC,EAAmDoqE,UAAU,CAACx9K,IAAX,CAAgBohB,KAAnE,CAAJ,EAA+E;AAC3E;AACH;;AACD,YAAM89J,YAAY,GAAG,EAArB;;AACA,YAAMv6L,MAAM,GAAG,SAATA,MAAS,CAACqb,IAAD;AAAA,iBAAU,OAAI,CAACm9K,QAAL,CAAcp5D,SAAd,CAAwB/jH,IAAI,CAACozG,QAA7B,EAAuCpzG,IAAI,CAACohB,KAA5C,KACrB,CAAC,OAAI,CAAC+7J,QAAL,CAAc3mJ,UAAd,CAAyBx2B,IAAI,CAACozG,QAA9B,EAAwCpzG,IAAI,CAACohB,KAA7C,CADU;AAAA,SAAf;;AAEA89J,QAAAA,YAAY,CAACnkL,IAAb,CAAkByiL,UAAU,CAACx9K,IAA7B;AACAsjK,QAAAA,oBAAoB,CAACka,UAAD,EAAa74L,MAAb,CAApB,CACK6G,OADL,CACa,UAAA+3K,MAAM;AAAA,iBAAI2b,YAAY,CAACnkL,IAAb,CAAkBwoK,MAAM,CAACvjK,IAAzB,CAAJ;AAAA,SADnB;AAEAk/K,QAAAA,YAAY,CAAC1zL,OAAb,CAAqB,UAAAwU,IAAI,EAAI;AACzB,cAAI,OAAI,CAAC2+K,yBAAT,EAAoC;AAChC,gBAAI,OAAI,CAACxkB,UAAL,KAAoB,OAAxB,EAAiC;AAC7B,qBAAI,CAACv1E,OAAL,CAAa5kF,IAAb;AACH,aAFD,MAGK;AACD,qBAAI,CAAC1B,UAAL,CAAgB0B,IAAhB;AACH;;AACD;AACH;;AACD,cAAI,OAAI,CAAC0+K,mBAAT,EAA8B;AAC1B,mBAAI,CAAC95F,OAAL,CAAa5kF,IAAb;AACH,WAFD,MAGK;AACD,mBAAI,CAAC1B,UAAL,CAAgB0B,IAAhB;AACH;AACJ,SAhBD;AAiBH;;;aACD,oBAAWujK,MAAX,EAAmB;AAAA;;AACf,YAAM3/K,QAAQ,GAAG2/K,MAAM,IAAIA,MAAM,CAAC3/K,QAAlC;;AACA,YAAI,CAACkhB,KAAK,CAACusC,OAAN,CAAcztD,QAAd,CAAL,EAA8B;AAC1B;AACH;;AACD,YAAMu7L,eAAe,GAAGv7L,QAAQ,CAACq1F,KAAT,CAAe,UAAAF,KAAK,EAAI;AAC5C,cAAIA,KAAK,CAACn1F,QAAN,CAAeqX,MAAnB,EAA2B;AACvB,mBAAO,OAAI,CAACmjL,aAAL,CAAmBrlG,KAAK,CAAC/4E,IAAzB,KAAkC,OAAI,CAACg/K,UAAL,CAAgBjmG,KAAhB,CAAzC;AACH;;AACD,iBAAO,OAAI,CAACqlG,aAAL,CAAmBrlG,KAAK,CAAC/4E,IAAzB,CAAP;AACH,SALuB,CAAxB;AAMA,eAAOm/K,eAAe,IAAI,KAAKf,aAAL,CAAmB7a,MAAM,CAACvjK,IAA1B,CAA1B;AACH;;;aACD,qBAAYujK,MAAZ,EAAoB;AAAA;;AAChB,YAAM3/K,QAAQ,GAAG2/K,MAAM,IAAIA,MAAM,CAAC3/K,QAAlC;;AACA,YAAI,CAACkhB,KAAK,CAACusC,OAAN,CAAcztD,QAAd,CAAL,EAA8B;AAC1B;AACH;;AACD,YAAMu7L,eAAe,GAAGv7L,QAAQ,CAAC8c,IAAT,CAAc,UAAAq4E,KAAK,EAAI;AAC3C,cAAIA,KAAK,CAACn1F,QAAN,CAAeqX,MAAnB,EAA2B;AACvB,mBAAO,OAAI,CAACmjL,aAAL,CAAmBrlG,KAAK,CAAC/4E,IAAzB,KAAkC,OAAI,CAAC++K,WAAL,CAAiBhmG,KAAjB,CAAzC;AACH;;AACD,iBAAO,OAAI,CAACqlG,aAAL,CAAmBrlG,KAAK,CAAC/4E,IAAzB,CAAP;AACH,SALuB,CAAxB;AAMA,eAAOm/K,eAAe,IAAI,KAAKf,aAAL,CAAmB7a,MAAM,CAACvjK,IAA1B,CAA1B;AACH;;;;IAlH2Bm+K;;AAoHhCK,EAAAA,iBAAiB,CAAC5uJ,IAAlB;AAAA,qBAA+G4uJ,iBAA/G,EA3lVsGh5L,gEA2lVtG,CAAkJA,sDAAlJ,GA3lVsGA,gEA2lVtG,CAA4KA,kDAA5K,GA3lVsGA,gEA2lVtG,CAAkMA,6DAAlM,GA3lVsGA,gEA2lVtG,CAAmOA,qDAAnO;AAAA;;AACAg5L,EAAAA,iBAAiB,CAACpuJ,IAAlB,kBA5lVsG5qC,gEA4lVtG;AAAA,UAAmGg5L,iBAAnG;AAAA;AAAA;AAAA;AA5lVsGh5L,QAAAA,yDA4lVtG;AAAA,iBAAmG,+BAAnG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA5lVsGA,yEA4lVtG,EA5lVsGA,mEA4lVtG;AAAA;SArHMg5L;;;AAsHN;AAAA;AAAA;AAwBA;AACA;AACA;AACA;AACA;;;IACMY;MAAAA;;;;;AACF,4BAAYC,QAAZ,EAAsB;AAAA;;AAAA;;AAClB;AACA,cAAKA,QAAL,GAAgBA,QAAhB;AACA;AACR;AACA;;AACQ,cAAKZ,kBAAL,GAA0B,IAAIrmL,wDAAJ,EAA1B;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,cAAKkmL,WAAL,GAAmB,IAAIlnJ,GAAJ,EAAnB;AACA,cAAK+lF,aAAL,GAAqB,IAAIzS,+CAAJ,EAArB;;AACA,cAAKyS,aAAL,CAAmBzlF,GAAnB,CAAuB,QAAK2nJ,QAAL,CAAcC,aAAd,CAClBl6L,SADkB,CACR,QAAKm6L,mBAAL,CAAyBhwL,IAAzB,iNADQ,CAAvB;;AAEA,cAAK8vL,QAAL,CAAczW,SAAd,GAA0B,QAAK4W,eAAL,CAAqBjwL,IAArB,iNAA1B;AAjBkB;AAkBrB;;;;aACD,qBAAY6E,OAAZ,EAAqB;AACjB,YAAIo3G,SAAS,CAACp3G,OAAO,CAACqrL,SAAT,CAAb,EAAkC;AAC9B,eAAKC,kBAAL;AACH;;AACD,YAAIl0E,SAAS,CAACp3G,OAAO,CAACiqL,YAAT,CAAb,EAAqC;AACjC,eAAKY,WAAL;AACH;AACJ;;;aACD,uBAAc;AACV,aAAK9hE,aAAL,CAAmB53H,WAAnB;AACA,aAAKo6L,gBAAL;AACH;;;aACD,yBAAgBvsE,QAAhB,EAA0BhyF,KAA1B,EAAiC;AAC7B,YAAI,KAAKg9J,aAAL,CAAmB;AAAEhrE,UAAAA,QAAQ,EAARA,QAAF;AAAYhyF,UAAAA,KAAK,EAALA;AAAZ,SAAnB,CAAJ,EAA6C;AACzC,iBAAO,SAAP;AACH,SAFD,MAGK,IAAI,KAAKq+J,SAAL,CAAeG,aAAf,IAAgC,KAAKC,mBAAL,CAAyB,KAAKR,QAAL,CAAc7B,UAAd,CAAyBp8J,KAAzB,CAAzB,CAApC,EAA+F;AAChG,iBAAO,eAAP;AACH,SAFI,MAGA;AACD,iBAAO,MAAP;AACH;AACJ;;;aACD,6BAAoBiuE,IAApB,EAA0B;AACtB,aAAKwvF,SAAL,CAAexvF,IAAf,EADsB,CAEtB;;AACA,YAAMywF,YAAY,GAAG,KAAKL,SAAL,CAAeG,aAApC;;AACA,YAAIE,YAAJ,EAAkB;AACd,eAAKA,YAAL,CAAkBzwF,IAAI,CAACh0F,MAAvB;AACH;;AACD,aAAKojL,kBAAL,CAAwBz/K,IAAxB,CAA6B,KAAKq/K,YAAL,CAAkBl+K,KAAlB,EAA7B;AACH;;;aACD,8BAAqB;AAAA;;AACjB,aAAKw/K,gBAAL;;AACA,YAAI,KAAKF,SAAL,CAAe5X,YAAnB,EAAiC;AAC7B,eAAKkY,iBAAL,GAAyB,KAAKV,QAAL,CAAcW,SAAd,CACpB96L,IADoB,CACfP,uDAAM,CAAC,UAAAQ,KAAK;AAAA,mBAAIA,KAAK,CAAC+I,IAAN,KAAe,OAAnB;AAAA,WAAN,CADS,EAEpB9I,SAFoB,CAEV,UAAAD,KAAK,EAAI;AACpB,gBAAMo+K,MAAM,GAAG,OAAI,CAAC8b,QAAL,CAAc7B,UAAd,CAAyBr4L,KAAK,CAAC6a,IAAN,CAAWohB,KAApC,CAAf;;AACA,mBAAI,CAACm+J,mBAAL,CAAyBhc,MAAzB;AACH,WALwB,CAAzB;AAMH;AACJ;;;aACD,4BAAmB;AACf,YAAI,KAAKwc,iBAAT,EAA4B;AACxB,eAAKA,iBAAL,CAAuBx6L,WAAvB;AACA,eAAKw6L,iBAAL,GAAyB,IAAzB;AACH;AACJ;;;aACD,mBAAUxc,MAAV,EAAkB;AAAA;;AACd,YAAI,KAAK8b,QAAL,CAAc7oJ,UAAd,CAAyB+sI,MAAM,CAACvjK,IAAP,CAAYozG,QAArC,EAA+CmwD,MAAM,CAACvjK,IAAP,CAAYohB,KAA3D,CAAJ,EAAuE;AACnE;AACH;;AACD,YAAMtyB,MAAM,GAAGy0K,MAAM,CAACvjK,IAAtB;AACA,YAAMk/K,YAAY,GAAG,CAACpwL,MAAD,CAArB,CALc,CAMd;;AACA,YAAI,KAAK2wL,SAAL,CAAeG,aAAnB,EAAkC;AAC9B,cAAMj7L,QAAM,GAAG,SAATA,QAAS,CAACqb,IAAD;AAAA,mBAAU,OAAI,CAACq/K,QAAL,CAAct7D,SAAd,CAAwB/jH,IAAI,CAACozG,QAA7B,EAAuCpzG,IAAI,CAACohB,KAA5C,KACrB,CAAC,OAAI,CAACi+J,QAAL,CAAc7oJ,UAAd,CAAyBx2B,IAAI,CAACozG,QAA9B,EAAwCpzG,IAAI,CAACohB,KAA7C,CADU;AAAA,WAAf;;AAEAkiJ,UAAAA,oBAAoB,CAACC,MAAD,EAAS5+K,QAAT,CAApB,CACK6G,OADL,CACa,UAAA+3K,MAAM;AAAA,mBAAI2b,YAAY,CAACnkL,IAAb,CAAkBwoK,MAAM,CAACvjK,IAAzB,CAAJ;AAAA,WADnB;AAEH;;AACD,YAAMigL,WAAW,GAAG,CAAC,KAAK7B,aAAL,CAAmBtvL,MAAnB,CAArB;AACAowL,QAAAA,YAAY,CAAC1zL,OAAb,CAAqB,UAAAwU,IAAI,EAAI;AACzB,cAAIigL,WAAJ,EAAiB;AACb,mBAAI,CAACr7F,OAAL,CAAa5kF,IAAb;AACH,WAFD,MAGK;AACD,mBAAI,CAAC1B,UAAL,CAAgB0B,IAAhB;AACH;AACJ,SAPD;AAQH;;;aACD,sBAAa3E,MAAb,EAAqB;AAAA;;AACjB,YAAI6kL,aAAa,GAAG7kL,MAApB;;AACA,eAAO6kL,aAAP,EAAsB;AAClB,cAAMC,mBAAmB,GAAGD,aAAa,CAACt8L,QAAd,CAAuBq1F,KAAvB,CAA6B,UAAAj5E,IAAI;AAAA,mBAAI,OAAI,CAACo+K,aAAL,CAAmBp+K,IAAnB,CAAJ;AAAA,WAAjC,CAA5B;;AACA,cAAImgL,mBAAJ,EAAyB;AACrB,iBAAKv7F,OAAL,CAAas7F,aAAa,CAAClgL,IAA3B;AACH,WAFD,MAGK;AACD,iBAAK1B,UAAL,CAAgB4hL,aAAa,CAAClgL,IAA9B;AACH;;AACDkgL,UAAAA,aAAa,GAAGA,aAAa,CAAC7kL,MAA9B;AACH;AACJ;;;aACD,6BAAoBkoK,MAApB,EAA4B;AACxB,YAAM3/K,QAAQ,GAAG2/K,MAAM,CAAC3/K,QAAxB;;AACA,YAAI,CAACkhB,KAAK,CAACusC,OAAN,CAAcztD,QAAd,CAAD,IAA4BA,QAAQ,CAACqX,MAAT,KAAoB,CAApD,EAAuD;AACnD,iBAAO,KAAP;AACH;;AACD,YAAImmB,KAAK,GAAG,CAAZ;AACA,YAAI23D,KAAK,GAAGn1F,QAAQ,CAACw9B,KAAD,CAApB;;AACA,eAAOoqF,SAAS,CAACzyB,KAAD,CAAhB,EAAyB;AACrB,cAAI,KAAKqlG,aAAL,CAAmBrlG,KAAK,CAAC/4E,IAAzB,KAAkC,KAAK6/K,mBAAL,CAAyB9mG,KAAzB,CAAtC,EAAuE;AACnE,mBAAO,IAAP;AACH;;AACD33D,UAAAA,KAAK,IAAI,CAAT;AACA23D,UAAAA,KAAK,GAAGn1F,QAAQ,CAACw9B,KAAD,CAAhB;AACH;;AACD,eAAO,KAAP;AACH;;;;IAxHwB+8J;;AA0H7BiB,EAAAA,cAAc,CAACxvJ,IAAf;AAAA,qBAA4GwvJ,cAA5G,EApvVsG55L,gEAovVtG,CAA4I0iI,gFAA5I;AAAA;;AACAk3D,EAAAA,cAAc,CAAChvJ,IAAf,kBArvVsG5qC,gEAqvVtG;AAAA,UAAgG45L,cAAhG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eArvVsG55L,yEAqvVtG,EArvVsGA,mEAqvVtG;AAAA;SA3HM45L;;;AA4HN;AAAA;AAAA;;AAeA,IAAMgB,sBAAsB,GAAG;AAAEhuL,EAAAA,OAAO,EAAE;AAAX,CAA/B;AACA,IAAMiuL,0BAA0B,GAAG;AAAET,EAAAA,aAAa,EAAE,IAAjB;AAAuB/X,EAAAA,YAAY,EAAE;AAArC,CAAnC;;AACA,IAAM8U,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAM,KAAN;AAAA,CAApB;;AACA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB;AAAA,SAAM3zF,yCAAE,CAAC,EAAD,CAAR;AAAA,CAAtB;;AACA,IAAM09E,YAAY,GAAG,SAAfA,YAAe;AAAA,SAAM,KAAN;AAAA,CAArB;;AACA,IAAMkW,aAAa,GAAG,SAAhBA,aAAgB;AAAA,SAAM,IAAN;AAAA,CAAtB;;AACA,IAAM/+D,YAAY,GAAG,QAArB;AACA,IAAMD,eAAe,GAAG,QAAxB;AACA,IAAMpE,iBAAiB,GAAG,OAA1B;AACA;AACA;AACA;;IACM6mE;MAAAA;AACF,sCAAYhrE,OAAZ,EAAqB6B,YAArB,EAAmC7sH,QAAnC,EAA6CyqH,iBAA7C,EAAgE7oD,KAAhE,EAAuEyhD,YAAvE,EAAqFpjH,GAArF,EAA0F0/H,YAA1F,EAAwG;AAAA;;AACpG,WAAK3U,OAAL,GAAeA,OAAf;AACA,WAAK6B,YAAL,GAAoBA,YAApB;AACA,WAAK7sH,QAAL,GAAgBA,QAAhB;AACA,WAAKyqH,iBAAL,GAAyBA,iBAAzB;AACA,WAAK7oD,KAAL,GAAaA,KAAb;AACA,WAAKyhD,YAAL,GAAoBA,YAApB;AACA,WAAKpjH,GAAL,GAAWA,GAAX;AACA,WAAK0/H,YAAL,GAAoBA,YAApB;AACA,WAAK2+B,WAAL,GAAmB,IAAnB;AACA,WAAK7qJ,IAAL,GAAY,UAAZ;AACA,WAAKy+K,YAAL,GAAoB,MAApB;AACA;AACR;AACA;AACA;;AACQ,WAAKhF,UAAL,GAAkB,EAAlB;AACA;AACR;AACA;;AACQ,WAAKn3F,WAAL,GAAmB,EAAnB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKwjE,UAAL,GAAkB,GAAlB;AACA;AACR;AACA;;AACQ,WAAK5mI,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK+K,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKqoJ,cAAL,GAAsB,KAAtB;AACA;AACR;AACA;AACA;;AACQ,WAAKyM,YAAL,GAAoB,KAApB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK3lC,WAAL,eAAwBqpB,qEAAM,EAA9B;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKyK,WAAL,GAAmB,IAAnB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKC,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKqV,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;;AACQ,WAAK5D,WAAL,GAAmBA,WAAnB;AACA;AACR;AACA;;AACQ,WAAKC,aAAL,GAAqBA,aAArB;AACA;AACR;AACA;AACA;;AACQ,WAAKC,aAAL,GAAqBA,aAArB;AACA;AACR;AACA;;AACQ,WAAKlW,YAAL,GAAoBA,YAApB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKqR,SAAL,GAAiB,UAACC,IAAD;AAAA,eAAUA,IAAI,IAAI,EAAlB;AAAA,OAAjB;AACA;AACR;AACA;;;AACQ,WAAKzhI,OAAL,GAAe,IAAIp+C,wDAAJ,EAAf;AACA;AACR;AACA;;AACQ,WAAKs+C,MAAL,GAAc,IAAIt+C,wDAAJ,EAAd;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAK6B,IAAL,GAAY,IAAI7B,wDAAJ,EAAZ;AACA;AACR;AACA;;AACQ,WAAKkhB,MAAL,GAAc,IAAIlhB,wDAAJ,EAAd;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,wDAAJ,EAAb;AACA;AACR;AACA;;AACQ,WAAK07C,MAAL,GAAc,IAAI17C,wDAAJ,EAAd;AACA;AACR;AACA;;AACQ,WAAKqkL,UAAL,GAAkB,IAAIrkL,wDAAJ,EAAlB;AACA;AACR;AACA;;AACQ,WAAKskL,YAAL,GAAoB,IAAItkL,wDAAJ,EAApB;AACA;AACR;AACA;AACA;;AACQ,WAAK+nI,WAAL,GAAmB,IAAI/nI,wDAAJ,EAAnB;AACA;AACR;AACA;AACA;;AACQ,WAAK2+K,SAAL,GAAiB,IAAI3+K,wDAAJ,EAAjB;AACA;AACR;AACA;;AACQ,WAAK+yK,YAAL,GAAoB,IAAI/yK,wDAAJ,EAApB;AACA;AACR;AACA;;AACQ,WAAK4kL,iBAAL,GAAyB,IAAI5kL,wDAAJ,EAAzB;AACA;AACR;AACA;;AACQ,WAAKimL,YAAL,GAAoB,EAApB;AACA;AACR;AACA;;AACQ,WAAKmC,OAAL,GAAe,UAACxgL,IAAD;AAAA,eAAUA,IAAV;AAAA,OAAf;AACA;AACR;AACA;;;AACQ,WAAKygL,SAAL,GAAiB,CAAjB;AACA;AACR;AACA;;AACQ,WAAKxD,cAAL,GAAsB,KAAtB;AACA,WAAKnF,SAAL,GAAiBtX,qEAAM,EAAvB;AACA,WAAK6W,SAAL,GAAiB,SAAS7W,qEAAM,EAAhC;AACA,WAAKuX,eAAL,GAAuB1kK,SAAvB;AACA,WAAKgkB,MAAL,GAAc,EAAd;AACA,WAAK+xH,SAAL,GAAiB,CAAjB;AACA,WAAKl0C,cAAL,GAAsBkrE,sBAAtB;AACA,WAAKM,kBAAL,GAA0BL,0BAA1B;AACA,WAAKhrE,UAAL,GAAkB,KAAlB;AACA,WAAKrH,KAAL,GAAa,QAAb;AACA,WAAKC,QAAL,GAAgB,QAAhB;AACA,WAAKC,SAAL,GAAiB,OAAjB;AACA,WAAKiP,aAAL,GAAqB,EAArB;AACA,WAAKg9C,UAAL,GAAkB,OAAlB;AACA,WAAKqR,iBAAL,GAAyBzhH,IAAzB;AACA,WAAKwhH,gBAAL,GAAwBxhH,IAAxB;AACA,WAAKhuB,SAAL,GAAiB4xE,YAAY,CAACW,GAAb,GAAmB,KAAnB,GAA2B,KAA5C;AACA,WAAKuE,eAAL;AACA,WAAK8gE,oBAAL;AACH;;;;WACD,eAAiB;AACb,eAAO,KAAK12J,QAAZ;AACH;;;WACD,eAAgB;AACZ,eAAO,KAAKy2D,OAAZ;AACH;;;WACD,eAAS;AACL,eAAO,KAAKyjE,WAAZ;AACH;;;WACD,eAAmB;AACf,eAAO,KAAK72H,QAAZ;AACH;;;WACD,eAAqB;AACjB,eAAO,KAAKxnB,MAAZ;AACH;;;WACD,eAAiB;AACb,eAAO,KAAKkvB,QAAZ;AACH;;;WACD,eAAsB;AAClB,eAAO,KAAK8vJ,SAAZ;AACH;;;WACD,eAA2B;AACvB,eAAO,KAAK6I,YAAZ;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,aAAK3jC,WAAL,CAAiB,CAAC,KAAKlkJ,MAAvB;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc3T,KAAd,EAAqB;AACjB,YAAMg0L,SAAS,GAAG,KAAKyH,eAAL,IAAwBz7L,KAAK,CAAC+9F,OAAN,KAAkBgnB,2EAA1C,IAA4D,KAAK+tE,IAAL,CAAUh9K,MAAV,GAAmB,CAAjG;;AACA,YAAIk+K,SAAJ,EAAe;AACX,eAAKC,eAAL;AACA;AACH;;AACD,YAAI,KAAKn8J,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,YAAMuuF,SAAS,GAAGpxH,KAAlB;AACA,YAAMo3G,MAAM,GAAG,KAAKwY,iBAAL,CAAuByB,OAAvB,CAA+B;AAC1CmE,UAAAA,aAAa,EAAEpE;AAD2B,SAA/B,CAAf;;AAGA,YAAIha,MAAM,KAAKoX,gBAAgB,CAACe,IAAhC,EAAsC;AAClC6B,UAAAA,SAAS,CAACl9G,cAAV;AACH;AACJ;;;WAkBD,eAAe;AACX,eAAO,KAAK6jL,SAAZ;AACH;AACD;AACJ;AACA;;WAtBI,aAAaC,QAAb,EAAuB;AAAA;;AACnB,aAAKD,SAAL,GAAiBC,QAAjB;;AACA,YAAIA,QAAJ,EAAc;AACV;AACA,cAAI,KAAK/mJ,SAAL,IAAkB,CAAC,KAAK80I,UAAxB,IAAsC,CAAC,KAAKqV,QAA5C,IAAwD,KAAKt2D,YAAjE,EAA+E;AAC3EkzD,YAAAA,QAAQ,CAACz1I,KAAT;AACH;AACD;AACZ;AACA;AACA;AACA;AACA;AACA;;;AACYn0C,UAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B;AAAA,mBAAM,OAAI,CAACg6L,QAAL,CAAc/qL,OAAd,GAAwB,IAA9B;AAAA,WAA3B;AACH;AACJ;;;WAYD,eAAe;AACX,eAAO,KAAK6qB,QAAL,GAAgB,CAAC,CAAjB,GAAqB,KAAKmsI,SAAjC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WAjBI,aAAatzJ,KAAb,EAAoB;AAChB,YAAMg+K,gBAAgB,GAAG7Q,WAAW,CAACntK,KAAD,CAApC;AACA,YAAMi+K,eAAe,GAAG,CAAxB;AACA,aAAK3qB,SAAL,GAAiB,CAAC96H,KAAK,CAACwlJ,gBAAD,CAAN,GAA2BA,gBAA3B,GAA8CC,eAA/D;AACH;;;WAsBD,eAAW;AACP,eAAO,KAAK/lE,KAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WArBI,aAASjgH,IAAT,EAAe;AACX,YAAM+gH,OAAO,GAAG/gH,IAAI,GAAGA,IAAH,GAAU+vH,YAA9B;AACA,aAAKxzH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAlE;;AACA,YAAIA,IAAI,KAAK,MAAb,EAAqB;AACjB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU3gB,OAAV,CAA/D;AACH;;AACD,aAAKd,KAAL,GAAac,OAAb;AACH;;;WAuBD,eAAc;AACV,eAAO,KAAKb,QAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAYe,OAAZ,EAAqB;AACjB,YAAMC,UAAU,GAAGD,OAAO,GAAGA,OAAH,GAAa6O,eAAvC;AACA,aAAKvzH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAArE;;AACA,YAAIA,OAAO,KAAK,MAAhB,EAAwB;AACpB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAACzgB,UAAD,CAAlE;AACH;;AACD,aAAKhB,QAAL,GAAgBgB,UAAhB;AACH;;;WAsBD,eAAe;AACX,eAAO,KAAKf,SAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;WApBI,aAAatB,QAAb,EAAuB;AACnB,YAAMsC,WAAW,GAAGtC,QAAQ,GAAGA,QAAH,GAAc6M,iBAA1C;AACA,aAAKnvH,QAAL,CAAcc,WAAd,CAA0B,KAAKkqH,OAAL,CAAa79G,aAAvC,EAAsDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAtE;;AACA,YAAIA,QAAQ,KAAK,MAAjB,EAAyB;AACrB,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAUzgB,WAAV,CAAnE;AACH;;AACD,aAAKhB,SAAL,GAAiBgB,WAAjB;AACH;;;WAoBD,eAAoB;AAChB,eAAO,KAAKgG,cAAZ;AACH;AACD;AACJ;AACA;AACA;;WAZI,aAAkB0C,QAAlB,EAA4B;AACxB,aAAK1C,cAAL,GAAsB7yG,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB89K,sBAAlB,EAA0CxoE,QAA1C,CAAtB,CADwB,CAExB;AACA;;AACA,aAAKrtH,GAAL,CAASoC,aAAT;AACH;;;WAWD,eAAwB;AACpB,eAAO,KAAK+zL,kBAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;WAVI,aAAsB9oE,QAAtB,EAAgC;AAC5B,aAAK8oE,kBAAL,GAA0Br+K,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB+9K,0BAAlB,EAA8CzoE,QAA9C,CAA1B;AACH;;;WAaD,eAAW;AACP,eAAO,KAAKwlE,MAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAZI,aAAS15L,IAAT,EAAe;AACX,aAAK05L,MAAL,GAAc15L,IAAd;AACA,aAAKmsL,QAAL;AACH;;;WAcD,eAAY;AACR,eAAO,KAAKx4I,MAAZ;AACH;AACD;AACJ;AACA;AACA;;WAVI,aAAUvhC,KAAV,EAAiB;AACb,aAAKuhC,MAAL,GAAcvhC,KAAK,GAAGA,KAAH,GAAW,EAA9B;AACA,aAAK+5K,QAAL;AACH;;;WAqBD,eAAgB;AAAA;;AACZ,eAAO,KAAKgR,UAAL,IAAmB,KAAK/qL,KAAL,CAAWxB,GAAX,CAAe,UAACwB,KAAD,EAAQsrB,KAAR;AAAA,iBAAmB;AACxDgyF,YAAAA,QAAQ,EAAEt9G,KAD8C;AAExDsrB,YAAAA,KAAK,EAAE,IAFiD;AAGxDjnB,YAAAA,KAAK,EAAE,OAAI,CAACq9K,UAAL,CAAgBp2J,KAAhB,KAA0B;AAHuB,WAAnB;AAAA,SAAf,CAA1B;AAKH;AACD;AACJ;AACA;;WAtBI,aAAcvhB,KAAd,EAAqB;AAAA;;AACjB,aAAKghL,UAAL,GAAkB,CAAChhL,KAAK,IAAI,EAAV,EAAcvL,GAAd,CAAkB,UAAC0L,IAAD,EAAOohB,KAAP,EAAiB;AACjD,cAAIyhJ,QAAQ,CAAC7iK,IAAD,EAAO,CAAC,UAAD,EAAa,OAAb,EAAsB,OAAtB,CAAP,CAAZ,EAAoD;AAChD,mBAAOA,IAAP;AACH;;AACD,iBAAO;AACHozG,YAAAA,QAAQ,EAAEpzG,IADP;AAEHohB,YAAAA,KAAK,EAAE,IAFJ;AAGHjnB,YAAAA,KAAK,EAAE,OAAI,CAACq9K,UAAL,CAAgBp2J,KAAhB,KAA0B;AAH9B,WAAP;AAKH,SATiB,CAAlB;AAUA,aAAKyuJ,QAAL;AACH;;;WAWD,eAAmB;AACf,YAAI,CAACrkE,SAAS,CAAC,KAAKusE,eAAN,CAAV,IAAoC,KAAKj/K,MAA7C,EAAqD;AACjD,iBAAO,IAAP;AACH;;AACD,YAAMs6G,QAAQ,GAAG,KAAK6kE,IAAL,CAAU,KAAKF,eAAf,CAAjB;AACA,yBAAU,KAAKV,SAAf,cAA4BpV,SAAS,CAAC;AAAE7uD,UAAAA,QAAQ,EAARA;AAAF,SAAD,EAAe,KAAKquD,UAApB,CAArC;AACH;;;WAKD,eAAgB;AACZ,eAAO,KAAKpsD,UAAZ;AACH;AACD;AACJ;AACA;;WATI,aAAcj/E,SAAd,EAAyB;AACrB,aAAK9rC,QAAL,CAAc8rC,SAAS,GAAG,UAAH,GAAgB,aAAvC,EAAsD,KAAKk/E,OAAL,CAAa79G,aAAnE,EAAkF,SAAlF;AACA,aAAK49G,UAAL,GAAkBj/E,SAAlB;AACH;;;WAOD,eAAa;AACT,eAAOo1E,SAAS,CAAC,KAAK4M,QAAN,CAAhB;AACH;;;WACD,eAAY;AACR,YAAMy7D,YAAY,GAAG,KAAKv+D,OAAL,CAAa79G,aAAb,CAA2BtB,WAAhD;AACA,YAAMD,KAAK,GAAG,KAAKqiH,aAAL,CAAmBriH,KAAnB,IAA4B29K,YAA1C;AACA,YAAM30F,QAAQ,GAAG5wD,KAAK,CAACulJ,YAAD,CAAL,GAAsBA,YAAtB,aAAwCA,YAAxC,OAAjB;AACA,YAAMxc,QAAQ,GAAG/oI,KAAK,CAACp4B,KAAD,CAAL,GAAeA,KAAf,aAA0BA,KAA1B,OAAjB;AACA,eAAO;AAAEg4B,UAAAA,GAAG,EAAEgxD,QAAP;AAAiBjxD,UAAAA,GAAG,EAAEopI;AAAtB,SAAP;AACH;;;WACD,eAAa;AACT,YAAMyU,WAAW,GAAG,KAAKvzD,aAAL,CAAmB9lH,MAAvC;AACA,eAAO+4G,SAAS,CAACsgE,WAAD,CAAT,aAA4BA,WAA5B,UAA8C,MAArD;AACH;;;WACD,eAAe;AACX,YAAQ34F,QAAR,GAAqB,KAAKolC,aAA1B,CAAQplC,QAAR;;AACA,YAAI,CAACA,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;AAClC,iBAAO9/D,SAAP;AACH;;AACD,eAAO8/D,QAAQ,KAAK,WAAb,GAA2B,KAAK39B,SAAhC,GAA4C29B,QAAnD;AACH;AACD;AACJ;AACA;;;;WACI,eAA4B;AACxB,YAAM44F,gBAAgB,GAAG,CAAC,sBAAD,CAAzB;;AACA,YAAI,KAAKxzD,aAAL,CAAmBpD,UAAvB,EAAmC;AAC/B42D,UAAAA,gBAAgB,CAAChxK,IAAjB,CAAsB,KAAKw9G,aAAL,CAAmBpD,UAAzC;AACH;;AACD,eAAO42D,gBAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WAII,eAAY;AACR,eAAO,KAAKroL,IAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAXI,aAAUklE,KAAV,EAAiB;AACb,aAAKllE,IAAL,GAAYklE,KAAZ;AACH;;;WAaD,eAAe;AACX,eAAO,KAAKg0H,aAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAXI,aAAaxrK,QAAb,EAAuB;AACnB,aAAKwrK,aAAL,GAAqBxrK,QAArB;AACH;;;WAUD,eAAa;AACT,eAAO,KAAKqrK,UAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WACI,eAAe;AACX,eAAO,KAAKC,YAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WAII,eAAiB;AACb,eAAO,KAAKY,cAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;WAXI,aAAelsK,QAAf,EAAyB;AACrB,aAAKksK,cAAL,GAAsBlsK,QAAtB;AACH;;;WAaD,eAAgB;AACZ,eAAO,KAAKyrK,aAAZ;AACH;WALD,aAAczrK,QAAd,EAAwB;AACpB,aAAKyrK,aAAL,GAAqBzrK,QAArB;AACH;;;WAID,eAAmB;AACf,eAAO,CAAC,KAAKtY,MAAN,IAAgB,KAAKi/K,eAAL,KAAyB1kK,SAAhD;AACH;;;WACD,eAAuB;AACnB,eAAO,KAAK8pK,QAAL,IAAiB,KAAKA,QAAL,CAAcrlD,QAAtC;AACH;;;WACD,eAAsB;AAClB,eAAOztI,QAAQ,CAACorD,aAAT,KAA2B,KAAK6/D,OAAL,CAAa79G,aAA/C;AACH;;;WACD,eAAqB;AACjB,eAAO,KAAKqmL,WAAL,IAAoBzzL,QAAQ,CAACorD,aAAT,KAA2B,KAAKqoI,WAAL,CAAiBrmL,aAAvE;AACH;;;WACD,eAAuB;AACnB,eAAO,KAAKqpL,aAAL,IAAsBz2L,QAAQ,CAACorD,aAAT,KAA2B,KAAKqrI,aAAL,CAAmBrpL,aAA3E;AACH;;;aACD,oBAAW;AAAA;;AACP,aAAKnN,QAAL,CAAc2lE,eAAd,CAA8B,KAAKqlD,OAAL,CAAa79G,aAA3C,EAA0D,UAA1D;AACA,aAAKnN,QAAL,CAAc8C,YAAd,CAA2B,KAAKkoH,OAAL,CAAa79G,aAAxC,EAAuD,eAAvD,EAAwEqiF,MAAM,CAAC,KAAKhhF,MAAN,CAA9E;AACA,aAAKqkH,aAAL,CAAmBpiH,IAAnB,CAAwB,KAAK4yG,YAAL,CACnBv5G,OADmB,CACXhP,SADW,CACD,kBAAa;AAAA,cAAVkpH,GAAU,UAAVA,GAAU;AAChC,iBAAI,CAACvyE,SAAL,GAAiBuyE,GAAG,GAAG,KAAH,GAAW,KAA/B;;AACA,iBAAI,CAAC/jH,GAAL,CAASS,YAAT;AACH,SAJuB,CAAxB;AAKA,aAAKouJ,mBAAL;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,aAAKvgC,YAAL;AACA,aAAK2zD,iBAAL;AACH;AACD;AACJ;AACA;;;;aACI,qBAAYp4K,OAAZ,EAAqB;AAAA;;AACjB,YAAI+tH,2EAAU,CAAC,CAAC,WAAD,EAAc,YAAd,EAA4B,gBAA5B,CAAD,EAAgD/tH,OAAhD,EAAyD,KAAzD,CAAd,EAA+E;AAC3E,eAAKy7K,QAAL;AACH;;AACD,YAAI1tD,2EAAU,CAAC,CAAC,YAAD,EAAe,OAAf,EAAwB,WAAxB,CAAD,EAAuC/tH,OAAvC,EAAgD,KAAhD,CAAd,EAAsE;AAClE,cAAIA,OAAO,CAAC0B,KAAR,IAAiB,CAAC1B,OAAO,CAACgmL,SAA1B,IAAuC,CAAC,KAAK/J,cAAjD,EAAiE;AAC7D;AACA;AACA,iBAAK+J,SAAL,GAAiB,KAAKtkL,KAAtB;AACH,WAJD,MAKK;AACD;AACA,iBAAKskL,SAAL,GAAiB,KAAKA,SAAL,CAAe9lL,GAAf,CAAmB,UAAC0L,IAAD,EAAOohB,KAAP;AAAA,qBAAkB/e,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBtC,IAAlB,CAAd,EAAuC;AAAE7F,gBAAAA,KAAK,EAAE,OAAI,CAACq9K,UAAL,CAAgBp2J,KAAhB,KAA0B;AAAnC,eAAvC,CAAlB;AAAA,aAAnB,CAAjB;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,iCAAwB;AACpB,aAAK+wF,cAAL;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,mBAAU;AACN,eAAO,CAAC0R,OAAO,CAAC,KAAKxjC,WAAN,CAAR,KAA+B,CAACmrB,SAAS,CAAC,KAAK11G,KAAN,CAAV,IAA0B,KAAKA,KAAL,CAAWmF,MAAX,KAAsB,CAA/E,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,CAAC,KAAKgiB,QAAV,EAAoB;AAChB,eAAKq4F,OAAL,CAAa79G,aAAb,CAA2BiwC,KAA3B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO;AACH,YAAI,CAAC,KAAKzqB,QAAV,EAAoB;AAChB,eAAKq4F,OAAL,CAAa79G,aAAb,CAA2B+sF,IAA3B;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,qBAAYpjE,KAAZ,EAAmB;AACf,YAAI,KAAK+7J,QAAT,EAAmB;AACf,cAAM5Z,MAAM,GAAG,KAAK4Z,QAAL,CAAcK,UAAd,CAAyBp8J,KAAzB,CAAf;AACA,cAAMyzJ,cAAc,GAAG,CAACrpE,SAAS,CAAC+3D,MAAD,CAAV,IAAsB,KAAK4Z,QAAL,CAAc3mJ,UAAd,CAAyB+sI,MAAM,CAACvjK,IAAP,CAAYozG,QAArC,EAA+CmwD,MAAM,CAACvjK,IAAP,CAAYohB,KAA3D,CAA7C;;AACA,cAAI,CAACyzJ,cAAL,EAAqB;AACjB,iBAAKsI,QAAL,CAAcz1I,KAAd,CAAoBtmB,KAApB;AACH;AACJ;AACJ;AACD;AACJ;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAKtrB,KAAL,GAAa,EAAb;AACA,aAAKskL,SAAL,GAAiB,EAAjB;AACA,aAAK5C,UAAL,GAAkB,EAAlB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,gBAAOv9K,IAAP,EAAa;AAAA;;AACT;AACA;AACA1G,QAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBrQ,IAAtB,CAA2B,YAAM;AAC7B,cAAM07H,UAAU,GAAGrT,SAAS,CAACvxG,IAAD,CAAT,GAAkBA,IAAlB,GAAyB,CAACuxG,SAAS,CAAC,OAAI,CAAC4M,QAAN,CAAtD;;AACA,iBAAI,CAACS,YAAL;;AACA,cAAIgG,UAAJ,EAAgB;AACZ,mBAAI,CAAC7F,WAAL;AACH;AACJ,SAND;AAOH;AACD;AACJ;AACA;;;;aACI,qBAAY7zH,KAAZ,EAAmB;AAAA;;AACf,YAAIA,KAAK,CAAC2J,MAAN,KAAiB,KAAKwmH,OAAL,CAAa79G,aAAlC,EAAiD;AAC7C;AACH;;AACDtS,QAAAA,KAAK,CAACunL,wBAAN;;AACA,YAAI,CAAC,KAAKt2I,SAAV,EAAqB;AACjB,eAAKA,SAAL,GAAiB,IAAjB;;AACA,cAAIg0E,6EAAY,CAAC,KAAK5zD,OAAN,CAAhB,EAAgC;AAC5B,iBAAK0V,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,qBAAI,CAACub,OAAL,CAAax3C,IAAb;AACH,aAFD;AAGH,WANgB,CAOjB;;;AACA,cAAI,KAAKlG,MAAL,IAAe,KAAKqkL,QAAxB,EAAkC;AAC9B,gBAAI,KAAK4D,eAAT,EAA0B;AACtB,mBAAKA,eAAL,CAAqB3zL,YAArB,CAAkC,UAAlC,EAA8C,GAA9C;AACH;;AACD,iBAAK+vL,QAAL,CAAcz1I,KAAd;AACH;AACJ;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAWl5C,CAAX,EAAc;AAAA;;AACV,YAAM05C,aAAa,GAAG15C,CAAC,IAAIA,CAAC,CAAC05C,aAA7B;;AACA,YAAI,KAAKotE,OAAL,CAAa79G,aAAb,CAA2BzI,QAA3B,CAAoCk5C,aAApC,KACC,KAAKpvC,MAAL,IAAe,KAAKs/G,QAAL,CAAcK,YAAd,CAA2BzpH,QAA3B,CAAoCk5C,aAApC,CADpB,EACyE;AACrE;AACH;;AACD,aAAK9R,SAAL,GAAiB,KAAjB;AACA,aAAK4mH,WAAL,CAAiB,KAAjB;;AACA,YAAI5yC,6EAAY,CAAC,KAAK1zD,MAAN,CAAZ,IACAqsH,WAAW,CAAC,KAAKztD,OAAL,CAAa79G,aAAd,CADf,EAC6C;AACzC,eAAKy0D,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,mBAAI,CAACyb,MAAL,CAAY13C,IAAZ;;AACA,mBAAI,CAACwsK,iBAAL;AACH,WAHD;AAIH;AACJ;AACD;AACJ;AACA;;;;aACI,yBAAgBn8E,IAAhB,EAAsB;AAClB,YAAI,CAAC,KAAKj5D,SAAV,EAAqB;AACjB;AACA;AACA,cAAM/6B,MAAM,GAAGg0F,IAAI,CAACsrB,aAAL,CAAmB7rH,MAAnB,CAA0BwgC,aAA1B,CAAwCA,aAAvD;AACA,eAAKyxJ,eAAL,GAAuB1lL,MAAvB;AACA,eAAKqsC,KAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,qBAAYztC,IAAZ,EAAkB;AAAA;;AACd,YAAMu8B,UAAU,GAAG,KAAKvZ,QAAL,IAAiB,KAAK+K,QAAzC;AACA,YAAMokJ,SAAS,GAAG,KAAKtzK,MAAL,KAAgBmB,IAAlC;;AACA,aAAKiyD,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,iBAAI,CAAC88I,eAAL,GAAuB1kK,SAAvB;AACH,SAFD;;AAGA,YAAImjB,UAAU,IAAI41I,SAAlB,EAA6B;AACzB;AACH;;AACD,YAAMmR,eAAe,GAAG,KAAKlR,kBAAL,CAAwBpyK,IAAxB,CAAxB;;AACA,YAAI,CAACsjL,eAAL,EAAsB;AAClB,cAAItjL,IAAJ,EAAU;AACN,iBAAK++G,WAAL;AACH,WAFD,MAGK;AACD,iBAAKH,YAAL;AACH;AACJ,SAPD,MAQK;AACD,eAAKmoE,0BAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAWpgL,GAAX,EAAgB;AACZ,eAAO,KAAK+sG,YAAL,CAAkBnsG,GAAlB,CAAsBZ,GAAtB,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,kCAAyBf,KAAzB,EAAgC;AAC5B,aAAK23K,UAAL,GAAkB33K,KAAK,CAACvL,GAAN,CAAU,UAAA0L,IAAI;AAAA,iBAAIA,IAAI,CAAC7F,KAAT;AAAA,SAAd,CAAlB;AACA,aAAKggK,UAAL,GAAkBt6J,KAAK,CAAC5E,MAAN,GAAe,KAAKm/K,SAAL,CAAen/K,MAA9B,GAAuC,OAAvC,GAAiD,SAAnE;AACA,aAAKm/K,SAAL,GAAiBv6K,KAAK,CAACM,KAAN,EAAjB;AACA,aAAKy3B,WAAL,CAAiB,KAAKwiJ,SAAtB;AACH;AACD;AACJ;AACA;;;;aACI,iCAAgC;AAAA;;AAAA,YAAd31F,GAAc,UAAdA,GAAc;AAAA,YAATrjE,KAAS,UAATA,KAAS;;AAC5B,YAAI,KAAKnE,QAAL,IAAiB,KAAK+K,QAA1B,EAAoC;AAChC;AACH;;AACD,YAAMsqF,SAAS,GAAG,IAAIokE,cAAJ,CAAmBjyF,GAAnB,CAAlB;AACA,aAAKsyF,SAAL,CAAe/3K,IAAf,CAAoBszG,SAApB;;AACA,YAAIA,SAAS,CAACC,kBAAV,EAAJ,EAAoC;AAChC;AACH,SAR2B,CAS5B;;;AACA,YAAI9tB,GAAG,YAAY3/E,KAAnB,EAA0B;AACtB;AACA,eAAKs1K,SAAL,GAAiB,KAAKA,SAAL,CAAez1L,MAAf,CAAsB,UAAC40L,KAAD,EAAQ34I,CAAR;AAAA,mBAAcA,CAAC,GAAG,OAAI,CAAC6/I,SAAT,IAAsB,OAAI,CAAC3J,eAAL,CAAqBvgD,GAArB,CAAyB31F,CAAzB,CAApC;AAAA,WAAtB,CAAjB;AACA,eAAK42I,UAAL,GAAkB,KAAKA,UAAL,CAAgB7yL,MAAhB,CAAuB,UAAC40L,KAAD,EAAQ34I,CAAR;AAAA,mBAAcA,CAAC,GAAG,OAAI,CAAC6/I,SAAT,IAAsB,OAAI,CAAC3J,eAAL,CAAqBvgD,GAArB,CAAyB31F,CAAzB,CAApC;AAAA,WAAvB,CAAlB;AACH,SAJD,MAKK;AACD;AACA,eAAKw5I,SAAL,GAAiB,KAAKA,SAAL,CAAez1L,MAAf,CAAsB,UAAC40L,KAAD,EAAQ34I,CAAR;AAAA,mBAAcA,CAAC,KAAKxf,KAAN,IAAe,OAAI,CAAC01J,eAAL,CAAqBvgD,GAArB,CAAyB31F,CAAzB,CAA7B;AAAA,WAAtB,CAAjB;AACA,eAAK42I,UAAL,GAAkB,KAAKA,UAAL,CAAgB7yL,MAAhB,CAAuB,UAAC40L,KAAD,EAAQ34I,CAAR;AAAA,mBAAcA,CAAC,KAAKxf,KAAN,IAAe,OAAI,CAAC01J,eAAL,CAAqBvgD,GAArB,CAAyB31F,CAAzB,CAA7B;AAAA,WAAvB,CAAlB;AACH;;AACD,aAAKhJ,WAAL,CAAiB,KAAKwiJ,SAAtB,EApB4B,CAqB5B;;AACA,YAAI,CAAC,KAAKhkJ,SAAV,EAAqB;AACjB,eAAKsR,KAAL;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,+BAAsB+4I,SAAtB,EAAiC;AAC7B,aAAKA,SAAL,GAAiBxd,WAAW,CAACwd,SAAD,CAA5B;AACA,aAAKQ,OAAL;AACH;AACD;AACJ;AACA;;;;aACI,kBAAS97L,KAAT,EAAgB;AAAA;;AACZA,QAAAA,KAAK,CAACunL,wBAAN;AACAvnL,QAAAA,KAAK,CAACkU,cAAN;AACA,aAAKquC,KAAL;AACA,aAAK5xC,KAAL,GAAa,KAAKA,KAAL,CAAWnR,MAAX,CAAkB,UAAC40L,KAAD,EAAQn4J,KAAR;AAAA,iBAAkB,OAAI,CAAC01J,eAAL,CAAqBvgD,GAArB,CAAyBn1G,KAAzB,CAAlB;AAAA,SAAlB,CAAb;AACA,aAAKg5J,SAAL,GAAiB,KAAKA,SAAL,CAAez1L,MAAf,CAAsB,UAAC40L,KAAD,EAAQn4J,KAAR;AAAA,iBAAkB,OAAI,CAAC01J,eAAL,CAAqBvgD,GAArB,CAAyBn1G,KAAzB,CAAlB;AAAA,SAAtB,CAAjB;AACA,aAAKo2J,UAAL,GAAkB,KAAKA,UAAL,CAAgB7yL,MAAhB,CAAuB,UAACu8L,MAAD,EAAS9/J,KAAT;AAAA,iBAAmB,OAAI,CAAC01J,eAAL,CAAqBvgD,GAArB,CAAyBn1G,KAAzB,CAAnB;AAAA,SAAvB,CAAlB;AACA,aAAK0vJ,eAAL,CAAqB,KAAKh7K,KAA1B;AACH;AACD;AACJ;AACA;;;;aACI,oBAAWA,KAAX,EAAkB;AACd,aAAKA,KAAL,GAAaA,KAAK,IAAI,EAAtB,CADc,CAEd;AACA;;AACA,YAAI,CAAC,KAAKu6K,cAAV,EAA0B;AACtB,eAAK+J,SAAL,GAAiB,KAAKtkL,KAAtB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,0BAAiBygC,EAAjB,EAAqB;AACjB,aAAKg1I,gBAAL,GAAwBh1I,EAAxB;AACH;AACD;AACJ;AACA;;;;aACI,2BAAkBA,EAAlB,EAAsB;AAClB,aAAKi1I,iBAAL,GAAyBj1I,EAAzB;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiBC,UAAjB,EAA6B;AACzB,aAAKvZ,QAAL,GAAgBuZ,UAAhB;AACA,aAAKjsC,GAAL,CAASS,YAAT;AACH;AACD;AACJ;AACA;;;;aACI,iCAAwBid,KAAxB,EAA+B;AAAA;;AAC3B,aAAKkjK,YAAL,CAAkB5oK,IAAlB,CAAuB0F,KAAK,CAACnS,KAA7B;AACA,aAAKmnL,cAAL,GAAsB,KAAKr0H,KAAL,CAAWqwB,KAAX,CAAiB,UAACoW,IAAD,EAAOjuE,KAAP;AAAA,iBAAiB,CAAC,OAAI,CAAC2iG,SAAL,CAAe10B,IAAf,EAAqBvV,MAAM,CAAC14D,KAAD,CAA3B,CAAlB;AAAA,SAAjB,CAAtB;AACH;AACD;AACJ;AACA;;;;WACI,eAAyB;AACrB,yBAAU,KAAKrzB,IAAL,GAAY0hI,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAAxB,GAA+C,EAAzD,cAA+D,KAAK6+G,QAAL,GAAgB,aAAa,KAAKA,QAAlC,GAA6C,EAA5G,cAAkH,KAAKoC,OAAL,GAAe0gB,eAAe,CAAC,KAAK1gB,OAAN,CAA9B,GAA+C,EAAjK;AACH;AACD;AACJ;AACA;;;;WACI,eAA8B;AAC1B,yBAAU,KAAKjhH,IAAL,GAAY0hI,YAAY,CAAC,UAAD,EAAa,KAAK1hI,IAAlB,CAAxB,GAAkD,EAA5D;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiB;AACb,aAAK+yL,aAAL,CAAmBrpL,aAAnB,CAAiCiwC,KAAjC;AACA,aAAKo5I,aAAL,CAAmBrpL,aAAnB,CAAiCo7D,KAAjC;AACH;;;aACD,0BAAiB;AACb,YAAI,CAACk3C,yDAAS,EAAd,EAAkB;AACd;AACH;;AACD,YAAI,CAACyB,SAAS,CAAC,KAAKi2D,UAAN,CAAV,IAA+B,CAACj2D,SAAS,CAAC,KAAK6H,SAAN,CAA7C,EAA+D;AAC3D,gBAAM,IAAI9oG,KAAJ,CAAUikK,uBAAuB,CAACkD,YAAlC,CAAN;AACH;;AACD,YAAI,CAACrgI,OAAO,CAAC,KAAKv7C,KAAN,CAAZ,EAA0B;AACtB,gBAAM,IAAIyU,KAAJ,CAAUikK,uBAAuB,CAAC3iI,KAAlC,CAAN;AACH;;AACD,YAAI,KAAK/1C,KAAL,CAAWmF,MAAX,GAAoB,CAAxB,EAA2B;AACvB,cAAI,KAAKo1K,cAAL,IAAuB,KAAKv6K,KAAL,CAAW4K,IAAX,CAAgB,UAAAV,IAAI;AAAA,mBAAIg0E,QAAQ,CAACh0E,IAAD,CAAZ;AAAA,WAApB,CAA3B,EAAoE;AAChE,kBAAM,IAAIuK,KAAJ,CAAUikK,uBAAuB,CAACgD,SAAlC,CAAN;AACH;;AACD,cAAM2P,qBAAqB,GAAG,KAAK/G,SAAL,CAAenhG,KAAf,CAAqB,UAAAj5E,IAAI;AAAA,mBAAIg0E,QAAQ,CAACh0E,IAAI,CAACozG,QAAN,CAAZ;AAAA,WAAzB,CAA9B;;AACA,cAAI,KAAKi9D,cAAL,IAAuB,CAACh/H,OAAO,CAAC,KAAK+oI,SAAN,CAAnC,EAAqD;AACjD,kBAAM,IAAI7vK,KAAJ,CAAUikK,uBAAuB,CAAC4L,SAAlC,CAAN;AACH;;AACD,cAAI,KAAK/J,cAAL,IAAuB,CAAC8Q,qBAA5B,EAAmD;AAC/C,kBAAM,IAAI52K,KAAJ,CAAUikK,uBAAuB,CAAC4L,SAAlC,CAAN;AACH;;AACD,cAAI,KAAK/J,cAAL,IAAuB,KAAK+J,SAAL,CAAen/K,MAAf,KAA0B,KAAKnF,KAAL,CAAWmF,MAAhE,EAAwE;AACpE,kBAAM,IAAIsP,KAAJ,CAAUikK,uBAAuB,CAAC4S,eAAlC,CAAN;AACH;;AACD,cAAI,CAAC,KAAK/Q,cAAN,IAAwB,CAACvO,aAAa,CAAC,KAAKhsK,KAAN,CAA1C,EAAwD;AACpD,kBAAM,IAAIyU,KAAJ,CAAUikK,uBAAuB,CAAC1lE,MAAlC,CAAN;AACH;;AACD,cAAI,CAACz3D,OAAO,CAAC,KAAKowH,UAAN,CAAP,IAA4BpwH,OAAO,CAAC,KAAKgiE,SAAN,CAApC,KAAyD,CAAChiE,OAAO,CAAC,KAAKmmI,UAAN,CAArE,EAAwF;AACpF,kBAAM,IAAIjtK,KAAJ,CAAUikK,uBAAuB,CAACgJ,UAAlC,CAAN;AACH;;AACD,cAAI,CAACnmI,OAAO,CAAC,KAAKowH,UAAN,CAAP,IAA4BpwH,OAAO,CAAC,KAAKgiE,SAAN,CAApC,KAAyD,KAAKmkE,UAAL,CAAgBv8K,MAAhB,KAA2B,CAAxF,EAA2F;AACvF,kBAAM,IAAIsP,KAAJ,CAAUikK,uBAAuB,CAACgJ,UAAlC,CAAN;AACH;;AACD,cAAI,CAACnmI,OAAO,CAAC,KAAKowH,UAAN,CAAP,IAA4BpwH,OAAO,CAAC,KAAKgiE,SAAN,CAApC,KAAyD,KAAKmkE,UAAL,CAAgBv8K,MAAhB,KAA2B,KAAKnF,KAAL,CAAWmF,MAAnG,EAA2G;AACvG,kBAAM,IAAIsP,KAAJ,CAAUikK,uBAAuB,CAAC6S,gBAAlC,CAAN;AACH;AACJ;AACJ;;;aACD,yBAAgBvrL,KAAhB,EAAuB;AACnB,aAAKy1K,gBAAL,CAAsBz1K,KAAtB;AACA,aAAKqqI,WAAL,CAAiBnhI,IAAjB,CAAsBlJ,KAAtB;AACH;;;aACD,4BAAmBmE,IAAnB,EAAyB;AACrB,YAAMq4G,SAAS,GAAG,IAAIjB,gBAAJ,EAAlB;;AACA,YAAIp3G,IAAJ,EAAU;AACN,eAAKA,IAAL,CAAU+E,IAAV,CAAeszG,SAAf;AACH,SAFD,MAGK;AACD,eAAKt8G,KAAL,CAAWgJ,IAAX,CAAgBszG,SAAhB;AACH;;AACD,eAAOA,SAAS,CAACC,kBAAV,EAAP;AACH;;;aACD,uBAAc;AAAA;;AACV,YAAMs7D,eAAe,GAAG,KAAK9xI,SAAL,KAAmB,KAAnB,GAA2B,OAA3B,GAAqC,MAA7D;AACA,YAAM+xI,cAAc,GAAG;AAAEn1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAvB;AACA,YAAMm1D,aAAa,GAAG;AAAEp1D,UAAAA,UAAU,EAAEk1D,eAAd;AAA+Bj1D,UAAAA,QAAQ,EAAE;AAAzC,SAAtB;AACA,aAAKR,QAAL,GAAgB,KAAKjB,YAAL,CAAkBl9G,IAAlB,CAAuB;AACnC0sD,UAAAA,MAAM,EAAE,KAAK2uD,OADsB;AAEnCniC,UAAAA,QAAQ,EAAE,KAAKA,QAFoB;AAGnC8lC,UAAAA,WAAW,EAAE60D,cAHsB;AAInCzkH,UAAAA,OAAO,EAAE,KAAK6vD,aAJqB;AAKnCV,UAAAA,UAAU,EAAEu1D,aALuB;AAMnC7vD,UAAAA,YAAY,EAAE,UANqB;AAOnC/I,UAAAA,UAAU,EAAE,KAAKwoE;AAPkB,SAAvB,CAAhB;AASA,YAAM/Q,YAAY,GAAG,KAAKx0D,QAAL,CAAcK,YAAnC;AACA,2BAAqB,KAAKviH,KAA1B;AAAA,YAAQg4B,GAAR,gBAAQA,GAAR;AAAA,YAAaD,GAAb,gBAAaA,GAAb;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6sF,QAAnB,GAA8BhxD,GAA9B;AACA0+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmB6D,KAAnB,GAA2B+3B,GAA3B;AACA2+I,QAAAA,YAAY,CAACv6K,KAAb,CAAmBI,MAAnB,GAA4B,KAAKA,MAAjC;AACA,aAAKnI,QAAL,CAAc8C,YAAd,CAA2Bw/K,YAA3B,EAAyC,KAAzC,EAAgD,KAAK7wI,SAArD;AACA,aAAKzxC,QAAL,CAAc8C,YAAd,CAA2B,KAAKkoH,OAAL,CAAa79G,aAAxC,EAAuD,eAAvD,EAAwE,MAAxE;AACA,aAAK2gH,QAAL,CAAcgB,SAAd,CAAwBh0H,SAAxB,CAAkC,YAAM;AACpC,iBAAI,CAACmF,GAAL,CAASoC,aAAT;;AACA,iBAAI,CAAC2sB,MAAL,CAAYta,IAAZ;AACH,SAHD;AAIA,aAAKo5G,QAAL,CAAc+1D,UAAd,CAAyB/oL,SAAzB,CAAmC,YAAM;AACrC,iBAAI,CAAC0uD,MAAL,CAAY90C,IAAZ;AACH,SAFD;AAGH;;;aACD,wBAAe;AAAA;;AACX,YAAI,KAAKo5G,QAAT,EAAmB;AACf,eAAKA,QAAL,CAAcpiH,KAAd;AACA,eAAKoiH,QAAL,GAAgB,IAAhB;AACA,eAAK9tH,QAAL,CAAc8C,YAAd,CAA2B,KAAKkoH,OAAL,CAAa79G,aAAxC,EAAuD,eAAvD,EAAwE,OAAxE;;AACA,cAAI,KAAK9S,MAAL,KAAgB,EAApB,EAAwB;AACpB,iBAAKA,MAAL,GAAc,EAAd;AACA,iBAAKs4L,cAAL,GAAsB,KAAtB;;AACA,gBAAI7yE,6EAAY,CAAC,KAAK+gE,YAAN,CAAhB,EAAqC;AACjC,mBAAKj/G,KAAL,CAAWjxB,GAAX,CAAe,YAAM;AACjB,uBAAI,CAACkwI,YAAL,CAAkBnsK,IAAlB,CAAuB,EAAvB;AACH,eAFD;AAGH;AACJ;AACJ;AACJ;;;aACD,2BAAkB;AAAA;;AACd,aAAKm+G,aAAL,CAAmBpiH,IAAnB,CAAwB,KAAKg6G,iBAAL,CAAuB96G,IAAvB,CAA4B7U,SAA5B,CAAsC;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,IAAjB,CAAN;AAAA,SAAtC,CAAxB,EAA6F,KAAKjoC,iBAAL,CAAuBptF,KAAvB,CACxFziC,IADwF,CACnFmyB,oDAAG,CAAC,UAAClyB,KAAD;AAAA,iBAAWA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB,EAAX;AAAA,SAAD,CADgF,EAExFjU,SAFwF,CAE9E;AAAA,iBAAM,OAAI,CAAC43J,WAAL,CAAiB,IAAjB,CAAN;AAAA,SAF8E,CAA7F,EAE8C/oJ,4CAAK,CAAC,KAAK8gH,iBAAL,CAAuB/+G,KAAxB,EAA+B,KAAK++G,iBAAL,CAAuBf,GAAtD,CAAL,CAAgE5uH,SAAhE,CAA0E,YAAM;AAC1H,iBAAI,CAACsiD,KAAL;;AACA,iBAAI,CAACs1G,WAAL,CAAiB,KAAjB;AACH,SAH6C,CAF9C,EAKI,KAAKjoC,iBAAL,CAAuBv2C,GAAvB,CAA2Bp5E,SAA3B,CAAqC,KAAKk8L,YAAL,CAAkB/xL,IAAlB,CAAuB,IAAvB,CAArC,CALJ,EAKwE,KAAKwlH,iBAAL,CAAuBqwB,EAAvB,CAA0BhgJ,SAA1B,CAAoC,KAAKm8L,WAAL,CAAiBhyL,IAAjB,CAAsB,IAAtB,CAApC,CALxE,EAK0I,KAAKwlH,iBAAL,CAAuBioD,IAAvB,CAA4B53K,SAA5B,CAAsC,KAAK80L,aAAL,CAAmB3qL,IAAnB,CAAwB,IAAxB,CAAtC,CAL1I,EAKgN,KAAKwlH,iBAAL,CAAuBnmH,IAAvB,CAC3M1J,IAD2M,CACtMP,uDAAM,CAAC;AAAA,iBAAM,CAAC,OAAI,CAAC68L,gBAAZ;AAAA,SAAD,CADgM,EAE3Mp8L,SAF2M,CAEjM,KAAK22C,SAAL,KAAmB,KAAnB,GAA2B,KAAKi+I,cAAL,CAAoBzqL,IAApB,CAAyB,IAAzB,CAA3B,GAA4D,KAAK0qL,aAAL,CAAmB1qL,IAAnB,CAAwB,IAAxB,CAFqI,CALhN,EAO2G,KAAKwlH,iBAAL,CAAuB/lE,KAAvB,CACtG9pD,IADsG,CACjGP,uDAAM,CAAC;AAAA,iBAAM,CAAC,OAAI,CAAC68L,gBAAZ;AAAA,SAAD,CAD2F,EAEtGp8L,SAFsG,CAE5F,KAAK22C,SAAL,KAAmB,KAAnB,GAA2B,KAAKk+I,aAAL,CAAmB1qL,IAAnB,CAAwB,IAAxB,CAA3B,GAA2D,KAAKyqL,cAAL,CAAoBzqL,IAApB,CAAyB,IAAzB,CAFiC,CAP3G,EAS2G,KAAKwlH,iBAAL,CAAuB+xD,IAAvB,CAA4B5hL,IAA5B,CAAiCP,uDAAM,CAAC;AAAA,iBAAM,CAAC,OAAI,CAACmU,MAAZ;AAAA,SAAD,CAAvC,EAA6D1T,SAA7D,CAAuE,KAAKy0L,UAAL,CAAgBtqL,IAAhB,CAAqB,IAArB,CAAvE,CAT3G,EAS+M,KAAKwlH,iBAAL,CAAuBr0E,GAAvB,CAA2Bx7C,IAA3B,CAAgCP,uDAAM,CAAC;AAAA,iBAAM,CAAC,OAAI,CAACmU,MAAZ;AAAA,SAAD,CAAtC,EAA4D1T,SAA5D,CAAsE,KAAK00L,SAAL,CAAevqL,IAAf,CAAoB,IAApB,CAAtE,CAT/M,EASiT,KAAKwlH,iBAAL,CAAuBkjC,SAAvB,CAAiC/yJ,IAAjC,CAAsCP,uDAAM,CAAC;AAAA,iBAAM,OAAI,CAAC+0L,YAAX;AAAA,SAAD,CAA5C,EAAuEt0L,SAAvE,CAAiF,KAAKg0L,eAAL,CAAqB7pL,IAArB,CAA0B,IAA1B,CAAjF,CATjT,EASoa,KAAKwlH,iBAAL,CAAuB1pG,MAAvB,CAA8BnmB,IAA9B,CAAmCP,uDAAM,CAAC;AAAA,iBAAM,OAAI,CAAC+0L,YAAX;AAAA,SAAD,CAAzC,EAAoEt0L,SAApE,CAA8E,KAAK20L,YAAL,CAAkBxqL,IAAlB,CAAuB,IAAvB,CAA9E,CATpa;AAUH;;;aACD,gCAAuB;AAAA;;AACnB,YAAI06G,oFAAmB,EAAvB,EAA2B;AACvB,eAAKmnC,WAAL,GAAmB,KAAKA,WAAL,CAAiB7hJ,IAAjB,CAAsB,IAAtB,CAAnB;AACA,eAAKwuL,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBxuL,IAAxB,CAA6B,IAA7B,CAA1B;;AACA,eAAK28D,KAAL,CAAW7xB,iBAAX,CAA6B,YAAM;AAC/B,gBAAMk7I,UAAU,GAAG,IAAnB;AACAlrL,YAAAA,QAAQ,CAAC4jL,gBAAT,CAA0B,OAA1B,EAAmC,OAAI,CAAC78B,WAAxC,EAAqDmkC,UAArD;AACAlrL,YAAAA,QAAQ,CAAC4jL,gBAAT,CAA0B,MAA1B,EAAkC,OAAI,CAAC8P,kBAAvC,EAA2DxI,UAA3D;AACH,WAJD;AAKH;AACJ;;;aACD,kCAAyB;AACrB,YAAItrE,oFAAmB,EAAvB,EAA2B;AACvB,cAAMsrE,UAAU,GAAG,IAAnB;AACAlrL,UAAAA,QAAQ,CAAC+jL,mBAAT,CAA6B,OAA7B,EAAsC,KAAKh9B,WAA3C,EAAwDmkC,UAAxD;AACAlrL,UAAAA,QAAQ,CAAC+jL,mBAAT,CAA6B,MAA7B,EAAqC,KAAK2P,kBAA1C,EAA8DxI,UAA9D;AACH;AACJ;;;aACD,4BAAmBpwL,KAAnB,EAA0B;AACtB,YAAIA,KAAK,CAAC2J,MAAN,KAAiB,KAAKwmH,OAAL,CAAa79G,aAAlC,EAAiD;AAC7C;AACH;;AACDtS,QAAAA,KAAK,CAACunL,wBAAN;AACA,aAAK/vG,UAAL,CAAgBx3E,KAAhB;AACH;;;aACD,wBAAe;AACX,aAAKuiD,KAAL;;AACA,YAAI,KAAK5uC,MAAT,EAAiB;AACb,eAAKqkL,QAAL,CAAc34F,IAAd;AACA,eAAKw8F,0BAAL;AACH;AACJ;;;aACD,qBAAY77L,KAAZ,EAAmB;AACf,YAAI,CAAC,KAAKg4L,QAAV,EAAoB;AAChB;AACH;;AACDh4L,QAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB,GAJe,CAKf;;AACA,YAAI,KAAKunL,eAAT,EAA0B;AACtB;AACH;;AACD,YAAMa,iBAAiB,GAAG,KAAKtE,QAAL,CAAc,mBAAd,EAAmC,aAAnC,MAAsD,GAAhF,CATe,CAUf;;AACA,YAAI,KAAKjS,UAAL,IAAmB,KAAKwW,cAA5B,EAA4C;AACxC,eAAKh6I,KAAL,GADwC,CAExC;AACH,SAHD,MAIK,IAAI,KAAK64I,QAAL,IAAiB,CAAC,KAAKoB,gBAAvB,IAA2CF,iBAA/C,EAAkE;AACnE,eAAKX,aAAL,CAAmBrpL,aAAnB,CAAiCiwC,KAAjC,GADmE,CAEnE;AACA;AACH,SAJI,MAKA,IAAI,KAAKi6I,gBAAL,IAAyBF,iBAA7B,EAAgD;AACjD,cAAI,KAAKvW,UAAT,EAAqB;AACjB,iBAAK4S,WAAL,CAAiBrmL,aAAjB,CAA+BiwC,KAA/B;AACH,WAFD,MAGK;AACD,iBAAKA,KAAL;AACH;AACJ;AACJ;;;aACD,uBAAcviD,KAAd,EAAqB;AACjB,YAAI,CAAC,KAAKg4L,QAAV,EAAoB;AAChB;AACH;;AACDh4L,QAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB,GAJiB,CAKjB;;AACA,YAAI,KAAK6xK,UAAL,IAAmB,KAAK0V,eAA5B,EAA6C;AACzC,eAAK9C,WAAL,CAAiBrmL,aAAjB,CAA+BiwC,KAA/B,GADyC,CAEzC;AACH,SAHD,MAIK,IAAI,KAAK64I,QAAL,KAAkB,KAAKK,eAAL,IAAwB,KAAKc,cAA/C,CAAJ,EAAoE;AACrE,eAAKZ,aAAL,CAAmBrpL,aAAnB,CAAiCiwC,KAAjC,GADqE,CAErE;AACH,SAHI,MAIA,IAAI,CAAC,KAAKy1I,QAAL,CAAcrlD,QAAnB,EAA6B;AAC9B,eAAKqlD,QAAL,CAAcz1I,KAAd;AACH;;AACD,aAAKqwI,eAAL,GAAuB1kK,SAAvB;AACH;;;aACD,wBAAeluB,KAAf,EAAsB;AAClBA,QAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;AACA,YAAM60C,IAAI,GAAG,KAAK+pI,IAAL,CAAUh9K,MAAV,GAAmB,CAAhC;;AACA,YAAI,KAAK88K,eAAL,KAAyB7pI,IAA7B,EAAmC;AAC/B,eAAK6pI,eAAL,GAAuB1kK,SAAvB;AACH,SAFD,MAGK,IAAI,KAAK0kK,eAAL,GAAuB7pI,IAA3B,EAAiC;AAClC,eAAK6pI,eAAL;AACH,SAFI,MAGA,IAAI,CAAC,KAAKA,eAAV,EAA2B;AAC5B,eAAKA,eAAL,GAAuB,CAAvB;AACH;AACJ;;;aACD,uBAAc5yL,KAAd,EAAqB;AACjBA,QAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;;AACA,YAAI,KAAK0+K,eAAL,KAAyB1kK,SAAzB,IAAsC,KAAK0kK,eAAL,GAAuB,CAAjE,EAAoE;AAChE,eAAKA,eAAL,GAAuB,KAAKE,IAAL,CAAUh9K,MAAV,GAAmB,CAA1C;AACH,SAFD,MAGK,IAAI,KAAK88K,eAAL,KAAyB,CAA7B,EAAgC;AACjC,eAAKA,eAAL;AACH;AACJ;;;aACD,mBAAU5yL,KAAV,EAAiB;AACbA,QAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;AACA,aAAK0+K,eAAL,GAAuB,KAAKE,IAAL,CAAUh9K,MAAV,GAAmB,CAA1C;AACH;;;aACD,oBAAW9V,KAAX,EAAkB;AACdA,QAAAA,KAAK,CAACw1H,aAAN,CAAoBthH,cAApB;AACA,aAAK0+K,eAAL,GAAuB,CAAvB;AACH;;;aACD,2BAAkB;AACd,YAAI,KAAKA,eAAL,KAAyB1kK,SAA7B,EAAwC;AACpC,eAAK0mK,YAAL;AACH,SAFD,MAGK;AACD,cAAMt1F,GAAG,GAAG,KAAKwzF,IAAL,CAAU,KAAKA,IAAL,CAAUh9K,MAAV,GAAmB,CAA7B,CAAZ;AACA,cAAMmmB,KAAK,GAAG,KAAK62J,IAAL,CAAUh9K,MAAV,GAAmB,CAAjC;AACA,eAAKu/K,eAAL,CAAqB;AAAE/1F,YAAAA,GAAG,EAAHA,GAAF;AAAOrjE,YAAAA,KAAK,EAALA;AAAP,WAArB;AACH;AACJ;;;aACD,wBAAe;AACX,YAAMqjE,GAAG,GAAG,KAAKwzF,IAAL,CAAU,KAAKF,eAAf,CAAZ;AACA,YAAM32J,KAAK,GAAG,KAAK22J,eAAnB;AACA,aAAKyC,eAAL,CAAqB;AAAE/1F,UAAAA,GAAG,EAAHA,GAAF;AAAOrjE,UAAAA,KAAK,EAALA;AAAP,SAArB;;AACA,YAAI,KAAK22J,eAAL,KAAyB,KAAKE,IAAL,CAAUh9K,MAAvC,EAA+C;AAC3C,eAAK88K,eAAL,GAAuB1kK,SAAvB;AACH;AACJ;;;aACD,6BAAoB;AAChB,aAAK8pG,aAAL,CAAmB3xH,OAAnB,CAA2B,UAAAwyL,GAAG;AAAA,iBAAIA,GAAG,CAACz4L,WAAJ,EAAJ;AAAA,SAA9B;AACA,aAAKiwL,sBAAL;AACH;AACD;AACJ;AACA;AACA;;;;aACI,sCAA6B;AAAA;;AACzB,YAAM5sH,KAAK,GAAG,KAAKu0H,QAAL,CAAcjlL,OAAd,CAAsBT,aAAtB,CAAoCg2C,gBAApC,CAAqD,IAArD,CAAd;AACAmb,QAAAA,KAAK,CAACp9D,OAAN,CAAc,UAAAwU,IAAI,EAAI;AAClB,cAAIA,IAAI,CAACgwD,YAAL,CAAkB,UAAlB,MAAkC,GAAtC,EAA2C;AACvC,mBAAI,CAAC+wH,eAAL,GAAuB/gL,IAAvB;;AACA,mBAAI,CAAC+gL,eAAL,CAAqB3zL,YAArB,CAAkC,UAAlC,EAA8C,IAA9C;AACH;AACJ,SALD;AAMH;;;aACD,oBAAW;AACP,YAAIo+G,SAAS,CAAC,KAAK4uE,SAAN,CAAT,IAA6B5uE,SAAS,CAAC,KAAKi2D,UAAN,CAA1C,EAA6D;AACzD,eAAKwf,OAAL;AACA,eAAK5C,YAAL,GAAoB,KAAKjE,SAAL,CAAej6K,KAAf,EAApB;AACH;;AACD,aAAK5V,GAAL,CAASS,YAAT;AACH;;;aACD,mBAAU;AACN,YAAMswC,MAAM,GAAG,KAAK8+I,SAAL,CAAe9lL,GAAf,CAAmB,UAAA0L,IAAI;AAAA,iBAAIA,IAAI,CAACozG,QAAT;AAAA,SAAvB,CAAf;AACA,aAAK6kE,IAAL,GAAY,KAAKD,SAAL,CAAe18I,MAAf,CAAZ;AACA,aAAKw7I,eAAL,GAAuB,KAAKiC,mBAAL,EAAvB;AACH;;;aACD,qBAAYjjL,KAAZ,EAAmB;AAAA;;AACf,YAAMy2G,QAAQ,GAAG,KAAK8jE,cAAL,GACbv6K,KAAK,CAACxB,GAAN,CAAU,UAAA0L,IAAI;AAAA,iBAAIiiK,SAAS,CAACjiK,IAAD,EAAO,QAAI,CAACyhK,UAAZ,CAAb;AAAA,SAAd,CADa,GAEb3rK,KAAK,CAACxB,GAAN,CAAU,UAAA0L,IAAI;AAAA,iBAAIA,IAAI,CAACozG,QAAT;AAAA,SAAd,CAFJ;AAGA,aAAKt9G,KAAL,GAAay2G,QAAb;AACA,aAAKukE,eAAL,CAAqB,KAAKh7K,KAA1B;AACH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,+BAAsB;AAAA;;AAClB,eAAO,IAAIshC,GAAJ,CAAQ,KAAKgjJ,SAAL,CAAe11I,MAAf,CAAsB,UAAC4gI,OAAD,EAAUtlK,IAAV,EAAgBohB,KAAhB,EAA0B;AAC3D,cAAI,QAAI,CAACulJ,YAAL,CAAkB3mK,IAAI,CAACozG,QAAvB,EAAiCpzG,IAAI,CAACohB,KAAtC,CAAJ,EAAkD;AAC9CkkJ,YAAAA,OAAO,CAACvqK,IAAR,CAAaqmB,KAAb;AACH;;AACD,iBAAOkkJ,OAAP;AACH,SALc,EAKZ,EALY,CAAR,CAAP;AAMH;;;aACD,+BAAsB;AAClB,YAAI,KAAKv3K,IAAL,KAAc,MAAlB,EAA0B;AACtB,eAAKzD,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDg4H,YAAY,CAAC,OAAD,EAAU,KAAK1hI,IAAf,CAA/D;AACH;;AACD,YAAI,KAAKihH,OAAL,KAAiB,MAArB,EAA6B;AACzB,eAAK1kH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDi4H,eAAe,CAAC,KAAK1gB,OAAN,CAAlE;AACH;;AACD,YAAI,KAAKpC,QAAL,KAAkB,MAAtB,EAA8B;AAC1B,eAAKtiH,QAAL,CAAcK,QAAd,CAAuB,KAAK2qH,OAAL,CAAa79G,aAApC,EAAmDk4H,gBAAgB,CAAC,OAAD,EAAU,KAAK/iB,QAAf,CAAnE;AACH;AACJ;;;;;;AAEL0zE,EAAAA,wBAAwB,CAAC1wJ,IAAzB;AAAA,qBAAsH0wJ,wBAAtH,EA34XsG96L,gEA24XtG,CAAgKA,sDAAhK,GA34XsGA,gEA24XtG,CAA0LmE,wEAA1L,GA34XsGnE,gEA24XtG,CAAsNA,qDAAtN,GA34XsGA,gEA24XtG,CAA+OquH,iBAA/O,GA34XsGruH,gEA24XtG,CAA6QA,kDAA7Q,GA34XsGA,gEA24XtG,CAAmSkE,8EAAnS,GA34XsGlE,gEA24XtG,CAAsUA,6DAAtU,GA34XsGA,gEA24XtG,CAAuWk2J,aAAvW;AAAA;;AACA4kC,EAAAA,wBAAwB,CAAChuJ,IAAzB,kBA54XsG9sC,gEA44XtG;AAAA,UAA0G86L,wBAA1G;AAAA;AAAA;AAAA;AA54XsG96L,QAAAA,6DA44XtG,WA2B2Ey/K,uBA3B3E;AA54XsGz/K,QAAAA,6DA44XtG,WA2BmL0/K,uBA3BnL;AA54XsG1/K,QAAAA,6DA44XtG,WA2ByRy2L,qBA3BzR;AA54XsGz2L,QAAAA,6DA44XtG,WA2B+X4hL,uBA3B/X;AA54XsG5hL,QAAAA,6DA44XtG,WA2BoegxL,oBA3Bpe;AA54XsGhxL,QAAAA,6DA44XtG,WA2B2kBixL,yBA3B3kB;AAAA;;AAAA;AAAA;;AA54XsGjxL,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AAAA;AAAA;AAAA;AAAA;AA54XsGA,QAAAA,0DA44XtG;AA54XsGA,QAAAA,0DA44XtG,SA2Bs1BkP,4DA3Bt1B;AA54XsGlP,QAAAA,0DA44XtG;AA54XsGA,QAAAA,0DA44XtG;AA54XsGA,QAAAA,0DA44XtG;AAAA;;AAAA;AAAA;;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AA54XsGA,QAAAA,6DA44XtG,MA54XsGA,0DA44XtG;AAAA;AAAA;AAAA;AAAA;AAAA;AA54XsGA,QAAAA,yDA44XtG;AAAA,iBAA0G,iBAA1G;AAAA;AAAA,iBAA0G,yBAA1G;AAAA;AAAA;;AAAA;AA54XsGA,QAAAA,0DA44XtG;AA54XsGA,QAAAA,0DA44XtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA54XsGA,iEA44XtG,CAAq1D,CAC70D+kH,8EAD60D,EAE70DsJ,iBAF60D,EAG70D6xD,WAH60D,EAI70De,oBAJ60D,EAK70D1oC,gBAL60D,EAM70D;AACIn1I,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAN60D,EAU70D;AACID,MAAAA,KAAK,EAAE,IADX;AAEIF,MAAAA,OAAO,EAAEguB,8DAFb;AAGIgf,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM6qK,wBAAN;AAAA,OAAD;AAH3B,KAV60D,EAe70D;AACI13L,MAAAA,OAAO,EAAEm4K,iFADb;AAEInrI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM6qK,wBAAN;AAAA,OAAD;AAF3B,KAf60D,EAmB70D;AACI13L,MAAAA,OAAO,EAAEo4K,kFADb;AAEIprI,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM6qK,wBAAN;AAAA,OAAD;AAF3B,KAnB60D,EAuB70D;AACI13L,MAAAA,OAAO,EAAEk/H,uEADb;AAEIlyF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAM6qK,wBAAN;AAAA,OAAD;AAF3B,KAvB60D,CAAr1D,GA54XsG96L,mEA44XtG;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AA54XsGA,QAAAA,iEAw6X9F,MA5BR;AA54XsGA,QAAAA,6DAm7X9F,uBAvCR;AA54XsGA,QAAAA,yDAk8X1F;AAAA,iBAAa,2BAAb;AAAA,UAtDZ;AA54XsGA,QAAAA,yDAo8X1F,8DAxDZ;AA54XsGA,QAAAA,2DAy8X9F,EA7DR;AA54XsGA,QAAAA,yDA08X9F,8DA9DR;AA54XsGA,QAAAA,yDAo9X9F,8DAxER;AA54XsGA,QAAAA,yDAy9X9F,oFAz9X8FA,qEAy9X9F,CA7ER;AA54XsGA,QAAAA,iEA+kY9F,YAnMR;AAAA;;AAAA;AA54XsGA,QAAAA,wDAo7X1F,GAxCZ;AA54XsGA,QAAAA,yDAo7X1F,qYAxCZ;AA54XsGA,QAAAA,wDAo8XnF,GAxDnB;AA54XsGA,QAAAA,yDAo8XnF,uCAxDnB;AA54XsGA,QAAAA,wDA28XzF,GA/Db;AA54XsGA,QAAAA,yDA28XzF,0HA/Db;AA54XsGA,QAAAA,wDAq9XzF,GAzEb;AA54XsGA,QAAAA,yDAq9XzF,qBAzEb;AAAA;AAAA;AAAA,iBAoM4CqxL,gBApM5C,EAoM+S3uD,gFApM/S,EAoMy6BigC,0BApMz6B,EAoMkxC2Y,kDApMlxC,EAoMo2CA,qDApMp2C,EAoMg7C92D,iEApMh7C,EAoM6qD+oE,oBApM7qD,EAoMiwD/oE,4DApMjwD,EAoMs1DA,oDApMt1D,EAoM2hEu2D,0FApM3hE,EAoMgqEztD,wBApMhqE,EAoMgwE0rE,iBApMhwE,EAoMo6EY,cApMp6E;AAAA;AAAA;SA3nCMkB;;;AAg0CN;AAAA;AAAA;AAyXA;AACA;AACA;;;IACMsB;MAAAA;;;;;AACF,8CAAYC,YAAZ,EAA0B;AAAA;;AAAA;;AACtB,oCAAMA,YAAN;AACA,eAAKA,YAAL,GAAoBA,YAApB;AAFsB;AAGzB;AACD;AACJ;AACA;;;;;WACI,aAASj5H,KAAT,EAAgB;AACZ,aAAKi5H,YAAL,CAAkBj5H,KAAlB,GAA0BA,KAA1B;AACA,aAAKA,KAAL,GAAaA,KAAb;AACH;;;;AAED;AACJ;AACA;AACI,mBAAU44G,MAAV,EAAkB;AACd,mbAAcA,MAAd;AACH;AACD;AACJ;AACA;;;;WACI,aAAWhhK,IAAX,EAAiB;AACb,obAAeA,IAAf;AACH;;;;IAxB0CygK;;AA0B/C2gB,EAAAA,gCAAgC,CAAChyJ,IAAjC;AAAA,qBAA8HgyJ,gCAA9H,EAv+YsGp8L,gEAu+YtG,CAAgL0iI,iFAAhL;AAAA;;AACA05D,EAAAA,gCAAgC,CAACxxJ,IAAjC,kBAx+YsG5qC,gEAw+YtG;AAAA,UAAkHo8L,gCAAlH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAx+YsGp8L,yEAw+YtG;AAAA;SA3BMo8L;;;AA4BN;AAAA;AAAA;;AAaA,IAAME,eAAe,GAAG,GAAxB;;AACA,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkC;AAAA,MAAjC3gK,KAAiC,uEAAzB,EAAyB;AAAA,MAArB4gK,WAAqB,uEAAP,EAAO;AAChD,mBAAUA,WAAV,SAAwBA,WAAW,GAAGF,eAAH,GAAqB,EAAxD,SAA6D1gK,KAA7D;AACH,CAFD;;AAGA,IAAM6gK,yBAAyB,GAAG,SAA5BA,yBAA4B,CAAAjmH,CAAC;AAAA,SAAIA,CAAC,IAAIl3D,KAAK,CAACusC,OAAN,CAAc2qB,CAAd,CAAL,IAAyBA,CAAC,CAAC/gE,MAAF,KAAa,CAA1C;AAAA,CAAnC;;AACA,IAAMinL,aAAa,GAAG,SAAhBA,aAAgB,CAACC,iBAAD,EAAoBC,aAApB,EAAuE;AAAA,MAApC/mL,MAAoC,uEAA3B,IAA2B;AAAA,MAArB2mL,WAAqB,uEAAP,EAAO;;AACzF,MAAI,CAACC,yBAAyB,CAACE,iBAAD,CAA9B,EAAmD;AAC/C,WAAO,EAAP;AACH;;AACD,SAAOA,iBAAiB,CAAC7tL,GAAlB,CAAsB,UAAC+6F,IAAD,EAAOosB,GAAP,EAAe;AACxC,QAAMr6F,KAAK,GAAG2gK,SAAS,CAACtmE,GAAG,CAACnuH,QAAJ,EAAD,EAAiB00L,WAAjB,CAAvB;AACA,QAAM1sE,OAAO,GAAG;AACZlC,MAAAA,QAAQ,EAAE/jB,IADE;AAEZjuE,MAAAA,KAAK,EAALA,KAFY;AAGZ/lB,MAAAA,MAAM,EAANA,MAHY;AAIZgpH,MAAAA,OAAO,EAAE;AAJG,KAAhB;AAMA/O,IAAAA,OAAO,CAAC1xH,QAAR,GAAmBs+L,aAAa,CAACzhB,+DAAQ,CAAC2hB,aAAD,CAAR,CAAwB/yF,IAAxB,CAAD,EAAgC+yF,aAAhC,EAA+C9sE,OAA/C,EAAwDl0F,KAAxD,CAAhC;AACA,WAAOk0F,OAAP;AACH,GAVM,CAAP;AAWH,CAfD;AAgBA;AACA;AACA;;;IACM+sE;MAAAA;;;;;AACF,mDAAYR,YAAZ,EAA0B;AAAA;;AAAA;;AACtB,oCAAMA,YAAN;AACA,eAAKA,YAAL,GAAoBA,YAApB;AAFsB;AAGzB;AACD;AACJ;AACA;;;;;WACI,aAASj5H,KAAT,EAAgB;AACZ,aAAKi5H,YAAL,CAAkBj5H,KAAlB,GAA0BA,KAA1B;AACA,aAAKA,KAAL,GAAaA,KAAb;AACH;AACD;AACJ;AACA;;;;WACI,aAAU44G,MAAV,EAAkB;AACd,wbAAcA,MAAd;AACH;AACD;AACJ;AACA;;;;WACI,aAAWhhK,IAAX,EAAiB;AACb,ybAAeA,IAAf;AACH;;;;IAvB+C0gK;;AAyBpDmhB,EAAAA,qCAAqC,CAACzyJ,IAAtC;AAAA,qBAAmIyyJ,qCAAnI,EAviZsG78L,gEAuiZtG,CAA0L0iI,iFAA1L;AAAA;;AACAm6D,EAAAA,qCAAqC,CAACjyJ,IAAtC,kBAxiZsG5qC,gEAwiZtG;AAAA,UAAuH68L,qCAAvH;AAAA;AAAA;AAAA;AAAA;AAAA,eAxiZsG78L,yEAwiZtG;AAAA;SA1BM68L;;;AA2BN;AAAA;AAAA;AAUA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,iDAAYC,eAAZ,EAA6B;AAAA;;AAAA;;AACzB,oCAAMA,eAAN;AACA,eAAKA,eAAL,GAAuBA,eAAvB;AAFyB;AAG5B;AACD;AACJ;AACA;;;;;WACI,aAAS35H,KAAT,EAAgB;AACZ,aAAK25H,eAAL,CAAqB35H,KAArB,GAA6BA,KAA7B;AACA,aAAKA,KAAL,GAAaA,KAAb;AACH;AACD;AACJ;AACA;;;;WACI,aAAU44G,MAAV,EAAkB;AACd,sbAAcA,MAAd;AACH;AACD;AACJ;AACA;;;;WACI,aAAWhhK,IAAX,EAAiB;AACb,ubAAeA,IAAf;AACH;;;;IAvB6CygK;;AAyBlDqhB,EAAAA,mCAAmC,CAAC1yJ,IAApC;AAAA,qBAAiI0yJ,mCAAjI,EA/kZsG98L,gEA+kZtG,CAAsL0iI,iFAAtL;AAAA;;AACAo6D,EAAAA,mCAAmC,CAAClyJ,IAApC,kBAhlZsG5qC,gEAglZtG;AAAA,UAAqH88L,mCAArH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAhlZsG98L,yEAglZtG;AAAA;SA1BM88L;;;AA2BN;AAAA;AAAA;AAaA;AACA;AACA;;;IACME;MAAAA;;;;;AACF,sDAAYD,eAAZ,EAA6B;AAAA;;AAAA;;AACzB,qCAAMA,eAAN;AACA,eAAKA,eAAL,GAAuBA,eAAvB;AAFyB;AAG5B;AACD;AACJ;AACA;;;;;WACI,aAAS35H,KAAT,EAAgB;AACZ,aAAK25H,eAAL,CAAqB35H,KAArB,GAA6BA,KAA7B;AACA,aAAKA,KAAL,GAAaA,KAAb;AACH;AACD;AACJ;AACA;;;;WACI,aAAU44G,MAAV,EAAkB;AACd,2bAAcA,MAAd;AACH;AACD;AACJ;AACA;;;;WACI,aAAWhhK,IAAX,EAAiB;AACb,4bAAeA,IAAf;AACH;;;;IAvBkD0gK;;AAyBvDshB,EAAAA,wCAAwC,CAAC5yJ,IAAzC;AAAA,qBAAsI4yJ,wCAAtI,EA1nZsGh9L,gEA0nZtG,CAAgM0iI,iFAAhM;AAAA;;AACAs6D,EAAAA,wCAAwC,CAACpyJ,IAAzC,kBA3nZsG5qC,gEA2nZtG;AAAA,UAA0Hg9L,wCAA1H;AAAA;AAAA;AAAA;AAAA;AAAA,eA3nZsGh9L,yEA2nZtG;AAAA;SA1BMg9L;;;AA2BN;AAAA;AAAA;AAUA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,0CAAYZ,YAAZ,EAA0B;AAAA;;AAAA;;AACtB,qCAAMA,YAAN;AACA,eAAKA,YAAL,GAAoBA,YAApB;AAFsB;AAGzB;AACD;AACJ;AACA;AACA;AACA;AACA;;;;;WACI,aAAe/rL,KAAf,EAAsB;AAClB,aAAK+rL,YAAL,CAAkBa,UAAlB,GAA+B5sL,KAA/B;AACH;;;;IAbsCqrK;;AAgB3CshB,EAAAA,4BAA4B,CAAC7yJ,IAA7B;AAAA,qBAA0H6yJ,4BAA1H,EAzpZsGj9L,gEAypZtG,CAAwK0iI,kFAAxK;AAAA;;AACAu6D,EAAAA,4BAA4B,CAACryJ,IAA7B,kBA1pZsG5qC,gEA0pZtG;AAAA,UAA8Gi9L,4BAA9G;AAAA;AAAA;AAAA;AAAA;AAAA,eA1pZsGj9L,yEA0pZtG;AAAA;SAjBMi9L;;;AAkBN;AAAA;AAAA;AAUA;AACA;AACA;AACA;;;IACMziB;MAAAA;;;;;AACF,qCAAY1wJ,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA,eAAKA,OAAL,GAAeA,OAAf;AAFiB;AAGpB;;;;WACD,eAAe;AACX,eAAO,IAAP;AACH;;;;IAPiCsnG;;AAStCopD,EAAAA,uBAAuB,CAACpwI,IAAxB;AAAA,qBAAqHowI,uBAArH,EAlrZsGx6K,gEAkrZtG,CAA8JkE,8EAA9J;AAAA;;AACAs2K,EAAAA,uBAAuB,CAAC1tI,IAAxB,kBAnrZsG9sC,gEAmrZtG;AAAA,UAAyGw6K,uBAAzG;AAAA;AAAA,eAnrZsGx6K,iEAmrZtG,CAAmW,CAC3V;AACIoD,MAAAA,OAAO,EAAEguH,QADb;AAEIhhF,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMuqJ,uBAAN;AAAA,OAAD;AAF3B,KAD2V,CAAnW,GAnrZsGx6K,yEAmrZtG;AAAA;AAAA;AAAA;AAAA;AAAA;SAVMw6K;;;AAgBN;AAAA;AAAA;;AAcA,IAAM2iB,uBAAuB,GAAG;AAC5BC,EAAAA,aAAa,EAAE,KADa;AAE5BC,EAAAA,QAAQ,EAAE;AAFkB,CAAhC;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC;MAAAA;AACF,6BAAYr/L,SAAZ,EAAuB;AAAA;;AACnB,WAAKA,SAAL,GAAiBA,SAAjB;AACA;AACR;AACA;AACA;AACA;;AACQ,WAAKynL,UAAL,GAAkB,IAAlB;AACA,WAAK5vE,KAAL,GAAa,EAAb;AACH;AACD;AACJ;AACA;;;;;WAII,eAAW;AACP,eAAO,KAAKA,KAAZ;AACH;WALD,aAAS53G,IAAT,EAAe;AACX,aAAK43G,KAAL,GAAa53G,IAAI,IAAI,EAArB;AACH;;;aAID,oBAAW;AACP,aAAKD,SAAL,CAAeynL,UAAf,GAA4B,KAAKA,UAAjC;AACA,aAAK6X,wBAAL,GAAgC,KAAKt/L,SAAL,CAAe0nL,YAAf,CAC3B/lL,SAD2B,CACjB,KAAK49L,kBAAL,CAAwBzzL,IAAxB,CAA6B,IAA7B,CADiB,CAAhC;AAEH;;;aACD,uBAAc;AACV,YAAIi8G,SAAS,CAAC,KAAKu3E,wBAAN,CAAb,EAA8C;AAC1C,eAAKA,wBAAL,CAA8Bx9L,WAA9B;AACH;AACJ;;;aACD,4BAAmByqG,KAAnB,EAA0B;AAAA;;AACtB,aAAKvsG,SAAL,CAAeC,IAAf,GAAsB,KAAKA,IAAL,CAAUiB,MAAV,CAAiB,UAAAqb,IAAI;AAAA,iBAAI,QAAI,CAACijL,eAAL,CAAqBjjL,IAArB,EAA2BgwF,KAA3B,CAAJ;AAAA,SAArB,CAAtB;AACH;;;aACD,yBAAgBhwF,IAAhB,EAAsBgwF,KAAtB,EAA6B;AAAA;;AACzB,YAAMkzF,eAAe,GAAG,KAAKC,cAAL,CAAoBnzF,KAApB,CAAxB;AACA,YAAQ0zE,MAAR,GAAmB,KAAK0f,cAAxB,CAAQ1f,MAAR,CAFyB,CAGzB;;AACA,YAAIA,MAAM,CAACzoK,MAAP,KAAkB,CAAtB,EAAyB;AACrB,iBAAO,KAAKooL,SAAL,CAAerjL,IAAf,EAAqBkjL,eAArB,CAAP;AACH;;AACD,eAAOxf,MAAM,CAAChjK,IAAP,CAAY,UAAAitH,KAAK;AAAA,iBAAI,QAAI,CAAC01D,SAAL,CAAe1+B,MAAM,CAAC3kJ,IAAD,EAAO2tH,KAAP,CAArB,EAAoCu1D,eAApC,CAAJ;AAAA,SAAjB,CAAP;AACH;;;aACD,mBAAUp0L,MAAV,EAAkBkhG,KAAlB,EAAyB;AACrBlhG,QAAAA,MAAM,GAAG,KAAKq0L,cAAL,CAAoBr0L,MAApB,CAAT;;AACA,YAAI,KAAKs0L,cAAL,CAAoBP,QAApB,KAAiC,UAArC,EAAiD;AAC7C,iBAAO/zL,MAAM,CAACua,OAAP,CAAe2mF,KAAf,MAA0B,CAAC,CAAlC;AACH,SAFD,MAGK;AACD,iBAAOlhG,MAAM,CAACua,OAAP,CAAe2mF,KAAf,MAA0B,CAAjC;AACH;AACJ;;;aACD,wBAAel6F,KAAf,EAAsB;AAClB,YAAMqtK,eAAe,GAAG33D,SAAS,CAAC11G,KAAD,CAAT,GAAmBA,KAAK,CAACxI,QAAN,EAAnB,GAAsC,EAA9D;AACA,eAAO,KAAK81L,cAAL,CAAoBR,aAApB,GAAoCzf,eAApC,GAAsDA,eAAe,CAACljK,WAAhB,EAA7D;AACH;;;aACD,yBAAgBqjL,cAAhB,EAAgC;AAC5B;AACA,YAAI,CAAC,KAAK7/L,SAAL,CAAe4vH,SAAhB,IAA6B,CAAC,KAAK5vH,SAAL,CAAeg+K,UAAjD,EAA6D;AACzD,iBAAO,EAAP;AACH;;AACD,YAAIpwH,OAAO,CAACiyI,cAAD,CAAP,IAA2BA,cAAc,CAACroL,MAAf,GAAwB,CAAvD,EAA0D;AACtD,iBAAOqoL,cAAP;AACH,SAFD,MAGK;AACD;AACA,cAAMjwE,SAAS,GAAG,KAAK5vH,SAAL,CAAe4vH,SAAf,IAA4B,KAAK5vH,SAAL,CAAeg+K,UAA7D;AACA,iBAAO,CAACpuD,SAAD,CAAP;AACH;AACJ;;;WACD,eAAqB;AACjB,YAAMuE,QAAQ,GAAG,KAAK2rE,WAAtB;AACA,YAAMD,cAAc,GAAG93E,SAAS,CAACoM,QAAD,CAAT,IAAuB,OAAOA,QAAP,KAAoB,QAA3C,GAAsDA,QAAQ,CAAC8rD,MAA/D,GAAwE,EAA/F;AACA,eAAOrhK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqgL,uBAAlB,EAA2C/qE,QAA3C,EAAqD;AAAE8rD,UAAAA,MAAM,EAAE,KAAK8f,eAAL,CAAqBF,cAArB;AAAV,SAArD,CAAP;AACH;;;;;;AAELR,EAAAA,eAAe,CAAClzJ,IAAhB;AAAA,qBAA6GkzJ,eAA7G,EA7yZsGt9L,gEA6yZtG,CAA8I6hL,mBAA9I;AAAA;;AACAyb,EAAAA,eAAe,CAAC1yJ,IAAhB,kBA9yZsG5qC,gEA8yZtG;AAAA,UAAiGs9L,eAAjG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;SA5EMA;;;AA6EN;AAAA;AAAA;;AAcA,IAAM7iB,iBAAiB,GAAG,CACtBgF,uBADsB,EAEtBC,uBAFsB,EAGtBF,qBAHsB,EAItBG,sBAJsB,EAKtBC,2BALsB,EAMtBgC,uBANsB,EAOtB0L,sBAPsB,EAQtB0D,oBARsB,EAStBC,yBATsB,EAUtBtuB,0BAVsB,EAWtB6X,uBAXsB,EAYtB8iB,eAZsB,EAatB/P,oBAbsB,CAA1B;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM0Q;MAAAA;;;;AAENA,EAAAA,sBAAsB,CAAC7zJ,IAAvB;AAAA,qBAAoH6zJ,sBAApH;AAAA;;AACAA,EAAAA,sBAAsB,CAAC9vJ,IAAvB,kBA71ZsGnuC,+DA61ZtG;AAAA,UAAqHi+L;AAArH;AAyBAA,EAAAA,sBAAsB,CAAC5vJ,IAAvB,kBAt3ZsGruC,+DAs3ZtG;SA5BMi+L;;;AA6BN;AAAA;AAAA;;AAQA,IAAMC,mBAAmB,GAAG,CACxB1wE,aADwB,EAExBy0D,iBAFwB,EAGxBC,mBAHwB,EAIxB7D,kBAJwB,EAKxB/wD,wBALwB,EAMxB+jE,gBANwB,EAOxBuI,cAPwB,EAQxBZ,iBARwB,CAA5B;AAUA;AACA;AACA;;IACM33L;MAAAA;;;;AAENA,EAAAA,YAAY,CAAC+oC,IAAb;AAAA,qBAA0G/oC,YAA1G;AAAA;;AACAA,EAAAA,YAAY,CAAC8sC,IAAb,kBA/4ZsGnuC,+DA+4ZtG;AAAA,UAA2GqB;AAA3G;AAeAA,EAAAA,YAAY,CAACgtC,IAAb,kBA95ZsGruC,+DA85ZtG;AAAA,cAAmI,CAACM,0DAAD,EAAeE,wDAAf,EAA4B8kH,uEAA5B,EAAyC+c,+EAAzC,EAA6D47D,sBAA7D,EAAqFn5E,yEAArF,CAAnI,EAAuOxkH,0DAAvO,EAAqPE,wDAArP,EAAkQ8kH,uEAAlQ,EAA+Q+c,+EAA/Q,EAAmS47D,sBAAnS,EAA2Tn5E,yEAA3T;AAAA;SAlBMzjH;;;AAmBN;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM88L;MAAAA;AACF,gDAAYC,wBAAZ,EAAsC;AAAA;;AAClC,WAAKA,wBAAL,GAAgCA,wBAAhC;AACA;AACR;AACA;;AACQ,WAAKnD,SAAL,GAAiB,CAAjB;AACA,WAAKoD,eAAL;AACH;;;;aACD,qBAAYzvL,OAAZ,EAAqB;AACjB,YAAIo3G,SAAS,CAACp3G,OAAO,CAACqsL,SAAT,CAAb,EAAkC;AAC9B,eAAKoD,eAAL;AACA,eAAKD,wBAAL,CAA8BE,qBAA9B,CAAoD,KAAKrD,SAAzD;AACH;AACJ;;;aACD,2BAAkB;AACd,YAAMA,SAAS,GAAGxd,WAAW,CAAC,KAAKwd,SAAN,CAA7B;;AACA,aAAKmD,wBAAL,CAA8B5L,SAA9B,GAA0C,UAACC,IAAD,EAAU;AAChD,cAAIA,IAAI,CAACh9K,MAAL,GAAcwlL,SAAlB,EAA6B;AACzB;AACA,gOAAWxI,IAAI,CAAC93K,KAAL,CAAW,CAAX,EAAcsgL,SAAd,CAAX,IAAqCxI,IAAI,CAAC93K,KAAL,CAAWsgL,SAAX,CAArC;AACH,WAHD,MAIK;AACD,mBAAOxI,IAAP;AACH;AACJ,SARD;AASH;;;;;;AAEL0L,EAAAA,kCAAkC,CAAC/zJ,IAAnC;AAAA,qBAAgI+zJ,kCAAhI,EAn9ZsGn+L,gEAm9ZtG,CAAoL86L,wBAApL;AAAA;;AACAqD,EAAAA,kCAAkC,CAACvzJ,IAAnC,kBAp9ZsG5qC,gEAo9ZtG;AAAA,UAAoHm+L,kCAApH;AAAA;AAAA;AAAA;AAAA;AAAA,eAp9ZsGn+L,mEAo9ZtG;AAAA;SA7BMm+L;;;AA8BN;AAAA;AAAA;;AAUA,IAAMI,uBAAuB,GAAG,CAC5BxH,qBAD4B,EAE5B+D,wBAF4B,EAG5BsB,gCAH4B,EAI5BS,qCAJ4B,EAK5BC,mCAL4B,EAM5BE,wCAN4B,EAO5BC,4BAP4B,EAQ5BxG,qBAR4B,EAS5B0H,kCAT4B,CAAhC;AAWA;AACA;AACA;;IACMK;MAAAA;;;;AAENA,EAAAA,mBAAmB,CAACp0J,IAApB;AAAA,qBAAiHo0J,mBAAjH;AAAA;;AACAA,EAAAA,mBAAmB,CAACrwJ,IAApB,kBAh/ZsGnuC,+DAg/ZtG;AAAA,UAAkHw+L;AAAlH;AAiBAA,EAAAA,mBAAmB,CAACnwJ,IAApB,kBAjgasGruC,+DAigatG;AAAA,cAAiJ,CAACqB,YAAD,EAAeu6K,6EAAf,CAAjJ,EAAiLqiB,sBAAjL;AAAA;SApBMO;;;AAqBN;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;AACF,iCAAYC,oBAAZ,EAAkC;AAAA;;AAC9B,WAAKA,oBAAL,GAA4BA,oBAA5B;AACA;AACR;AACA;;AACQ,WAAKzD,SAAL,GAAiB,CAAjB;AACA,WAAKoD,eAAL;AACH;;;;aACD,qBAAYzvL,OAAZ,EAAqB;AACjB,YAAIo3G,SAAS,CAACp3G,OAAO,CAACqsL,SAAT,CAAb,EAAkC;AAC9B,eAAKoD,eAAL;AACA,eAAKK,oBAAL,CAA0BC,iBAA1B;AACH;AACJ;;;aACD,2BAAkB;AACd,YAAM1D,SAAS,GAAGxd,WAAW,CAAC,KAAKwd,SAAN,CAA7B;;AACA,aAAKyD,oBAAL,CAA0BlM,SAA1B,GAAsC,UAACC,IAAD,EAAU;AAC5C,cAAIA,IAAI,CAACh9K,MAAL,GAAcwlL,SAAlB,EAA6B;AACzB,gBAAI1zJ,MAAJ;AACAA,YAAAA,MAAM,GAAGkrJ,IAAI,CAAC93K,KAAL,CAAW,CAAX,EAAcsgL,SAAd,CAAT;AACA1zJ,YAAAA,MAAM,CAAChyB,IAAP,CAAYk9K,IAAI,CAAC93K,KAAL,CAAWsgL,SAAX,EAAsBxI,IAAI,CAACh9K,MAA3B,CAAZ;AACA,mBAAO8xB,MAAP;AACH,WALD,MAMK;AACD,mBAAOkrJ,IAAP;AACH;AACJ,SAVD;AAWH;;;;;;AAELgM,EAAAA,mBAAmB,CAACr0J,IAApB;AAAA,qBAAiHq0J,mBAAjH,EAxjasGz+L,gEAwjatG,CAAsJmyL,oBAAtJ;AAAA;;AACAsM,EAAAA,mBAAmB,CAAC7zJ,IAApB,kBAzjasG5qC,gEAyjatG;AAAA,UAAqGy+L,mBAArG;AAAA;AAAA;AAAA;AAAA;AAAA,eAzjasGz+L,mEAyjatG;AAAA;SA/BMy+L;;;AAgCN;AAAA;AAAA;;AAUA,IAAMG,uBAAuB,GAAG,CAC5BrZ,qBAD4B,CAAhC;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMsZ;MAAAA;;;;AAENA,EAAAA,kBAAkB,CAACz0J,IAAnB;AAAA,qBAAgHy0J,kBAAhH;AAAA;;AACAA,EAAAA,kBAAkB,CAAC1wJ,IAAnB,kBArlasGnuC,+DAqlatG;AAAA,UAAiH6+L;AAAjH;AACAA,EAAAA,kBAAkB,CAACxwJ,IAAnB,kBAtlasGruC,+DAslatG;AAAA,cAA+I,CAACqB,YAAD,CAA/I,EAA+J48L,sBAA/J;AAAA;SAJMY;;;AAKN;AAAA;AAAA;;AASA,IAAMC,mBAAmB,GAAG,CACxBxV,iBADwB,EAExByM,4BAFwB,EAGxBV,uBAHwB,EAIxBD,6BAJwB,EAKxBD,2BALwB,CAA5B;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM/uK;MAAAA;;;;AAENA,EAAAA,cAAc,CAACgkB,IAAf;AAAA,qBAA4GhkB,cAA5G;AAAA;;AACAA,EAAAA,cAAc,CAAC+nB,IAAf,kBAxnasGnuC,+DAwnatG;AAAA,UAA6GomB;AAA7G;AASAA,EAAAA,cAAc,CAACioB,IAAf,kBAjoasGruC,+DAioatG;AAAA,eAAwI,CAAC;AAAEoD,MAAAA,OAAO,EAAE8yJ,aAAX;AAA0B3yJ,MAAAA,QAAQ,EAAEkhI,iEAAYA;AAAhD,KAAD,CAAxI;AAAA,cAAwM,CAACpjI,YAAD,CAAxM,EAAwN48L,sBAAxN;AAAA;SAZM73K;;;AAaN;AAAA;AAAA;;AAUA,IAAM24K,uBAAuB,GAAG,CAC5BrR,qBAD4B,CAAhC;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMsR;MAAAA;;;;AAENA,EAAAA,kBAAkB,CAAC50J,IAAnB;AAAA,qBAAgH40J,kBAAhH;AAAA;;AACAA,EAAAA,kBAAkB,CAAC7wJ,IAAnB,kBA9pasGnuC,+DA8patG;AAAA,UAAiHg/L;AAAjH;AACAA,EAAAA,kBAAkB,CAAC3wJ,IAAnB,kBA/pasGruC,+DA+patG;AAAA,cAA+I,CAACqB,YAAD,CAA/I,EAA+J48L,sBAA/J;AAAA;SAJMe;;;AAKN;AAAA;AAAA;;AASA,IAAMC,sBAAsB,GAAG,CAC3B9M,oBAD2B,EAE3BsM,mBAF2B,EAG3B1N,2BAH2B,CAA/B;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMmO;MAAAA;;;;AAENA,EAAAA,iBAAiB,CAAC90J,IAAlB;AAAA,qBAA+G80J,iBAA/G;AAAA;;AACAA,EAAAA,iBAAiB,CAAC/wJ,IAAlB,kBAjsasGnuC,+DAisatG;AAAA,UAAgHk/L;AAAhH;AAKAA,EAAAA,iBAAiB,CAAC7wJ,IAAlB,kBAtsasGruC,+DAssatG;AAAA,eAA8I,CAAC;AAAEoD,MAAAA,OAAO,EAAE8yJ,aAAX;AAA0B3yJ,MAAAA,QAAQ,EAAEkhI,iEAAYA;AAAhD,KAAD,CAA9I;AAAA,cAA8M,CAACpjI,YAAD,CAA9M,EAA8N48L,sBAA9N;AAAA;SARMiB;;;AASN;AAAA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM34K;MAAAA;;;;AAENA,EAAAA,eAAe,CAAC6jB,IAAhB;AAAA,qBAA6G7jB,eAA7G;AAAA;;AACAA,EAAAA,eAAe,CAAC4nB,IAAhB,kBAnvasGnuC,+DAmvatG;AAAA,UAA8GumB;AAA9G;AACAA,EAAAA,eAAe,CAAC8nB,IAAhB,kBApvasGruC,+DAovatG;AAAA,cAAyI6+L,kBAAzI,EAA6Jz4K,cAA7J,EAA6K44K,kBAA7K,EAAiME,iBAAjM,EAAoNV,mBAApN;AAAA;SAJMj4K;;;AAKN;AAAA;AAAA;AAOA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrubA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMg5K,eAAe,GAAG,SAAlBA,eAAkB,CAACtsK,WAAD,EAAcwH,OAAd,EAAuB+kK,aAAvB,EAAyC;AAC7D,MAAIC,YAAY,GAAGxsK,WAAW,CAACkxC,kBAAZ,CAA+B1pC,OAA/B,CAAnB;;AACA,MAAM8M,MAAM,GAAG,SAATA,MAAS,CAACrpC,IAAD,EAAU;AACrBshM,IAAAA,aAAa,CAAC/kK,OAAD,EAAUv8B,IAAV,CAAb;AACAuhM,IAAAA,YAAY,CAACt4L,aAAb;AACA,WAAOs4L,YAAY,CAACp7H,SAAb,CAAuBnlB,MAAvB,CAA8B,UAAC2kB,OAAD,EAAU67H,QAAV,EAAuB;AACxD,aAAO77H,OAAO,GAAG67H,QAAQ,CAAC59G,WAA1B;AACH,KAFM,EAEJ,EAFI,EAEA/5E,IAFA,EAAP;AAGH,GAND;;AAOAw/B,EAAAA,MAAM,CAAC28B,OAAP,GAAiB,YAAM;AACnBu7H,IAAAA,YAAY,CAACv7H,OAAb;AACAu7H,IAAAA,YAAY,GAAG,IAAf;AACH,GAHD;;AAIA,SAAOl4J,MAAP;AACH,CAdD;;AAeA,IAAMo4J,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACllK,OAAD,EAAUv8B,IAAV,EAAmB;AAChDu8B,EAAAA,OAAO,CAAC7H,SAAR,GAAoB6H,OAAO,CAACtQ,KAAR,GAAgBjsB,IAApC;AACAu8B,EAAAA,OAAO,CAAC0tG,KAAR,GAAgBjqI,IAAI,CAACiqI,KAArB;AACA1tG,EAAAA,OAAO,CAACnqB,KAAR,GAAgBpS,IAAI,CAACoS,KAArB;AACAmqB,EAAAA,OAAO,CAACmlK,UAAR,GAAqB1hM,IAAI,CAAC0hM,UAA1B;AACH,CALD;;AAMA,IAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACplK,OAAD,EAAUv8B,IAAV,EAAmB;AAChDu8B,EAAAA,OAAO,CAACtQ,KAAR,GAAgBjsB,IAAI,CAACisB,KAArB;AACAsQ,EAAAA,OAAO,CAAC7H,SAAR,GAAoB6H,OAAO,CAACmlK,UAAR,GAAqB1hM,IAAzC;AACH,CAHD;;AAIA,IAAM4hM,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACrlK,OAAD,EAAUv8B,IAAV,EAAmB;AAC3Cu8B,EAAAA,OAAO,CAACmlK,UAAR,GAAqB1hM,IAAI,CAAC0hM,UAA1B;AACH,CAFD;AAGA;AACA;AACA;;;AACA,IAAMG,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,aAAD,EAAmB;AACzC,MAAMC,eAAe,GAAG,EAAxB;AACA,MAAIC,WAAW,GAAG,CAAlB;;AACA,MAAMC,UAAU,GAAG,SAAbA,UAAa,CAAC1K,OAAD,EAAUluJ,MAAV,EAAkB5yB,KAAlB,EAA4B;AAC3C8gL,IAAAA,OAAO,CAACzvL,OAAR,CAAgB,UAAC0vL,MAAD,EAAY;AACxB,UAAIA,MAAM,CAAC/gL,KAAP,KAAiBA,KAArB,EAA4B;AACxB,YAAMyrL,cAAc,GAAG,IAAIC,cAAJ,CAAmB3K,MAAnB,EAA2BwK,WAA3B,CAAvB;AACA34J,QAAAA,MAAM,CAAChyB,IAAP,CAAY6qL,cAAZ;;AACA,YAAI1K,MAAM,CAACt3L,QAAP,IAAmBs3L,MAAM,CAACt3L,QAAP,CAAgB8c,IAAhB,CAAqB,UAAA2zC,CAAC;AAAA,iBAAIA,CAAC,KAAK6mI,MAAV;AAAA,SAAtB,CAAvB,EAAgE;AAC5D,cAAMt3L,QAAQ,GAAGgiM,cAAc,CAAC3K,OAAf,GAAyB,EAA1C;AACA0K,UAAAA,UAAU,CAACzK,MAAM,CAACt3L,QAAR,EAAkBA,QAAlB,EAA4BuW,KAAK,GAAG,CAApC,CAAV;AACH,SAHD,MAIK;AACDurL,UAAAA,WAAW;AACd;AACJ;AACJ,KAZD;AAaH,GAdD;;AAeAC,EAAAA,UAAU,CAACH,aAAD,EAAgBC,eAAhB,EAAiC,CAAjC,CAAV;AACA,SAAOA,eAAP;AACH,CApBD;AAqBA;AACA;AACA;;;AACA,IAAMK,cAAc,GAAG,SAAjBA,cAAiB,CAAC7K,OAAD,EAAa;AAChC,MAAIA,OAAJ,EAAa;AACTA,IAAAA,OAAO,CAACzvL,OAAR,CAAgB,UAAA0vL,MAAM,EAAI;AACtBA,MAAAA,MAAM,CAACxxH,OAAP;AACH,KAFD;AAGH;AACJ,CAND;AAOA;AACA;AACA;;;IACMm8H;AACF,0BAAY3K,MAAZ,EAAoBwK,WAApB,EAAiC;AAAA;;AAC7B,SAAK/hM,KAAL,GAAau3L,MAAM,CAACv3L,KAApB;AACA,SAAKgqI,KAAL,GAAautD,MAAM,CAACvtD,KAApB;AACA,SAAK7gI,MAAL,GAAcouL,MAAM,CAACpuL,MAArB;AACA,SAAKi5L,MAAL,GAAc7K,MAAM,CAAC6K,MAArB;AACA,SAAK7vL,KAAL,GAAaglL,MAAM,CAAChlL,KAApB;AACA,SAAK8vL,iBAAL,GAAyB9K,MAAM,CAAC8K,iBAAhC;AACA,SAAKC,WAAL,GAAmB/K,MAAM,CAAC+K,WAA1B;AACA,SAAKC,sBAAL,GAA8BhL,MAAM,CAACgL,sBAArC;AACA,SAAKC,sBAAL,GAA8BjL,MAAM,CAACiL,sBAArC;AACA,SAAKC,iBAAL,GAAyBlL,MAAM,CAACkL,iBAAhC;;AACA,QAAIlL,MAAM,CAACryI,cAAX,EAA2B;AACvB,WAAKA,cAAL,GAAsBk8I,eAAe,CAAC7J,MAAM,CAACryI,cAAP,CAAsBpwB,WAAvB,EAAoC;AACrEL,QAAAA,SAAS,EAAE8iK,MAD0D;AAErEA,QAAAA,MAAM,EAAEA,MAF6D;AAGrEwK,QAAAA,WAAW,EAAEA;AAHwD,OAApC,EAIlCJ,mBAJkC,CAArC;AAKH;;AACD,QAAIpK,MAAM,CAACmL,mBAAX,EAAgC;AAC5B,WAAKA,mBAAL,GAA2BtB,eAAe,CAAC7J,MAAM,CAACmL,mBAAP,CAA2B5tK,WAA5B,EAAyC;AAC/EyiK,QAAAA,MAAM,EAAEA,MADuE;AAE/EvtD,QAAAA,KAAK,EAAEutD,MAAM,CAACvtD;AAFiE,OAAzC,EAGvC03D,wBAHuC,CAA1C;AAIH;;AACD,QAAInK,MAAM,CAACoL,mBAAX,EAAgC;AAC5B,WAAKA,mBAAL,GAA2BvB,eAAe,CAAC7J,MAAM,CAACoL,mBAAP,CAA2B7tK,WAA5B,EAAyC,EAAzC,EAA6C0sK,wBAA7C,CAA1C;AACH;;AACD,QAAIjK,MAAM,CAACqL,yBAAX,EAAsC;AAClC,WAAKA,yBAAL,GAAiCxB,eAAe,CAAC7J,MAAM,CAACqL,yBAAP,CAAiC9tK,WAAlC,EAA+C,EAA/C,EAAmD0sK,wBAAnD,CAAhD;AACH;AACJ;;;;WACD,mBAAU;AACN,UAAI,KAAKt8I,cAAT,EAAyB;AACrB,aAAKA,cAAL,CAAoB6gB,OAApB;AACH;;AACD,UAAI,KAAK28H,mBAAT,EAA8B;AAC1B,aAAKA,mBAAL,CAAyB38H,OAAzB;AACH;;AACD,UAAI,KAAK48H,mBAAT,EAA8B;AAC1B,aAAKA,mBAAL,CAAyB58H,OAAzB;AACH;;AACD,UAAI,KAAK68H,yBAAT,EAAoC;AAChC,aAAKA,yBAAL,CAA+B78H,OAA/B;AACH;;AACDo8H,MAAAA,cAAc,CAAC,KAAK7K,OAAN,CAAd;AACH;;;;;;AAGLtmD,sEAAA,CAAqB;AAAErnI,EAAAA,QAAQ,EAARA,yDAAQA;AAAV,CAArB;AACA;AACA;AACA;AACA;;AACA,IAAMk5L,gBAAe,GAAG,SAAlBA,eAAkB,CAACryL,OAAD,EAAa;AACjC,MAAM8mL,OAAO,GAAGsK,iBAAiB,CAACpxL,OAAO,CAAC8mL,OAAT,CAAjC;AACA,MAAMwL,QAAQ,GAAG,IAAI5B,6DAAJ,CAAkB;AAC/B5J,IAAAA,OAAO,EAAEA,OADsB;AAE/Bv3L,IAAAA,IAAI,EAAEyQ,OAAO,CAACzQ,IAFiB;AAG/BwnL,IAAAA,UAAU,EAAE/2K,OAAO,CAAC+2K,UAHW;AAI/B1xF,IAAAA,MAAM,EAAErlF,OAAO,CAACwb,KAJe;AAK/B+2K,IAAAA,kBAAkB,EAAEvyL,OAAO,CAACuyL,kBALG;AAM/BC,IAAAA,wBAAwB,EAAExyL,OAAO,CAACwyL,wBANH;AAO/BC,IAAAA,WAAW,EAAEzyL,OAAO,CAACyyL,WAPU;AAQ/BC,IAAAA,SAAS,EAAE1yL,OAAO,CAAC0yL,SARY;AAS/BzB,IAAAA,UAAU,EAAEjxL,OAAO,CAACixL;AATW,GAAlB,CAAjB;AAWA,MAAMr4J,MAAM,GAAG05J,QAAQ,CAACK,QAAT,EAAf;AACA/5J,EAAAA,MAAM,CAACg6J,OAAP,GAAiB5yL,OAAO,CAAC4yL,OAAzB;AACAh6J,EAAAA,MAAM,CAAC9oB,IAAP,GAAc9P,OAAO,CAAC8P,IAAtB;AACA8oB,EAAAA,MAAM,CAACuhF,GAAP,GAAan6G,OAAO,CAACm6G,GAArB;AACAw3E,EAAAA,cAAc,CAAC7K,OAAD,CAAd;AACA,SAAOluJ,MAAP;AACH,CAnBD;AAoBA;AACA;AACA;;;AACA,IAAMi6J,UAAS,GAAG,SAAZA,SAAY,CAAC7yL,OAAD,EAAa;AAC3B,MAAM2yL,QAAQ,GAAG,IAAIhC,2DAAJ,CAAa3wL,OAAb,CAAjB;AACA,SAAO2yL,QAAQ,CAACE,SAAT,EAAP;AACH,CAHD;AAIA;AACA;AACA;;;AACA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACnxL,KAAD,EAAW;AACjC,SAAOA,KAAK,IAAIA,KAAK,CAACoxL,MAAtB;AACH,CAFD;AAIA;AACA;AACA;;;IACMC;MAAAA;AACF,wBAAY9rL,MAAZ,EAAoB;AAAA;;AAChB,WAAKA,MAAL,GAAcA,MAAd;AACH;AACD;AACJ;AACA;;;;;WACI,eAAY;AACR,eAAO,KAAKA,MAAL,GAAc,KAAKA,MAAL,CAAYlB,KAAZ,GAAoB,CAAlC,GAAsC,CAA7C;AACH;;;;;;AAELgtL,EAAAA,UAAU,CAACv3J,IAAX;AAAA,qBAAwGu3J,UAAxG,EAA8F3hM,gEAA9F,CAAoI2hM,UAApI;AAAA;;AACAA,EAAAA,UAAU,CAAC70J,IAAX,kBAD8F9sC,gEAC9F;AAAA,UAA4F2hM,UAA5F;AAAA;AAAA;AAAA;AAD8F3hM,QAAAA,6DAC9F,WAA2S2hM,UAA3S;AAAA;;AAAA;AAAA;;AAD8F3hM,QAAAA,6DAC9F,MAD8FA,0DAC9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;SAZM2hM;;;AAaN;AAAA;AAAA;AAoBA;AACA;AACA;;;AACA,IAAMl8E,eAAe,GAAG;AACpB7sG,EAAAA,IAAI,EAAE,sCADc;AAEpB8sG,EAAAA,WAAW,EAAE,sBAFO;AAGpBC,EAAAA,YAAY,EAAE,CAAC,gBAAD,EAAmB,iBAAnB,CAHM;AAIpBC,EAAAA,WAAW,EAAE,UAJO;AAKpBC,EAAAA,OAAO,EAAE,EALW;AAMpBC,EAAAA,gBAAgB,EAAE;AANE,CAAxB,EASA;;AACA;AACA;AACA;AACA;;IACM87E;MAAAA;AACF,kCAAYz5E,YAAZ,EAA0BjhE,IAA1B,EAAgC;AAAA;;AAC5B,WAAKihE,YAAL,GAAoBA,YAApB;AACA,WAAKjhE,IAAL,GAAYA,IAAZ;AACA;AACR;AACA;AACA;;AACQ,WAAK42D,QAAL,GAAgB,aAAhB;AACA;AACR;AACA;;AACQ,WAAK23E,OAAL,GAAe,IAAInnL,qDAAJ,EAAf;AACA62G,MAAAA,2EAAe,CAACM,eAAD,CAAf;AACA,WAAKo8E,QAAL,GAAgB,KAAKA,QAAL,CAAc93L,IAAd,CAAmB,IAAnB,CAAhB;AACH;AACD;AACJ;AACA;AACA;AACA;;;;;aACI,cAAK+3L,UAAL,EAAiB;AACb,aAAKN,SAAL,CAAeM,UAAf,EAA2BnkM,IAA3B,CAAgC,KAAKkkM,QAArC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,yBAAgBC,UAAhB,EAA4B;AACxB,YAAMC,WAAW,GAAG,KAAKC,aAAL,CAAmBF,UAAnB,CAApB;;AACA,YAAMnzL,OAAO,GAAGqyL,gBAAe,CAAC;AAC5BvL,UAAAA,OAAO,EAAE,KAAKA,OADc;AAE5Bv3L,UAAAA,IAAI,EAAE6jM,WAAW,CAAC7jM,IAFU;AAG5BisB,UAAAA,KAAK,EAAE43K,WAAW,CAAC53K,KAHS;AAI5Bu7J,UAAAA,UAAU,EAAE,KAAKA,UAJW;AAK5B6b,UAAAA,OAAO,EAAE,KAAKA,OALc;AAM5B9iL,UAAAA,IAAI,EAAE,KAAKA,IANiB;AAO5BqqG,UAAAA,GAAG,EAAE,KAAKX,YAAL,CAAkBW,GAPK;AAQ5Bo4E,UAAAA,kBAAkB,EAAE,KAAKA,kBARG;AAS5BC,UAAAA,wBAAwB,EAAE,KAAKA,wBATH;AAU5BC,UAAAA,WAAW,EAAE,KAAKA;AAVU,SAAD,CAA/B;;AAYA,eAAOzyL,OAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;aACI,mBAAUmzL,UAAV,EAAsB;AAClB,YAAMnzL,OAAO,GAAG8yL,iBAAiB,CAACK,UAAD,CAAjB,GACZA,UADY,GAEZ,KAAKd,eAAL,CAAqBc,UAArB,CAFJ;AAGA,eAAO,KAAK56I,IAAL,CAAUrS,iBAAV,CAA4B;AAAA,iBAAM2sJ,UAAS,CAAC7yL,OAAD,CAAf;AAAA,SAA5B,CAAP;AACH;;;aACD,uBAAcmzL,UAAd,EAA0B;AACtB,YAAIv6J,MAAJ;;AACA,YAAIu6J,UAAJ,EAAgB;AACZ,cAAIxiL,KAAK,CAACusC,OAAN,CAAci2I,UAAd,CAAJ,EAA+B;AAC3Bv6J,YAAAA,MAAM,GAAG;AACLrpC,cAAAA,IAAI,EAAE4jM;AADD,aAAT;AAGH,WAJD,MAKK;AACDv6J,YAAAA,MAAM,GAAGu6J,UAAT;AACH;AACJ,SATD,MAUK;AACDv6J,UAAAA,MAAM,GAAG;AACLrpC,YAAAA,IAAI,EAAE,KAAKA,IADN;AAELisB,YAAAA,KAAK,EAAE,KAAKA;AAFP,WAAT;AAIH;;AACD,eAAOod,MAAP;AACH;;;aACD,kBAAS06J,OAAT,EAAkB;AACd7C,QAAAA,kEAAM,CAAC6C,OAAD,EAAU,KAAKnkF,QAAf,EAAyB;AAC3BokF,UAAAA,UAAU,EAAE,KAAKA,UADU;AAE3BC,UAAAA,QAAQ,EAAE,KAAKA;AAFY,SAAzB,CAAN;AAIH;;;;;;AAELP,EAAAA,oBAAoB,CAACx3J,IAArB;AAAA,qBAAkHw3J,oBAAlH,EA/H8F5hM,gEA+H9F,CAAwJkE,8EAAxJ,GA/H8FlE,gEA+H9F,CAA2LA,kDAA3L;AAAA;;AACA4hM,EAAAA,oBAAoB,CAAC90J,IAArB,kBAhI8F9sC,gEAgI9F;AAAA,UAAsG4hM,oBAAtG;AAAA;AAAA;AAAA;AAhI8F5hM,QAAAA,6DAgI9F,WAMuD2hM,UANvD;AAAA;;AAAA;AAAA;;AAhI8F3hM,QAAAA,6DAgI9F,MAhI8FA,0DAgI9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAhI8FA,iEAgI9F,CAA8c,CACtc+kH,8EADsc,EAEtc;AACI3hH,MAAAA,OAAO,EAAE4hH,sEADb;AAEIzhH,MAAAA,QAAQ,EAAE;AAFd,KAFsc,CAA9c;AAAA;AAAA;AAAA;AAAA;AAAA;SAzFMq+L;;;AAgGN;AAAA;AAAA;AAyCA;AACA;AACA;AACA;AACA;;;IACMQ;MAAAA,yOACF,sCAAYnvK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELmvK,EAAAA,4BAA4B,CAACh4J,IAA7B;AAAA,qBAA0Hg4J,4BAA1H,EA1L8FpiM,gEA0L9F,CAAwKA,uDAAxK;AAAA;;AACAoiM,EAAAA,4BAA4B,CAACx3J,IAA7B,kBA3L8F5qC,gEA2L9F;AAAA,UAA8GoiM,4BAA9G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;;;IACMC;MAAAA,+OACF,4CAAYpvK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELovK,EAAAA,kCAAkC,CAACj4J,IAAnC;AAAA,qBAAgIi4J,kCAAhI,EA9M8FriM,gEA8M9F,CAAoLA,uDAApL;AAAA;;AACAqiM,EAAAA,kCAAkC,CAACz3J,IAAnC,kBA/M8F5qC,gEA+M9F;AAAA,UAAoHqiM,kCAApH;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,yOACF,sCAAYrvK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELqvK,EAAAA,4BAA4B,CAACl4J,IAA7B;AAAA,qBAA0Hk4J,4BAA1H,EAnO8FtiM,gEAmO9F,CAAwKA,uDAAxK;AAAA;;AACAsiM,EAAAA,4BAA4B,CAAC13J,IAA7B,kBApO8F5qC,gEAoO9F;AAAA,UAA8GsiM,4BAA9G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;;;IACM5iB;MAAAA,oOACF,iCAAYzsJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELysJ,EAAAA,uBAAuB,CAACt1I,IAAxB;AAAA,qBAAqHs1I,uBAArH,EAxP8F1/K,gEAwP9F,CAA8JA,uDAA9J;AAAA;;AACA0/K,EAAAA,uBAAuB,CAAC90I,IAAxB,kBAzP8F5qC,gEAyP9F;AAAA,UAAyG0/K,uBAAzG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;;;IACM6iB;MAAAA;;;;;AACF,6BAAY1sL,MAAZ,EAAoB;AAAA;;AAAA,+BACVA,MADU;AAEnB;;;IAHyB8rL;;AAK9BY,EAAAA,eAAe,CAACn4J,IAAhB;AAAA,qBAA6Gm4J,eAA7G,EA3Q8FviM,gEA2Q9F,CAA8I2hM,UAA9I;AAAA;;AACAY,EAAAA,eAAe,CAACz1J,IAAhB,kBA5Q8F9sC,gEA4Q9F;AAAA,UAAiGuiM,eAAjG;AAAA;AAAA;AAAA;AA5Q8FviM,QAAAA,6DA4Q9F,WAKgFoiM,4BALhF;AA5Q8FpiM,QAAAA,6DA4Q9F,WAKwMqiM,kCALxM;AA5Q8FriM,QAAAA,6DA4Q9F,WAKgUsiM,4BALhU;AA5Q8FtiM,QAAAA,6DA4Q9F,WAK6a0/K,uBAL7a;AAAA;;AAAA;AAAA;;AA5Q8F1/K,QAAAA,6DA4Q9F,MA5Q8FA,0DA4Q9F;AA5Q8FA,QAAAA,6DA4Q9F,MA5Q8FA,0DA4Q9F;AA5Q8FA,QAAAA,6DA4Q9F,MA5Q8FA,0DA4Q9F;AA5Q8FA,QAAAA,6DA4Q9F,MA5Q8FA,0DA4Q9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA5Q8FA,iEA4Q9F,CAAuW,CAC/V;AACIoD,MAAAA,OAAO,EAAEu+L,UADb;AAEIvxJ,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMsyK,eAAN;AAAA,OAAD;AAF3B,KAD+V,CAAvW,GA5Q8FviM,yEA4Q9F;AAAA;AAAA;AAAA;AAAA;AAAA;SANMuiM;;;AAYN;AAAA;AAAA;AA0CA;AACA;AACA;;;IACMC;MAAAA;;;;;AACF,kCAAY3sL,MAAZ,EAAoB;AAAA;;AAAA;;AAChB,iCAAMA,MAAN;AACA,YAAKA,MAAL,GAAcA,MAAd;AAFgB;AAGnB;;;IAJ8B8rL;;AAMnCa,EAAAA,oBAAoB,CAACp4J,IAArB;AAAA,qBAAkHo4J,oBAAlH,EArU8FxiM,gEAqU9F,CAAwJ2hM,UAAxJ;AAAA;;AACAa,EAAAA,oBAAoB,CAAC11J,IAArB,kBAtU8F9sC,gEAsU9F;AAAA,UAAsGwiM,oBAAtG;AAAA;AAAA,eAtU8FxiM,iEAsU9F,CAAmL,CAC3K;AACIoD,MAAAA,OAAO,EAAEu+L,UADb;AAEIvxJ,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMuyK,oBAAN;AAAA,OAAD;AAF3B,KAD2K,CAAnL,GAtU8FxiM,yEAsU9F;AAAA;AAAA;AAAA;AAAA;AAAA;SAPMwiM;;;AAaN;AAAA;AAAA;;AAoBA,IAAMv+L,YAAY,GAAG,CACjB29L,oBADiB,EAEjBW,eAFiB,EAGjBC,oBAHiB,EAIjB9iB,uBAJiB,EAKjB4iB,4BALiB,EAMjBF,4BANiB,EAOjBC,kCAPiB,CAArB;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMI;MAAAA;;;;AAENA,EAAAA,iBAAiB,CAACr4J,IAAlB;AAAA,qBAA+Gq4J,iBAA/G;AAAA;;AACAA,EAAAA,iBAAiB,CAACt0J,IAAlB,kBA3Y8FnuC,+DA2Y9F;AAAA,UAAgHyiM;AAAhH;AAaAA,EAAAA,iBAAiB,CAACp0J,IAAlB,kBAxZ8FruC,+DAwZ9F;SAhBMyiM;;;AAiBN;AAAA;AAAA;AAQA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AA+IuGziM,IAAAA,yDAouM/F;;;;iBApuM+FA;AAAAA,IAAAA,yDAsuM3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAtuM2FA,IAAAA,6DAsmN3F;AAtmN2FA,IAAAA,qDA0mN9C;AA1mN8CA,IAAAA,2DA2mN3F;;;;iBA3mN2FA;AAAAA,IAAAA,yDAymNvF;AAzmNuFA,IAAAA,0DA0mNvF;;;;;;;;;;;;;AA1mNuFA,IAAAA,6DA4mN3F;AA5mN2FA,IAAAA,qDAknNvF;AAlnNuFA,IAAAA,2DAmnN3F;;;;;iBAnnN2FA;AAAAA,IAAAA,yDA6mNvF,mFA7mNuFA,8DA6mNvF;AA7mNuFA,IAAAA,0DA+mNvF;AA/mNuFA,IAAAA,wDAknNvF;AAlnNuFA,IAAAA,iEAknNvF;;;;;;AAlnNuFA,IAAAA,6DAonN3F;AApnN2FA,IAAAA,qDAwnNhD;AAxnNgDA,IAAAA,2DAynN3F;;;;iBAznN2FA;AAAAA,IAAAA,yDAsnNvF;AAtnNuFA,IAAAA,0DAwnNvF;;;;;;cAxnNuFA;;AAAAA,IAAAA,6DA4nN3F;AA5nN2FA,IAAAA,yDAmoNnF;AAnoNmFA,MAAAA,4DAmoNnF;AAAA,mBAnoNmFA,4DAmoNnF;AAAA,aAAS,iCAAmB,CAAnB,CAAT;AAAA;AAnoNmFA,MAAAA,4DAmoNnF;AAAA,mBAnoNmFA,4DAmoNnF;AAAA,aACiB,iCAAmB,CAAnB,CADjB;AAAA;AAnoNmFA,IAAAA,qDAooN3C;AApoN2CA,IAAAA,2DAooNxC;;;;iBApoNwCA;AAAAA,IAAAA,wDAkoNnF;AAloNmFA,IAAAA,0DAkoNnF;;;;;;;;;;;;;;eAloNmFA;;AAAAA,IAAAA,6DAsoN3F;AAtoN2FA,IAAAA,yDA6oNnF;AAAA,wBA7oNmFA,4DA6oNnF;AAAA;AAAA,oBA7oNmFA,4DA6oNnF;AAAA,aAAS,6BAAiB,CAAjB,CAAT;AAAA;AAAA,wBA7oNmFA,4DA6oNnF;AAAA;AAAA,oBA7oNmFA,4DA6oNnF;AAAA,aACiB,6BAAiB,CAAjB,CADjB;AAAA;AA7oNmFA,IAAAA,qDA+oNnF;AA/oNmFA,IAAAA,2DAgpNvF;;;;;iBAhpNuFA;AAAAA,IAAAA,wDA4oNnF;AA5oNmFA,IAAAA,yDA4oNnF,YA5oNmFA,8DA4oNnF;AA5oNmFA,IAAAA,0DA2oNnF;AA3oNmFA,IAAAA,wDA+oNnF;AA/oNmFA,IAAAA,iEA+oNnF;;;;;;eA/oNmFA;;AAAAA,IAAAA,6DAkpN3F;AAlpN2FA,IAAAA,yDAypNnF;AAzpNmFA,MAAAA,4DAypNnF;AAAA,oBAzpNmFA,4DAypNnF;AAAA,aAAS,+BAAT;AAAA;AAzpNmFA,MAAAA,4DAypNnF;AAAA,oBAzpNmFA,4DAypNnF;AAAA,aACiB,+BADjB;AAAA;AAzpNmFA,IAAAA,qDA0pNjD;AA1pNiDA,IAAAA,2DA0pN9C;;;;iBA1pN8CA;AAAAA,IAAAA,wDAwpNnF;AAxpNmFA,IAAAA,0DAwpNnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAxpNmFA;;AAAAA,IAAAA,6DAuiP/F;AAviP+FA,IAAAA,yDA4iP3F;AA5iP2FA,MAAAA,4DA4iP3F;AAAA,mBA5iP2FA,4DA4iP3F;AAAA,aAAW,8BAAuB,OAAvB,CAAX;AAAA;AA5iP2FA,IAAAA,2DA6iP/F;;;;iBA7iP+FA;AAAAA,IAAAA,yDA0iP3F;AA1iP2FA,IAAAA,0DA2iP3F;;;;;;AA3iP2FA,IAAAA,iEA8iP/F;;;;iBA9iP+FA;AAAAA,IAAAA,yDAgjP3F;;;;;;AAhjP2FA,IAAAA,wDAojP3F;;;;;;AApjP2FA,IAAAA,wDAqjP3F;;;;iBArjP2FA;AAAAA,IAAAA,yDAujPvF;;;;;;AAvjPuFA,IAAAA,wDAyjP3F;;;;;;AAzjP2FA,IAAAA,wDA0jP3F;;;;;;AA1jP2FA,IAAAA,wDA2jP3F;;;;;;AA3jP2FA,IAAAA,wDA4jP3F;;;;kBA5jP2FA;AAAAA,IAAAA,yDA8jPvF;;;;;;AA9jPuFA,IAAAA,sEAmjP/F;AAnjP+FA,IAAAA,yDAojP3F;AApjP2FA,IAAAA,yDAqjP3F;AArjP2FA,IAAAA,yDAyjP3F;AAzjP2FA,IAAAA,yDA0jP3F;AA1jP2FA,IAAAA,yDA2jP3F;AA3jP2FA,IAAAA,yDA4jP3F;AA5jP2FA,IAAAA,oEAikP/F;;;;iBAjkP+FA;AAAAA,IAAAA,wDAojPhE;AApjPgEA,IAAAA,yDAojPhE;AApjPgEA,IAAAA,wDAsjPtF;AAtjPsFA,IAAAA,yDAsjPtF;AAtjPsFA,IAAAA,wDAyjPvE;AAzjPuEA,IAAAA,yDAyjPvE;AAzjPuEA,IAAAA,wDA0jPhE;AA1jPgEA,IAAAA,yDA0jPhE;AA1jPgEA,IAAAA,wDA2jPxE;AA3jPwEA,IAAAA,yDA2jPxE;AA3jPwEA,IAAAA,wDA6jPtF;AA7jPsFA,IAAAA,yDA6jPtF;;;;;;eA7jPsFA;;AAAAA,IAAAA,6DAkkP/F;AAlkP+FA,IAAAA,yDAukP3F;AAvkP2FA,MAAAA,4DAukP3F;AAAA,oBAvkP2FA,4DAukP3F;AAAA,aAAW,+BAAuB,KAAvB,CAAX;AAAA;AAvkP2FA,IAAAA,2DAwkP/F;;;;iBAxkP+FA;AAAAA,IAAAA,yDAqkP3F;AArkP2FA,IAAAA,0DAskP3F;;;;;;eAtkP2FA;;AAAAA,IAAAA,6DAykP/F;AAzkP+FA,IAAAA,yDAykP9C;AAzkP8CA,MAAAA,4DAykP9C;AAAA,oBAzkP8CA,4DAykP9C;AAAA,aAAU,uBAAV;AAAA;AAzkP8CA,IAAAA,2DAykPnB;;;;;;;;;;;;;;AAzkPmBA,IAAAA,sEAmiQ/F;AAniQ+FA,IAAAA,6DAoiQ3F;AApiQ2FA,IAAAA,qDA0iQvF;AA1iQuFA,IAAAA,2DA2iQ3F;AA3iQ2FA,IAAAA,oEA4iQ/F;;;;iBA5iQ+FA;AAAAA,IAAAA,wDAsiQvF;AAtiQuFA,IAAAA,yDAsiQvF,YAtiQuFA,8DAsiQvF;AAtiQuFA,IAAAA,wDA0iQvF;AA1iQuFA,IAAAA,iEA0iQvF;;;;;;;;;;;;;;;;;;;;cA1iQuFA;;AAAAA,IAAAA,6DA6iQ/F;AA7iQ+FA,IAAAA,yDA+jQvF;AA/jQuFA,MAAAA,4DA+jQvF;AAAA,mBA/jQuFA,4DA+jQvF;AAAA,aAAmB,8BAAnB;AAAA;AA/jQuFA,MAAAA,4DA+jQvF;AAAA,mBA/jQuFA,4DA+jQvF;AAAA,aACU,qBADV;AAAA;AA/jQuFA,IAAAA,2DAikQ3F;;;;;;iBAjkQ2FA;AAAAA,IAAAA,yDA+iQ3F,YA/iQ2FA,8DA+iQ3F;AA/iQ2FA,IAAAA,wDAqjQvF;AArjQuFA,IAAAA,yDAqjQvF,gCArjQuFA,8DAqjQvF;;;;;;AArjQuFA,IAAAA,6DAmkQ/F;AAnkQ+FA,IAAAA,qDAwkQ3E;AAxkQ2EA,IAAAA,2DAwkQrE;;;;AAxkQqEA,IAAAA,yDAqkQ3F,YArkQ2FA,8DAqkQ3F;;;;;;;;AArkQ2FA,IAAAA,wDA2pQ/F;;;;AA3pQ+FA,IAAAA,0DA2pQ1F;;;;;;AA3pQ0FA,IAAAA,wDA4pQ/F;;;;AA5pQ+FA,IAAAA,0DA4pQ1F;;;;;;AA5pQ0FA,IAAAA,wDA6pQ/F;;;;;AA7pQ+FA,IAAAA,0DA6pQhC;;;;;;;;cA7pQgCA;;AAAAA,IAAAA,6DA4lS/F;AA5lS+FA,IAAAA,yDAkmSnE;AAlmSmEA,MAAAA,4DAkmSnE;AAAA,mBAlmSmEA,4DAkmSnE;AAAA,aAAe,0BAAf;AAAA;AAlmSmEA,IAAAA,2DAsmS/F;;;;iBAtmS+FA;AAAAA,IAAAA,yDA+lS3F;;;;;;AA/lS2FA,IAAAA,wDAumS/F;;;;iBAvmS+FA;AAAAA,IAAAA,yDAymS3F;;;;;;cAzmS2FA;;AAAAA,IAAAA,6DAi+S/F;AAj+S+FA,IAAAA,yDAw+S3F;AAx+S2FA,MAAAA,4DAw+S3F;AAAA,mBAx+S2FA,4DAw+S3F;AAAA,aAAe,0BAAf;AAAA;AAx+S2FA,IAAAA,2DA4+S/F;;;;iBA5+S+FA;AAAAA,IAAAA,yDAo+S3F;;;;;;AAp+S2FA,IAAAA,wDA6+S/F;;;;iBA7+S+FA;AAAAA,IAAAA,yDA++S3F;;;;;;cA/+S2FA;;AAAAA,IAAAA,6DA85T/F;AA95T+FA,IAAAA,yDAq6T3F;AAr6T2FA,MAAAA,4DAq6T3F;AAAA,mBAr6T2FA,4DAq6T3F;AAAA,aAAe,0BAAf;AAAA;AAr6T2FA,IAAAA,2DAy6T/F;;;;iBAz6T+FA;AAAAA,IAAAA,yDAi6T3F;;;;;;AAj6T2FA,IAAAA,wDA06T/F;;;;iBA16T+FA;AAAAA,IAAAA,yDA46T3F;;;;;;cA56T2FA;;AAAAA,IAAAA,6DA6rU3F;AA7rU2FA,IAAAA,yDAssUnF;AAAA,wBAtsUmFA,4DAssUnF;AAAA;;AAAA,gBAtsUmFA,0DAssUnF;;AAAA,mBAtsUmFA,4DAssUnF;AAAA,aAAU,mCAAV;AAAA;AAtsUmFA,MAAAA,4DAssUnF;AAAA,mBAtsUmFA,4DAssUnF;AAAA,aACqB,yBADrB;AAAA;AAtsUmFA,IAAAA,2DA8rUvF;AA9rUuFA,IAAAA,6DAysUvF;AAzsUuFA,IAAAA,qDAysUzB;AAzsUyBA,IAAAA,2DAysUZ;;;;;iBAzsUYA;AAAAA,IAAAA,wDAgsUnF;AAhsUmFA,IAAAA,yDAgsUnF;AAhsUmFA,IAAAA,0DAqsUnF;AArsUmFA,IAAAA,wDAysU1D;AAzsU0DA,IAAAA,0DAysU1D;AAzsU0DA,IAAAA,wDAysUzB;AAzsUyBA,IAAAA,gEAysUzB;;;;;;;;;AAzsUyBA,IAAAA,sEA66UnF;AA76UmFA,IAAAA,iEA86U/E;AA96U+EA,IAAAA,oEAq7UnF;;;;iBAr7UmFA;AAAAA,IAAAA,wDAg7U3E;AAh7U2EA,IAAAA,yDAg7U3E;;;;;;;;AAh7U2EA,IAAAA,yDAu7U/E;;;;iBAv7U+EA;AAAAA,IAAAA,yDAy7U3E;;;;;;AAz7U2EA,IAAAA,sEAs7UnF;AAt7UmFA,IAAAA,yDAu7U/E;AAv7U+EA,IAAAA,oEA67UnF;;;;iBA77UmFA;AAAAA,IAAAA,wDAw7U1E;AAx7U0EA,IAAAA,yDAw7U1E;;;;;;;;;cAx7U0EA;;AAAAA,IAAAA,6DA6kV3F;AA7kV2FA,IAAAA,yDAglVvF;AAhlVuFA,MAAAA,4DAglVvF;AAAA,mBAhlVuFA,4DAglVvF;AAAA,aAAS,cAAT;AAAA;AAhlVuFA,MAAAA,4DAglVvF;AAAA,mBAhlVuFA,4DAglVvF;AAAA,aACkB,cADlB;AAAA;AAAA,aAEiB,iCAFjB;AAAA;AAhlVuFA,IAAAA,2DAolV3F;;;;iBAplV2FA;AAAAA,IAAAA,yDA8kVvF;;;;;;;;;;;;;AA9kVuFA,IAAAA,wDAy1V5F;;;;iBAz1V4FA;AAAAA,IAAAA,yDAy1V1D;;;;;;AAz1V0DA,IAAAA,6DA61V/F;AA71V+FA,IAAAA,iEA81V3F;AA91V2FA,IAAAA,wDAg2V/F;AAh2V+FA,IAAAA,2DA61V/F;;;;iBA71V+FA;AAAAA,IAAAA,yDA61VlE;AA71VkEA,IAAAA,wDA81V7E;AA91V6EA,IAAAA,yDA81V7E;;;;;;cA91V6EA;;AAAAA,IAAAA,6DA6uWvF;AA7uWuFA,IAAAA,yDA+uWnF;AA/uWmFA,MAAAA,4DA+uWnF;AAAA,mBA/uWmFA,4DA+uWnF;AAAA,aAAe,uCAAf;AAAA;AA/uWmFA,IAAAA,2DAivWvF;;;;iBAjvWuFA;AAAAA,IAAAA,yDAgvWnF;;;;;;cAhvWmFA;;AAAAA,IAAAA,6DAkvWvF;AAlvWuFA,IAAAA,yDAovWnF;AApvWmFA,MAAAA,4DAovWnF;AAAA,mBApvWmFA,4DAovWnF;AAAA,aAAe,qBAAc,IAAd,CAAf;AAAA;AApvWmFA,IAAAA,2DAsvWvF;;;;iBAtvWuFA;AAAAA,IAAAA,yDAqvWnF;;;;;;AArvWmFA,IAAAA,yDA6uWvF;AA7uWuFA,IAAAA,yDAkvWvF;;;;iBAlvWuFA;AAAAA,IAAAA,yDA8uWlF;AA9uWkFA,IAAAA,wDAmvWlF;AAnvWkFA,IAAAA,yDAmvWlF;;;;;;;;AAnvWkFA,IAAAA,6DAs7W3F;AAt7W2FA,IAAAA,wDAu7WvF;AAv7WuFA,IAAAA,6DAu7WqE;AAv7WrEA,IAAAA,qDAu7WoG;AAv7WpGA,IAAAA,2DAu7W6H;;;;;;iBAv7W7HA;AAAAA,IAAAA,wDAu7WQ;AAv7WRA,IAAAA,yDAu7WQ;AAv7WRA,IAAAA,0DAu7WlB;AAv7WkBA,IAAAA,wDAu7WoG;AAv7WpGA,IAAAA,gEAu7WoG;;;;;;cAv7WpGA;;AAAAA,IAAAA,6DA07W/F;AA17W+FA,IAAAA,yDA27W2B;AA37W3BA,MAAAA,4DA27W2B;AAAA,mBA37W3BA,4DA27W2B;AAAA,aAAS,sBAAT;AAAA;AA37W3BA,IAAAA,qDA27WqD;AA37WrDA,IAAAA,2DA27WoE;AA37WpEA,IAAAA,6DA47W3F;AA57W2FA,IAAAA,yDA47WxD;AA57WwDA,MAAAA,4DA47WxD;AAAA,mBA57WwDA,4DA47WxD;AAAA,aAAe,oBAAf;AAAA;AA57WwDA,MAAAA,4DA47WxD;AAAA,mBA57WwDA,4DA47WxD;AAAA,aAA0I,qBAA1I;AAAA;AA57WwDA,IAAAA,qDA47WkG;AA57WlGA,IAAAA,2DA47WiH;;;;iBA57WjHA;AAAAA,IAAAA,yDA07W1F;AA17W0FA,IAAAA,wDA27WqD;AA37WrDA,IAAAA,gEA27WqD;AA37WrDA,IAAAA,wDA47WkG;AA57WlGA,IAAAA,gEA47WkG;;;;;;cA57WlGA;;AAAAA,IAAAA,6DAmlXvF;AAnlXuFA,IAAAA,yDA6lXnF;AA7lXmFA,MAAAA,4DA6lXnF;AAAA,mBA7lXmFA,4DA6lXnF;AAAA,aAAS,sBAAT;AAAA;AA7lXmFA,IAAAA,2DA8lXvF;;;;iBA9lXuFA;AAAAA,IAAAA,yDAolXnF;;;;;;cAplXmFA;;AAAAA,IAAAA,6DA2tXvF;AA3tXuFA,IAAAA,yDAkuXnF;AAAA,aAAqB,iCAArB;AAAA;AAluXmFA,MAAAA,4DAkuXnF;AAAA,mBAluXmFA,4DAkuXnF;AAAA,aACS,cADT;AAAA;AAluXmFA,IAAAA,2DAouXvF;;;;iBApuXuFA;AAAAA,IAAAA,yDA4tXnF;;;;;;;;;;;;;AA5tXmFA,IAAAA,iEAgpY3F;;;;iBAhpY2FA;;cAAAA;;AAAAA,IAAAA,yDAipYvF,yHAjpYuFA,8DAipYvF;;;;;;AAjpYuFA,IAAAA,wDAypYvF;;;;eAzpYuFA;;iBAAAA;AAAAA,IAAAA,yDAypYjD;;;;;;AAzpYiDA,IAAAA,wDA2pYvF;;;;eA3pYuFA;;iBAAAA;AAAAA,IAAAA,yDA2pYjB;;;;;;AA3pYiBA,IAAAA,wDA6pYvF;;;;eA7pYuFA;;iBAAAA;AAAAA,IAAAA,yDA6pYd;;;;;;AA7pYcA,IAAAA,wDA+pYvF;;;;eA/pYuFA;;iBAAAA;AAAAA,IAAAA,yDAkqYnF;;;;;;AAlqYmFA,IAAAA,wDAwqYvF;;;;eAxqYuFA;;iBAAAA;AAAAA,IAAAA,yDA2qYnF;;;;;;AA3qYmFA,IAAAA,wDA+qYvF;;;;eA/qYuFA;;kBAAAA;AAAAA,IAAAA,yDAkrYnF;;;;;;eAlrYmFA;;AAAAA,IAAAA,6DAspY3F;AAtpY2FA,IAAAA,yDAupYvF;AAvpYuFA,MAAAA,4DAupYvF;AAAA,oBAvpYuFA,4DAupYvF;AAAA,aAAkB,eAAlB;AAAA;AAAA,aACiB,iCADjB;AAAA;AAvpYuFA,IAAAA,yDAypYvF;AAzpYuFA,IAAAA,yDA2pYvF;AA3pYuFA,IAAAA,yDA6pYvF;AA7pYuFA,IAAAA,yDA+pYvF;AA/pYuFA,IAAAA,yDAwqYvF;AAxqYuFA,IAAAA,yDA+qYvF;AA/qYuFA,IAAAA,2DAsrY3F;;;;iBAtrY2FA;AAAAA,IAAAA,wDAypYX;AAzpYWA,IAAAA,yDAypYX;AAzpYWA,IAAAA,wDA2pYhD;AA3pYgDA,IAAAA,yDA2pYhD;AA3pYgDA,IAAAA,wDA6pY9C;AA7pY8CA,IAAAA,yDA6pY9C;AA7pY8CA,IAAAA,wDAiqYlF;AAjqYkFA,IAAAA,yDAiqYlF;AAjqYkFA,IAAAA,wDA0qYlF;AA1qYkFA,IAAAA,yDA0qYlF;AA1qYkFA,IAAAA,wDAirYlF;AAjrYkFA,IAAAA,yDAirYlF;;;;;;;;;;;;;;;;;;;;cAjrYkFA;;AAAAA,IAAAA,6DA01Y/F;AA11Y+FA,IAAAA,yDAg2Y3F;AAh2Y2FA,MAAAA,4DAg2Y3F;AAAA,mBAh2Y2FA,4DAg2Y3F;AAAA,aAAe,uBAAf;AAAA;AAh2Y2FA,MAAAA,4DAg2Y3F;AAAA,mBAh2Y2FA,4DAg2Y3F;AAAA,aAOW,8BAPX;AAAA;AAh2Y2FA,IAAAA,2DAw2Y/F;;;;iBAx2Y+FA;AAAAA,IAAAA,yDA81Y3F,2FA91Y2FA,8DA81Y3F;;;;;;cA91Y2FA;;AAAAA,IAAAA,6DAy2Y/F;AAz2Y+FA,IAAAA,yDA82Y3F;AA92Y2FA,MAAAA,4DA82Y3F;AAAA,mBA92Y2FA,4DA82Y3F;AAAA,aAAS,mBAAT;AAAA;AA92Y2FA,MAAAA,4DA82Y3F;AAAA,mBA92Y2FA,4DA82Y3F;AAAA,aACW,2BADX;AAAA;AA92Y2FA,IAAAA,wDAg3YvF;AAh3YuFA,IAAAA,2DAi3Y/F;;;;iBAj3Y+FA;AAAAA,IAAAA,yDA62Y3F;;;;;;;;AA72Y2FA,IAAAA,sEAq7ZvF;AAr7ZuFA,IAAAA,iEAs7ZnF;AAt7ZmFA,IAAAA,oEAu7ZvF;;;;iBAv7ZuFA;AAAAA,IAAAA,wDAs7ZjD;AAt7ZiDA,IAAAA,yDAs7ZjD;;;;;;;;AAt7ZiDA,IAAAA,yDAy7ZnF;;;;iBAz7ZmFA;AAAAA,IAAAA,yDA27Z/E;;;;;;AA37Z+EA,IAAAA,sEAw7ZvF;AAx7ZuFA,IAAAA,yDAy7ZnF;AAz7ZmFA,IAAAA,oEA87ZvF;;;;iBA97ZuFA;AAAAA,IAAAA,wDA07Z9E;AA17Z8EA,IAAAA,yDA07Z9E;;;;;;AA17Z8EA,IAAAA,sEAm7Z/F;AAn7Z+FA,IAAAA,yDAq7ZvF;AAr7ZuFA,IAAAA,yDAw7ZvF;AAx7ZuFA,IAAAA,oEA+7Z3F;;;;iBA/7Z2FA;AAAAA,IAAAA,wDAo7Z7E;AAp7Z6EA,IAAAA,yDAo7Z7E;AAp7Z6EA,IAAAA,wDAq7ZxE;AAr7ZwEA,IAAAA,yDAq7ZxE;AAr7ZwEA,IAAAA,wDAw7ZxE;AAx7ZwEA,IAAAA,yDAw7ZxE;;;;;;;;AAx7ZwEA,IAAAA,wDAmqa/F;;;;AAnqa+FA,IAAAA,0DAoqa3F;;;;;;AApqa2FA,IAAAA,wDAwqa/F;;;;AAxqa+FA,IAAAA,0DAyqa3F;;;;;;AAzqa2FA,IAAAA,wDA6qa/F;;;;;;iBA7qa+FA;AAAAA,IAAAA,0DA8qa3F;AA9qa2FA,IAAAA,yDA+qa3F;AA/qa2FA,IAAAA,0DAira3F;;;;;;;;AAjra2FA,IAAAA,wDA0gc3F;;;;;;AA1gc2FA,IAAAA,wDA+gc3F;;;;wBA/gc2FA;AAAAA,IAAAA,yDAmhcnF;;;;;;AAnhcmFA,IAAAA,wDAyjc/E;;;;oBAzjc+EA;kBAAAA;AAAAA,IAAAA,yDA2jc3E;;;;;;AA3jc2EA,IAAAA,wDA+jc/E;;;;oBA/jc+EA;kBAAAA;AAAAA,IAAAA,yDAgkc3E;;;;;;;;AAhkc2EA,IAAAA,sEAilc/E;AAjlc+EA,IAAAA,qDAilc/B;AAjlc+BA,IAAAA,oEAilcR;;;;oBAjlcQA;AAAAA,IAAAA,wDAilc/B;AAjlc+BA,IAAAA,gEAilc/B;;;;;;;;;;;;;;;AAjlc+BA,IAAAA,sEAwjcnF;AAxjcmFA,IAAAA,yDAyjc/E;AAzjc+EA,IAAAA,yDA+jc/E;AA/jc+EA,IAAAA,yDAykc/E;AAzkc+EA,IAAAA,yDAilc/E;AAjlc+EA,IAAAA,oEAklcnF;;;;oBAllcmFA;kBAAAA;AAAAA,IAAAA,wDA0jc1E;AA1jc0EA,IAAAA,yDA0jc1E;AA1jc0EA,IAAAA,wDA+jctD;AA/jcsDA,IAAAA,yDA+jctD;AA/jcsDA,IAAAA,wDA0kc3E;AA1kc2EA,IAAAA,yDA0kc3E,oBA1kc2EA,8DA0kc3E;AA1kc2EA,IAAAA,wDAilchE;AAjlcgEA,IAAAA,yDAilchE;;;;;;;;AAjlcgEA,IAAAA,sEA+lcvE;AA/lcuEA,IAAAA,6DAgmcnE;AAhmcmEA,IAAAA,qDAgmctC;AAhmcsCA,IAAAA,2DAgmcf;AAhmceA,IAAAA,oEAimcvE;;;;oBAjmcuEA;AAAAA,IAAAA,wDAgmctC;AAhmcsCA,IAAAA,gEAgmctC;;;;;;AAhmcsCA,IAAAA,6DAmmcvE;AAnmcuEA,IAAAA,qDAmmcU;AAnmcVA,IAAAA,2DAmmcyD;;;;oBAnmczDA;kBAAAA;AAAAA,IAAAA,wDAmmcU;AAnmcVA,IAAAA,gEAmmcU;;;;;;AAnmcVA,IAAAA,wDA0mc3E;;;;oBA1mc2EA;kBAAAA;AAAAA,IAAAA,yDA4mcvE;;;;;;AA5mcuEA,IAAAA,wDAgnc3E;;;;oBAhnc2EA;kBAAAA;AAAAA,IAAAA,yDAincvE;;;;;;eAjncuEA;;AAAAA,IAAAA,sEAolcnF;AAplcmFA,IAAAA,6DAqlc/E;AArlc+EA,IAAAA,yDAslchD;AAtlcgDA,MAAAA,4DAslchD;;AAAA,iBAtlcgDA,0DAslchD;;AAAA,sBAtlcgDA,4DAslchD;AAAA,oBAtlcgDA,4DAslchD;AAAA,aAAS,oBAAY,qCAAZ,eAAT;AAAA;AAtlcgDA,IAAAA,yDAulcvE;AAvlcuEA,IAAAA,yDA+lcvE;AA/lcuEA,IAAAA,wDAkmcvE;AAlmcuEA,IAAAA,yDAmmcvE;AAnmcuEA,IAAAA,2DAomc3E;AApmc2EA,IAAAA,wDAqmc3E;AArmc2EA,IAAAA,yDA0mc3E;AA1mc2EA,IAAAA,yDAgnc3E;AAhnc2EA,IAAAA,2DA0nc/E;AA1nc+EA,IAAAA,oEA2ncnF;;;;oBA3ncmFA;kBAAAA;AAAAA,IAAAA,wDAwlcnE;AAxlcmEA,IAAAA,yDAwlcnE,oBAxlcmEA,8DAwlcnE;AAxlcmEA,IAAAA,wDA+lcxD;AA/lcwDA,IAAAA,yDA+lcxD;AA/lcwDA,IAAAA,wDAkmcnB;AAlmcmBA,IAAAA,yDAkmcnB;AAlmcmBA,IAAAA,0DAkmcrD;AAlmcqDA,IAAAA,wDAmmchE;AAnmcgEA,IAAAA,yDAmmchE;AAnmcgEA,IAAAA,wDAwmcvE;AAxmcuEA,IAAAA,yDAwmcvE,yEAxmcuEA,6DAwmcvE;AAxmcuEA,IAAAA,wDA2mctE;AA3mcsEA,IAAAA,yDA2mctE;AA3mcsEA,IAAAA,wDAgnclD;AAhnckDA,IAAAA,yDAgnclD;;;;;;AAhnckDA,IAAAA,sEA6ncnF;AA7ncmFA,IAAAA,wDA8nc/E;AA9nc+EA,IAAAA,oEAoocnF;;;;kBApocmFA;AAAAA,IAAAA,wDAgoc3E;AAhoc2EA,IAAAA,0DAgoc3E;;;;;;AAhoc2EA,IAAAA,wDAqocnF;;;;oBArocmFA;kBAAAA;AAAAA,IAAAA,yDAyoc/E;;;;;;;;;;;;;;;;eAzoc+EA;;AAAAA,IAAAA,6DAyhcvF;AAzhcuFA,IAAAA,yDAmicnF;AAnicmFA,MAAAA,4DAmicnF;AAAA,sBAnicmFA,4DAmicnF;AAAA,oBAnicmFA,4DAmicnF;AAAA,aAAW,wBAAgB,qCAAhB,SAAX;AAAA;AAnicmFA,IAAAA,yDAwjcnF;AAxjcmFA,IAAAA,yDAolcnF;AAplcmFA,IAAAA,yDA6ncnF;AA7ncmFA,IAAAA,yDAqocnF;AArocmFA,IAAAA,2DA4ocvF;;;;kBA5ocuFA;;;;wBAAAA;kBAAAA;AAAAA,IAAAA,0DAgjcnF;AAhjcmFA,IAAAA,yDA2hcnF,mUA3hcmFA,8DA2hcnF;AA3hcmFA,IAAAA,0DAkicnF;AAlicmFA,IAAAA,wDAwjcpE;AAxjcoEA,IAAAA,yDAwjcpE;AAxjcoEA,IAAAA,wDAolcpE;AAplcoEA,IAAAA,yDAolcpE;AAplcoEA,IAAAA,wDA6ncpE;AA7ncoEA,IAAAA,yDA6ncpE;AA7ncoEA,IAAAA,wDAwoc9E;AAxoc8EA,IAAAA,yDAwoc9E;;;;;;AAxoc8EA,IAAAA,wDAsqc/E;;;;oBAtqc+EA;kBAAAA;AAAAA,IAAAA,yDAuqc3E;;;;;;;;AAvqc2EA,IAAAA,sEAorc/E;AAprc+EA,IAAAA,qDAorc/B;AAprc+BA,IAAAA,oEAorcR;;;;oBAprcQA;AAAAA,IAAAA,wDAorc/B;AAprc+BA,IAAAA,gEAorc/B;;;;;;AAprc+BA,IAAAA,wDAqrc/E;;;;oBArrc+EA;kBAAAA;AAAAA,IAAAA,yDAyrc3E;;;;;;;;;;;;;;;AAzrc2EA,IAAAA,6DA6ocvF;AA7ocuFA,IAAAA,yDAsqc/E;AAtqc+EA,IAAAA,yDA4qc/E;AA5qc+EA,IAAAA,yDAorc/E;AAprc+EA,IAAAA,yDAqrc/E;AArrc+EA,IAAAA,2DA4rcvF;;;;kBA5rcuFA;;;;wBAAAA;kBAAAA;AAAAA,IAAAA,0DA+pcnF;AA/pcmFA,IAAAA,yDA+ocnF,mUA/ocmFA,8DA+ocnF;AA/ocmFA,IAAAA,0DAoqcnF;AApqcmFA,IAAAA,wDAsqctD;AAtqcsDA,IAAAA,yDAsqctD;AAtqcsDA,IAAAA,wDA6qc3E;AA7qc2EA,IAAAA,yDA6qc3E,oBA7qc2EA,8DA6qc3E;AA7qc2EA,IAAAA,wDAorchE;AAprcgEA,IAAAA,yDAorchE;AAprcgEA,IAAAA,wDAwrc1E;AAxrc0EA,IAAAA,yDAwrc1E;;;;;;AAxrc0EA,IAAAA,sEAwhc3F;AAxhc2FA,IAAAA,yDAyhcvF;AAzhcuFA,IAAAA,yDA6ocvF;AA7ocuFA,IAAAA,oEA6rc3F;;;;;iBA7rc2FA;AAAAA,IAAAA,wDAyhclF;AAzhckFA,IAAAA,yDAyhclF;AAzhckFA,IAAAA,wDA6oclF;AA7ockFA,IAAAA,yDA6oclF;;;;;;AA7ockFA,IAAAA,6DAogc/F;AApgc+FA,IAAAA,yDA0gc3F;AA1gc2FA,IAAAA,yDA+gc3F;AA/gc2FA,IAAAA,yDAwhc3F;AAxhc2FA,IAAAA,2DA8rc/F;;;;;iBA9rc+FA;AAAAA,IAAAA,yDAsgcvF;AAtgcuFA,IAAAA,wDA6gczE;AA7gcyEA,IAAAA,yDA6gczE;AA7gcyEA,IAAAA,wDAihctF;AAjhcsFA,IAAAA,yDAihctF;AAjhcsFA,IAAAA,wDAwhc1D;AAxhc0DA,IAAAA,yDAwhc1D;;;;;;AAxhc0DA,IAAAA,wDA+rc/F;;;;iBA/rc+FA;AAAAA,IAAAA,yDAiscvF;;;;;;;;;;AAjscuFA,IAAAA,yDA8genF;;;;iBA9gemFA;AAAAA,IAAAA,yDA+ge/E;;;;;;AA/ge+EA,IAAAA,sEAmhe/E;AAnhe+EA,IAAAA,qDAohe3E;AAphe2EA,IAAAA;AAAAA,IAAAA,oEAqhe/E;;;;;kBArhe+EA;AAAAA,IAAAA,wDAohe3E;AAphe2EA,IAAAA,iEAohe3E,MAphe2EA,0DAohe3E;;;;;;AAphe2EA,IAAAA,sEAkhenF;AAlhemFA,IAAAA,yDAmhe/E;AAnhe+EA,IAAAA,oEAshenF;;;;iBAthemFA;AAAAA,IAAAA,wDAmhezC;AAnheyCA,IAAAA,yDAmhezC;;;;;;AAnheyCA,IAAAA,sEAuhenF;AAvhemFA,IAAAA,qDAuhe/C;AAvhe+CA,IAAAA;AAAAA,IAAAA,oEAuheK;;;;iBAvheLA;AAAAA,IAAAA,wDAuhe/C;AAvhe+CA,IAAAA,gEAuhe/C,CAvhe+CA,0DAuhe/C;;;;;;AAvhe+CA,IAAAA,sEAwhenF;AAxhemFA,IAAAA,wDAyhe/E;AAzhe+EA,IAAAA,oEA8henF;;;;iBA9hemFA;AAAAA,IAAAA,wDA2he3E;AA3he2EA,IAAAA,yDA2he3E;AA3he2EA,IAAAA,0DA4he3E;;;;;;AA5he2EA,IAAAA,sEA6gevF;AA7geuFA,IAAAA,yDA8genF;AA9gemFA,IAAAA,yDAkhenF;AAlhemFA,IAAAA,yDAuhenF;AAvhemFA,IAAAA,yDAwhenF;AAxhemFA,IAAAA,oEA+hevF;;;;iBA/heuFA;AAAAA,IAAAA,wDA8gerE;AA9geqEA,IAAAA,yDA8gerE;AA9geqEA,IAAAA,wDAkhepE;AAlheoEA,IAAAA,yDAkhepE;AAlheoEA,IAAAA,wDAuhepE;AAvheoEA,IAAAA,yDAuhepE;AAvheoEA,IAAAA,wDAwhepE;AAxheoEA,IAAAA,yDAwhepE;;;;;;;;;;;;;;AAxheoEA,IAAAA,yDAiienF;;;;kBAjiemFA;AAAAA,IAAAA,yDAmie/E,yEAnie+EA,8DAmie/E;;;;;;AAnie+EA,IAAAA,wDAsienF;;;;;;AAtiemFA,IAAAA,yDAiienF;AAjiemFA,IAAAA,yDAsienF;;;;iBAtiemFA;AAAAA,IAAAA,yDAkie9E;AAlie8EA,IAAAA,wDAsie7E;AAtie6EA,IAAAA,yDAsie7E;;;;;;AAtie6EA,IAAAA,sEA4ge3F;AA5ge2FA,IAAAA,yDA6gevF;AA7geuFA,IAAAA,yDAgievF,uFAhieuFA,qEAgievF;AAhieuFA,IAAAA,oEAwie3F;;;;cAxie2FA;;iBAAAA;AAAAA,IAAAA,wDA6gexE;AA7gewEA,IAAAA,yDA6gexE;;;;;;;;AA7gewEA,IAAAA,yDA0ievF;;;;kBA1ieuFA;AAAAA,IAAAA,yDA4ienF;;;;;;AA5iemFA,IAAAA,wDAgjenF;;;;kBAhjemFA;AAAAA,IAAAA,yDAkje/E;;;;;;AAlje+EA,IAAAA,wDAujenF;;;;kBAvjemFA;AAAAA,IAAAA,yDAyje/E;;;;;;AAzje+EA,IAAAA,wDA8jenF;;;;kBA9jemFA;AAAAA,IAAAA,yDAkke/E;;;;;;AAlke+EA,IAAAA,wDAskenF;;;;kBAtkemFA;AAAAA,IAAAA,yDA0ke/E;;;;;;AA1ke+EA,IAAAA,sEA+ievF;AA/ieuFA,IAAAA,yDAgjenF;AAhjemFA,IAAAA,yDAujenF;AAvjemFA,IAAAA,yDA8jenF;AA9jemFA,IAAAA,yDAskenF;AAtkemFA,IAAAA,oEA6kevF;;;;kBA7keuFA;AAAAA,IAAAA,yDA+iezE;AA/ieyEA,IAAAA,wDAije9E;AAjje8EA,IAAAA,yDAije9E;AAjje8EA,IAAAA,wDAwje9E;AAxje8EA,IAAAA,yDAwje9E;AAxje8EA,IAAAA,wDA+je9E;AA/je8EA,IAAAA,yDA+je9E;;;;;;AA/je8EA,IAAAA,sEAyie3F;AAzie2FA,IAAAA,yDA0ievF;AA1ieuFA,IAAAA,yDA+ievF;AA/ieuFA,IAAAA,oEA8ke3F;;;;iBA9ke2FA;AAAAA,IAAAA,wDA2ielF;AA3iekFA,IAAAA,yDA2ielF;AA3iekFA,IAAAA,wDA+ie7C;AA/ie6CA,IAAAA,yDA+ie7C;;;;;;;;AA/ie6CA,IAAAA,wDA6ve3F;;;;;;AA7ve2FA,IAAAA,sEA4ve/F;AA5ve+FA,IAAAA,yDA6ve3F;AA7ve2FA,IAAAA,oEAgwe/F;;;;iBAhwe+FA;AAAAA,IAAAA,wDA+vezE;AA/veyEA,IAAAA,yDA+vezE;;;;;;AA/veyEA,IAAAA,sEAmxenF;AAnxemFA,IAAAA,qDAoxenF;AApxemFA,IAAAA;AAAAA,IAAAA,oEAqxenF;;;;iBArxemFA;AAAAA,IAAAA,wDAoxenF;AApxemFA,IAAAA,iEAoxenF,4CApxemFA,0DAoxenF;;;;;;;;;;;;;;;;;;;;;;;;;;;;cApxemFA;;AAAAA,IAAAA,sEA4wevF;AA5weuFA,IAAAA,6DA6wenF;AA7wemFA,IAAAA,yDA6wezD;AA7weyDA,MAAAA,4DA6wezD;AAAA,mBA7weyDA,4DA6wezD;AAAA,aAAS,+BAAT;AAAA;AA7weyDA,IAAAA,2DAkxenF;AAlxemFA,IAAAA,yDAmxenF;AAnxemFA,IAAAA,yDAsxenF;AAtxemFA,IAAAA,oEAkyevF;;;;iBAlyeuFA;AAAAA,IAAAA,wDA+we/E;AA/we+EA,IAAAA,yDA+we/E,YA/we+EA,8DA+we/E;AA/we+EA,IAAAA,0DAgxe/E;AAhxe+EA,IAAAA,wDAmxepE;AAnxeoEA,IAAAA,yDAmxepE;AAnxeoEA,IAAAA,wDAuxe/E;AAvxe+EA,IAAAA,yDAuxe/E,oBAvxe+EA,8DAuxe/E;;;;;;AAvxe+EA,IAAAA,6DAiwe/F;AAjwe+FA,IAAAA,yDA4wevF;AA5weuFA,IAAAA,2DAmye3F;;;;iBAnye2FA;AAAAA,IAAAA,yDAswe3F;AAtwe2FA,IAAAA,0DAiwe3F;AAjwe2FA,IAAAA,wDA4wexE;AA5wewEA,IAAAA,yDA4wexE;;;;;;;;;;;;;;;;;;;AA5wewEA,IAAAA,yDAgzevF;;;;qBAhzeuFA;kBAAAA;AAAAA,IAAAA,yDAgze9B,yFAhze8BA,8DAgze9B;;;;;;AAhze8BA,IAAAA,6DAsye3F;AAtye2FA,IAAAA,yDAgzevF;AAhzeuFA,IAAAA,2DA0ze3F;;;;;;kBA1ze2FA;AAAAA,IAAAA,yDA0yevF;AA1yeuFA,IAAAA,wDAgzezE;AAhzeyEA,IAAAA,yDAgzezE;;;;;;AAhzeyEA,IAAAA,sEAqye/F;AArye+FA,IAAAA,yDAsye3F;AAtye2FA,IAAAA,oEA2ze/F;;;;iBA3ze+FA;AAAAA,IAAAA,wDAsyepE;AAtyeoEA,IAAAA,yDAsyepE;;;;;;;;AAtyeoEA,IAAAA,wDAgvfvF;;;;;;AAhvfuFA,IAAAA,sEA+uf3F;AA/uf2FA,IAAAA,yDAgvfvF;AAhvfuFA,IAAAA,oEAivf3F;;;;iBAjvf2FA;AAAAA,IAAAA,wDAgvfhD;AAhvfgDA,IAAAA,yDAgvfhD;;;;;;AAhvfgDA,IAAAA,wDAkvf3F;;;;iBAlvf2FA;AAAAA,IAAAA,yDAqvfnF;;;;;;AArvfmFA,IAAAA,wDA0vf3F;;;;;;iBA1vf2FA;AAAAA,IAAAA,0DAmwfvF;AAnwfuFA,IAAAA,0DAiwfvF;AAjwfuFA,IAAAA,yDA4vfnF;AA5vfmFA,IAAAA,0DAqwfvF;;;;;;AArwfuFA,IAAAA,sEAwufnG;AAxufmGA,IAAAA,6DAyuf/F;AAzuf+FA,IAAAA,yDA+uf3F;AA/uf2FA,IAAAA,yDAkvf3F;AAlvf2FA,IAAAA,yDA0vf3F;AA1vf2FA,IAAAA,2DA4wf/F;AA5wf+FA,IAAAA,oEA6wfnG;;;;iBA7wfmGA;AAAAA,IAAAA,wDA2ufvF;AA3ufuFA,IAAAA,yDA2ufvF;AA3ufuFA,IAAAA,wDA+uf5E;AA/uf4EA,IAAAA,yDA+uf5E;AA/uf4EA,IAAAA,wDAmvftF;AAnvfsFA,IAAAA,yDAmvftF;AAnvfsFA,IAAAA,wDA0vfpE;AA1vfoEA,IAAAA,yDA0vfpE;;;;;;;;;;;;;;AA1vfoEA,IAAAA,yDAgxf3F;;;;kBAhxf2FA;AAAAA,IAAAA,yDAkxfvF,oBAlxfuFA,8DAkxfvF;;;;;;AAlxfuFA,IAAAA,sEAsxf3F;AAtxf2FA,IAAAA,qDAuxfvF;AAvxfuFA,IAAAA,oEAwxf3F;;;;kBAxxf2FA;AAAAA,IAAAA,wDAuxfvF;AAvxfuFA,IAAAA,iEAuxfvF;;;;;;AAvxfuFA,IAAAA,6DA8wfnG;AA9wfmGA,IAAAA,yDAgxf3F;AAhxf2FA,IAAAA,yDAsxf3F;AAtxf2FA,IAAAA,2DAyxf/F;;;;iBAzxf+FA;AAAAA,IAAAA,wDA+wf3F;AA/wf2FA,IAAAA,0DA+wf3F;AA/wf2FA,IAAAA,wDAixftF;AAjxfsFA,IAAAA,yDAixftF;AAjxfsFA,IAAAA,wDAsxf5E;AAtxf4EA,IAAAA,yDAsxf5E;;;;;;AAtxf4EA,IAAAA,wDA6xf/F;;;;kBA7xf+FA;;;kBAAAA;AAAAA,IAAAA,yDA+xfvF;;;;;;AA/xfuFA,IAAAA,wDA+zfvF;;;;;;AA/zfuFA,IAAAA,sEA8zf3F;AA9zf2FA,IAAAA,yDA+zfvF;AA/zfuFA,IAAAA,oEAg0f3F;;;;kBAh0f2FA;AAAAA,IAAAA,wDA+zfhD;AA/zfgDA,IAAAA,yDA+zfhD;;;;;;eA/zfgDA;;AAAAA,IAAAA,6DA20fvF;AA30fuFA,IAAAA,yDAg1f5D;AAh1f4DA,MAAAA,4DAg1f5D;AAAA,qBAh1f4DA,4DAg1f5D;AAAA,oBAh1f4DA,4DAg1f5D;AAAA,aAAS,gDAAT;AAAA;AAh1f4DA,IAAAA,2DAg1fX;;;;mBAh1fWA;kBAAAA;AAAAA,IAAAA,yDA60fnF;AA70fmFA,IAAAA,0DA80fnF;;;;;;AA90fmFA,IAAAA,6DAi0f3F;AAj0f2FA,IAAAA,yDA20fvF;AA30fuFA,IAAAA,2DAi1f3F;;;;kBAj1f2FA;;;kBAAAA;AAAAA,IAAAA,yDAo0fnF;AAp0fmFA,IAAAA,wDA40flF;AA50fkFA,IAAAA,yDA40flF;;;;;;AA50fkFA,IAAAA,wDAk1f3F;;;;;;kBAl1f2FA;;;kBAAAA;AAAAA,IAAAA,0DAq2fnF;AAr2fmFA,IAAAA,yDAo1fnF;AAp1fmFA,IAAAA,0DAs1fnF;;;;;;;;;;;;;AAt1fmFA,IAAAA,6DA8yf/F;AA9yf+FA,IAAAA,yDA8zf3F;AA9zf2FA,IAAAA,yDAi0f3F;AAj0f2FA,IAAAA,yDAk1f3F;AAl1f2FA,IAAAA,2DA+2f/F;;;;kBA/2f+FA;;;kBAAAA;AAAAA,IAAAA,0DAuzf3F,4DAvzf2FA,8DAuzf3F;AAvzf2FA,IAAAA,yDAizfvF,0SAjzfuFA,8DAizfvF;AAjzfuFA,IAAAA,0DA4zf3F;AA5zf2FA,IAAAA,wDA8zf5E;AA9zf4EA,IAAAA,yDA8zf5E;AA9zf4EA,IAAAA,wDAk0ftF;AAl0fsFA,IAAAA,yDAk0ftF;AAl0fsFA,IAAAA,wDA62fpE;AA72foEA,IAAAA,yDA62fpE;;;;;;AA72foEA,IAAAA,wDA83f3F;;;;;;;;;;;;;;;;AA93f2FA,IAAAA,6DAg3f/F;AAh3f+FA,IAAAA,yDA83f3F;AA93f2FA,IAAAA,wDA+3f3F;AA/3f2FA,IAAAA,6DAg4f3F;AAh4f2FA,IAAAA,yDA24fvF;AA34fuFA,IAAAA,2DAm5f3F;;;;kBAn5f2FA;;;kBAAAA;AAAAA,IAAAA,0DAs3f3F;AAt3f2FA,IAAAA,yDAw3fvF;AAx3fuFA,IAAAA,wDA83fpD;AA93foDA,IAAAA,yDA83fpD;AA93foDA,IAAAA,wDAm4fnF;AAn4fmFA,IAAAA,yDAm4fnF;AAn4fmFA,IAAAA,0DAi4fvF;AAj4fuFA,IAAAA,wDA44fnF;AA54fmFA,IAAAA,yDA44fnF,oFA54fmFA,8DA44fnF;;;;;;AA54fmFA,IAAAA,wDAg6fvF;;;;;;AAh6fuFA,IAAAA,sEA+5f3F;AA/5f2FA,IAAAA,yDAg6fvF;AAh6fuFA,IAAAA,oEAi6f3F;;;;kBAj6f2FA;AAAAA,IAAAA,wDAg6fhD;AAh6fgDA,IAAAA,yDAg6fhD;;;;;;AAh6fgDA,IAAAA,wDAk6f3F;;;;uBAl6f2FA;kBAAAA;AAAAA,IAAAA,yDAq6fnF;;;;;;;;;;;;;;;;;;;AAr6fmFA,IAAAA,6DA06f3F;AA16f2FA,IAAAA,yDA+6fvF;AA/6fuFA,IAAAA,2DAy7f5F;;;;;kBAz7f4FA;;;kBAAAA;;AAAAA,IAAAA,yDA26fnF;AA36fmFA,IAAAA,0DA66fvF;AA76fuFA,IAAAA,wDAg7fnF;AAh7fmFA,IAAAA,yDAg7fnF,oBAh7fmFA,8DAg7fnF;;;;;;AAh7fmFA,IAAAA,6DAq5f/F;AAr5f+FA,IAAAA,yDA+5f3F;AA/5f2FA,IAAAA,yDAk6f3F;AAl6f2FA,IAAAA,yDA06f3F;AA16f2FA,IAAAA,2DA07f/F;;;;uBA17f+FA;kBAAAA;AAAAA,IAAAA,yDA25fvF;AA35fuFA,IAAAA,wDA+5f5E;AA/5f4EA,IAAAA,yDA+5f5E;AA/5f4EA,IAAAA,wDAm6ftF;AAn6fsFA,IAAAA,yDAm6ftF;AAn6fsFA,IAAAA,wDA86fpE;AA96foEA,IAAAA,yDA86fpE;;;;;;AA96foEA,IAAAA,sEA4xfnG;AA5xfmGA,IAAAA,yDA6xf/F;AA7xf+FA,IAAAA,yDA8yf/F;AA9yf+FA,IAAAA,yDAg3f/F;AAh3f+FA,IAAAA,yDAq5f/F;AAr5f+FA,IAAAA,oEA27fnG;;;;;iBA37fmGA;AAAAA,IAAAA,wDA6xf1F;AA7xf0FA,IAAAA,yDA6xf1F;AA7xf0FA,IAAAA,wDA+yf1F;AA/yf0FA,IAAAA,yDA+yf1F;AA/yf0FA,IAAAA,wDAg3f1F;AAh3f0FA,IAAAA,yDAg3f1F;AAh3f0FA,IAAAA,wDAq5f1F;AAr5f0FA,IAAAA,yDAq5f1F;;;;;;eAr5f0FA;;AAAAA,IAAAA,6DA47fnG;AA57fmGA,IAAAA,yDA47f5D;AA57f4DA,MAAAA,4DA47f5D;AAAA,oBA57f4DA,4DA47f5D;AAAA,aAAU,uBAAV;AAAA;AA57f4DA,IAAAA,2DA47fjC;;;;;;;;;;;;;;;;;;;;AA57fiCA,IAAAA,6DA64hBnG;AA74hBmGA,IAAAA,wDAy5hBvF;AAz5hBuFA,IAAAA,2DAk7hB3F;AAl7hB2FA,IAAAA,wDAm7hB3F;AAn7hB2FA,IAAAA,2DAo7hB/F;AAp7hB+FA,IAAAA,6DAq7hB/F;AAr7hB+FA,IAAAA,wDAs7hB3F;AAt7hB2FA,IAAAA,2DAu7hB/F;;;;iBAv7hB+FA;AAAAA,IAAAA,0DA84hB9E;AA94hB8EA,IAAAA,yDA+4hB/F,8BA/4hB+FA,8DA+4hB/F;AA/4hB+FA,IAAAA,wDAw5hBd;AAx5hBcA,IAAAA,0DAw5hBd;AAx5hBcA,IAAAA,yDAw5hBpF;AAx5hBoFA,IAAAA,wDA25hBnF;AA35hBmFA,IAAAA,yDA25hBnF;AA35hBmFA,IAAAA,wDAi6hBnF;AAj6hBmFA,IAAAA,yDAi6hBnF;AAj6hBmFA,IAAAA,wDAs7hBtF;AAt7hBsFA,IAAAA,0DAs7hBtF;;;;;;AAt7hBsFA,IAAAA,wDA89hB3F;;;;;;AA99hB2FA,IAAAA,wDAg+hB/F;;;;;;AAh+hB+FA,IAAAA,6DAo+hB/F;AAp+hB+FA,IAAAA,wDAq+hB3F;AAr+hB2FA,IAAAA,2DAs+hB/F;;;;iBAt+hB+FA;AAAAA,IAAAA,wDAq+hBtF;AAr+hBsFA,IAAAA,0DAq+hBtF;;;;;;;;;;;;AAr+hBsFA,IAAAA,wDAqsiB3F;;;;AArsiB2FA,IAAAA,0DAssiBvF;;;;;;AAtsiBuFA,IAAAA,wDA0siB3F;;;;AA1siB2FA,IAAAA,0DA2siBvF;;;;;;;;AA3siBuFA,IAAAA,6DA+siB3F;AA/siB2FA,IAAAA,yDAytiBvF;AAztiBuFA,IAAAA,2DAiuiB3F;;;;;;iBAjuiB2FA;AAAAA,IAAAA,0DAstiBvF;AAttiBuFA,IAAAA,yDAktiBnF;AAltiBmFA,IAAAA,wDA0tiBnF;AA1tiBmFA,IAAAA,yDA0tiBnF,oBA1tiBmFA,8DA0tiBnF;;;;;;;;AA1tiBmFA,IAAAA,sEAmziB/F;AAnziB+FA,IAAAA,6DAoziB3F;AApziB2FA,IAAAA,qDAoziB9D;AApziB8DA,IAAAA,2DAoziB7C;AApziB6CA,IAAAA,wDAqziB3F;AArziB2FA,IAAAA,oEAuziB/F;;;;iBAvziB+FA;AAAAA,IAAAA,wDAoziB9D;AApziB8DA,IAAAA,gEAoziB9D;;;;;;;;AApziB8DA,IAAAA,yDAwziB/F;;;;iBAxziB+FA;AAAAA,IAAAA,yDAwziB1D;;;;;;;;;;;AAxziB0DA,IAAAA,wDAysnB/F;;;;;;eAzsnB+FA;;AAAAA,IAAAA,6DA0snB/F;AA1snB+FA,IAAAA,yDAotnB3F;AAptnB2FA,MAAAA,4DAotnB3F;AAAA,mBAptnB2FA,4DAotnB3F;AAAA,aAAc,wBAAiB,OAAjB,SAAd;AAAA;AAptnB2FA,IAAAA,2DAqtnB/F;;;;iBArtnB+FA;AAAAA,IAAAA,yDA4snB3F;AA5snB2FA,IAAAA,0DA6snB3F;;;;;;eA7snB2FA;;AAAAA,IAAAA,6DAstnB/F;AAttnB+FA,IAAAA,yDA0tnB3F;AA1tnB2FA,MAAAA,4DA0tnB3F;AAAA,oBA1tnB2FA,4DA0tnB3F;AAAA,aAAU,gCAAV;AAAA;AA1tnB2FA,IAAAA,2DA2tnB/F;;;;iBA3tnB+FA;AAAAA,IAAAA,yDAwtnB3F;;;;;;AAxtnB2FA,IAAAA,6DAuunBvF;AAvunBuFA,IAAAA,wDA6unB/E;AA7unB+EA,IAAAA,2DAqwnBnF;;;;kBArwnBmFA;AAAAA,IAAAA,0DA2unBlF;AA3unBkFA,IAAAA,wDA4unBxC;AA5unBwCA,IAAAA,0DA4unBxC;AA5unBwCA,IAAAA,yDA4unB5E;AA5unB4EA,IAAAA,wDA+unB3E;AA/unB2EA,IAAAA,yDA+unB3E;AA/unB2EA,IAAAA,wDAovnB3E;AApvnB2EA,IAAAA,yDAovnB3E;;;;;;AApvnB2EA,IAAAA,6DAqynBnF;AArynBmFA,IAAAA,wDAsynB/E;AAtynB+EA,IAAAA,2DAuynBnF;;;;kBAvynBmFA;AAAAA,IAAAA,wDAsynB1E;AAtynB0EA,IAAAA,0DAsynB1E;;;;;;AAtynB0EA,IAAAA,6DAmunB3F;AAnunB2FA,IAAAA,yDAuunBvF;AAvunBuFA,IAAAA,6DAswnBjF;AAtwnBiFA,IAAAA,wDA0wnB/E;AA1wnB+EA,IAAAA,2DAoynBnF;AApynBmFA,IAAAA,yDAqynBnF;AArynBmFA,IAAAA,2DAwynBvF;;;;kBAxynBuFA;AAAAA,IAAAA,0DAsunBvF;AAtunBuFA,IAAAA,wDAuunBjF;AAvunBiFA,IAAAA,yDAuunBjF;AAvunBiFA,IAAAA,wDAuwnBnF;AAvwnBmFA,IAAAA,yDAuwnBnF;AAvwnBmFA,IAAAA,wDAywnBxD;AAzwnBwDA,IAAAA,0DAywnBxD;AAzwnBwDA,IAAAA,yDAywnBtB;AAzwnBsBA,IAAAA,wDA4wnB3E;AA5wnB2EA,IAAAA,yDA4wnB3E,oEA5wnB2EA,8DA4wnB3E;AA5wnB2EA,IAAAA,wDAixnB3E;AAjxnB2EA,IAAAA,yDAixnB3E,+TAjxnB2EA,8DAixnB3E;AAjxnB2EA,IAAAA,wDAqynB7E;AArynB6EA,IAAAA,yDAqynB7E;;;;;;AArynB6EA,IAAAA,6DA40nBvF;AA50nBuFA,IAAAA,wDAi1nB/E;AAj1nB+EA,IAAAA,2DA61nBnF;;;;kBA71nBmFA;AAAAA,IAAAA,0DA+0nBnF;AA/0nBmFA,IAAAA,wDAg1nBxC;AAh1nBwCA,IAAAA,0DAg1nBxC;AAh1nBwCA,IAAAA,yDAg1nBxD;AAh1nBwDA,IAAAA,wDAk1nB3E;AAl1nB2EA,IAAAA,yDAk1nB3E;AAl1nB2EA,IAAAA,wDAu1nB3E;AAv1nB2EA,IAAAA,yDAu1nB3E;;;;;;AAv1nB2EA,IAAAA,6DAw0nB3F;AAx0nB2FA,IAAAA,yDA40nBvF;AA50nBuFA,IAAAA,6DA81nBjF;AA91nBiFA,IAAAA,wDAm2nB/E;AAn2nB+EA,IAAAA,2DAg3nBnF;;;;kBAh3nBmFA;AAAAA,IAAAA,0DA20nBvF;AA30nBuFA,IAAAA,wDA60nBlF;AA70nBkFA,IAAAA,yDA60nBlF;AA70nBkFA,IAAAA,wDAg2nBnF;AAh2nBmFA,IAAAA,yDAg2nBnF;AAh2nBmFA,IAAAA,wDAk2nBxD;AAl2nBwDA,IAAAA,0DAk2nBxD;AAl2nBwDA,IAAAA,wDAo2nB3E;AAp2nB2EA,IAAAA,yDAo2nB3E,uEAp2nB2EA,8DAo2nB3E;AAp2nB2EA,IAAAA,wDAy2nB3E;AAz2nB2EA,IAAAA,yDAy2nB3E,2FAz2nB2EA,8DAy2nB3E;;;;;;eAz2nB2EA;;AAAAA,IAAAA,sEAkunB/F;AAlunB+FA,IAAAA,yDAmunB3F;AAnunB2FA,IAAAA,6DA0ynB3F;AA1ynB2FA,IAAAA,yDAyznBvF;AAzznBuFA,MAAAA,4DAyznBvF;AAAA,oBAzznBuFA,4DAyznBvF;AAAA,aAAc,yBAAiB,MAAjB,SAAd;AAAA;AAzznBuFA,MAAAA,4DAyznBvF;AAAA,oBAzznBuFA,4DAyznBvF;AAAA,aAQgB,4BARhB;AAAA;AAzznBuFA,MAAAA,4DAyznBvF;AAAA,oBAzznBuFA,4DAyznBvF;AAAA,aASiB,kCATjB;AAAA;AAzznBuFA,IAAAA,2DAu0nB3F;AAv0nB2FA,IAAAA,yDAw0nB3F;AAx0nB2FA,IAAAA,oEAm3nB/F;;;;iBAn3nB+FA;AAAAA,IAAAA,wDAmunBrF;AAnunBqFA,IAAAA,yDAmunBrF;AAnunBqFA,IAAAA,wDA2ynBvF;AA3ynBuFA,IAAAA,yDA2ynBvF;AA3ynBuFA,IAAAA,wDAy0nBtF;AAz0nBsFA,IAAAA,yDAy0nBtF;;;;;;AAz0nBsFA,IAAAA,wDA23nBvF;;;;kBA33nBuFA;AAAAA,IAAAA,yDA63nBnF;;;;;;AA73nBmFA,IAAAA,wDA85nBvF;;;;kBA95nBuFA;AAAAA,IAAAA,yDAg6nBnF;;;;;;AAh6nBmFA,IAAAA,sEAo3nB/F;AAp3nB+FA,IAAAA,6DAq3nB3F;AAr3nB2FA,IAAAA,wDAs3nBvF;AAt3nBuFA,IAAAA,yDA23nBvF;AA33nBuFA,IAAAA,wDA64nBvF;AA74nBuFA,IAAAA,yDA85nBvF;AA95nBuFA,IAAAA,2DAs6nB3F;AAt6nB2FA,IAAAA,oEAu6nB/F;;;;iBAv6nB+FA;AAAAA,IAAAA,wDAq3nBpF;AAr3nBoFA,IAAAA,0DAq3nBpF;AAr3nBoFA,IAAAA,wDAu3nBnF;AAv3nBmFA,IAAAA,yDAu3nBnF;AAv3nBmFA,IAAAA,wDA43nBlF;AA53nBkFA,IAAAA,yDA43nBlF;AA53nBkFA,IAAAA,wDA84nBnF;AA94nBmFA,IAAAA,yDA84nBnF;AA94nBmFA,IAAAA,wDA+5nBlF;AA/5nBkFA,IAAAA,yDA+5nBlF;;;;;;AA/5nBkFA,IAAAA,wDAw6nB/F;;;;iBAx6nB+FA;AAAAA,IAAAA,yDAw6nB1F;;;;;;eAx6nB0FA;;AAAAA,IAAAA,6DA26nB/F;AA36nB+FA,IAAAA,yDAo7nB3F;AAp7nB2FA,MAAAA,4DAo7nB3F;AAAA,oBAp7nB2FA,4DAo7nB3F;AAAA,aAAc,yBAAiB,OAAjB,SAAd;AAAA;AAp7nB2FA,IAAAA,2DAq7nB/F;;;;iBAr7nB+FA;AAAAA,IAAAA,yDA66nB3F;AA76nB2FA,IAAAA,0DA86nB3F;;;;;;AA96nB2FA,IAAAA,wDAs7nB/F;;;;;;cAt7nB+FA;;AAAAA,IAAAA,6DAywsB3F;AAzwsB2FA,IAAAA,qDAywsBtD;AAzwsBsDA,IAAAA,2DAywsBrB;AAzwsBqBA,IAAAA,6DA0wsB3F;AA1wsB2FA,IAAAA,yDAgxsBvF;AAhxsBuFA,MAAAA,4DAgxsBvF;AAAA,mBAhxsBuFA,4DAgxsBvF;AAAA,aAAS,sBAAT;AAAA;AAhxsBuFA,MAAAA,4DAgxsBvF;AAAA,mBAhxsBuFA,4DAgxsBvF;AAAA,aACgB,uBADhB;AAAA;AAhxsBuFA,IAAAA,2DAkxsB3F;;;;iBAlxsB2FA;AAAAA,IAAAA,wDAywsBtD;AAzwsBsDA,IAAAA,gEAywsBtD;AAzwsBsDA,IAAAA,wDA2wsBvF;AA3wsBuFA,IAAAA,yDA2wsBvF;;;;AAx5sBhB,IAAMkkM,WAAW,GAAG,OAApB;AACA;AACA;AACA;;AACA,IAAMl+E,SAAS,GAAG,SAAZA,SAAY,CAAC11G,KAAD;AAAA,SAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKud,SAAvC;AAAA,CAAlB;AACA;AACA;AACA;;;AACA,IAAMs2K,OAAO,GAAG,SAAVA,OAAU,CAAC7zL,KAAD;AAAA,SAAWA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKud,SAAvC;AAAA,CAAhB;AACA;AACA;AACA;;;AACA,IAAMg+B,OAAO,GAAG,SAAVA,OAAU,CAACv7C,KAAD;AAAA,SAAWgP,KAAK,CAACusC,OAAN,CAAcv7C,KAAd,CAAX;AAAA,CAAhB;AACA;AACA;AACA;;;AACA,IAAM+7J,QAAQ,GAAG,SAAXA,QAAW,CAAC/7J,KAAD;AAAA,SAAW,CAAC,CAACA,KAAb;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAM8zL,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAC9zL,KAAD;AAAA,SAAW6zL,OAAO,CAAC7zL,KAAD,CAAP,IAAkB4zL,WAAW,CAAC5oL,IAAZ,CAAiBhL,KAAjB,CAA7B;AAAA,CAA5B;AACA;AACA;AACA;;;AACA,IAAMmxH,OAAO,GAAG,SAAVA,OAAU,CAACz5E,IAAD;AAAA,SAAUv5C,4CAAK,CAACg1F,yCAAE,CAACz7C,IAAD,CAAH,EAAWA,IAAI,CAACp5C,OAAhB,CAAf;AAAA,CAAhB;AACA;AACA;AACA;;;AACA,IAAMy1L,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAM,OAAOx/L,QAAP,KAAoB,WAA1B;AAAA,CAApB;AACA;AACA;AACA;;;AACA,IAAM+jC,QAAQ,GAAG,SAAXA,QAAW,CAACt4B,KAAD;AAAA,SAAW,OAAOA,KAAP,KAAiB,QAA5B;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAMu4B,QAAQ,GAAG,SAAXA,QAAW,CAACv4B,KAAD;AAAA,SAAW,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,CAACw4B,KAAK,CAACx4B,KAAD,CAA9C;AAAA,CAAjB;AACA;AACA;AACA;;;AACA,IAAMg0L,aAAa,GAAG,SAAhBA,aAAgB,CAAC/zI,MAAD,EAAY;AAC9B,MAAI3nB,QAAQ,CAAC2nB,MAAD,CAAR,IAAoB,CAAC6zI,mBAAmB,CAAC7zI,MAAD,CAAxC,IAAoDA,MAAM,CAACygG,UAAP,CAAkB,KAAlB,CAAxD,EAAkF;AAC9E,WAAOzgG,MAAM,CAAC51C,KAAP,CAAa,CAAb,EAAgB41C,MAAM,CAAC96C,MAAP,GAAgB,CAAhC,CAAP;AACH;;AACD,SAAO86C,MAAP;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAMg0I,GAAG,GAAG,SAANA,GAAM,CAACxzJ,EAAD;AAAA,SAAQ;AAAA,sCAAI0vB,IAAJ;AAAIA,MAAAA,IAAJ;AAAA;;AAAA,WAAa,CAAC1vB,EAAE,CAACqzC,KAAH,CAAS,IAAT,EAAe3jB,IAAf,CAAd;AAAA,GAAR;AAAA,CAAZ;AACA;AACA;AACA;;;AACA,IAAM+jI,EAAE,GAAG,SAALA,EAAK;AAAA,qCAAIC,UAAJ;AAAIA,IAAAA,UAAJ;AAAA;;AAAA,SAAmB,UAACn0L,KAAD;AAAA,WAAWm0L,UAAU,CAACvlJ,MAAX,CAAkB,UAAC62E,GAAD,EAAMz9G,CAAN;AAAA,aAAYy9G,GAAG,IAAIz9G,CAAC,CAAChI,KAAD,CAApB;AAAA,KAAlB,EAA+C,KAA/C,CAAX;AAAA,GAAnB;AAAA,CAAX;AACA;AACA;AACA;;;AACA,IAAMo0L,GAAG,GAAG,SAANA,GAAM;AAAA,qCAAID,UAAJ;AAAIA,IAAAA,UAAJ;AAAA;;AAAA,SAAmB,UAACn0L,KAAD;AAAA,WAAWm0L,UAAU,CAACvlJ,MAAX,CAAkB,UAAC62E,GAAD,EAAMz9G,CAAN;AAAA,aAAYy9G,GAAG,IAAIz9G,CAAC,CAAChI,KAAD,CAApB;AAAA,KAAlB,EAA+C,IAA/C,CAAX;AAAA,GAAnB;AAAA,CAAZ;AACA;AACA;AACA;;;AACA,IAAMq0L,IAAI,GAAG,IAAI//K,0DAAJ,CAAmB,MAAnB,CAAb;AACA;AACA;AACA;;AACA,IAAMggL,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AACxB,MAAIC,SAAJ,EAAeC,QAAf;AACA,MAAMx1F,OAAO,GAAG,IAAIvhG,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAC7C42L,IAAAA,SAAS,GAAG,mBAAC3mM,IAAD,EAAU;AAClB8P,MAAAA,OAAO,CAAC9P,IAAD,CAAP;AACA,aAAOoxG,OAAP;AACH,KAHD;;AAIAw1F,IAAAA,QAAQ,GAAG,kBAAC5mM,IAAD,EAAU;AACjB+P,MAAAA,MAAM,CAAC/P,IAAD,CAAN;AACA,aAAOoxG,OAAP;AACH,KAHD;AAIH,GATe,CAAhB;AAUAA,EAAAA,OAAO,CAACthG,OAAR,GAAkB62L,SAAlB;AACAv1F,EAAAA,OAAO,CAACrhG,MAAR,GAAiB62L,QAAjB;AACA,SAAOx1F,OAAP;AACH,CAfD;AAgBA;;;AACA,IAAMy1F,QAAQ,GAAGC,aAAa,EAA9B,EACA;;AACA,SAASA,aAAT,GAAyB;AACrB,MAAI,OAAOC,MAAP,KAAkB,UAAlB,IAAgCA,MAAM,CAACF,QAA3C,EAAqD;AACjD,WAAOE,MAAM,CAACF,QAAd;AACH;;AACD,MAAMhqL,IAAI,GAAG8B,MAAM,CAACqoL,mBAAP,CAA2Bl9H,GAAG,CAACx+B,SAA/B,CAAb;AACA,MAAM27J,KAAK,GAAGn9H,GAAG,CAACx+B,SAAlB;;AACA,OAAK,IAAI4R,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGrgC,IAAI,CAACtF,MAAzB,EAAiC,EAAE2lC,CAAnC,EAAsC;AAClC,QAAMhgC,GAAG,GAAGL,IAAI,CAACqgC,CAAD,CAAhB;;AACA,QAAIhgC,GAAG,KAAK,SAAR,IAAqBA,GAAG,KAAK,MAA7B,IAAuC+pL,KAAK,CAAC/pL,GAAD,CAAL,KAAe+pL,KAAK,CAACC,OAAhE,EAAyE;AACrE,aAAOhqL,GAAP;AACH;AACJ;AACJ;;AACD,IAAMglI,cAAc,GAAG,OAAO,EAA9B;AACA,IAAM61B,GAAG,GAAG,OAAOp2K,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAArD;AACA;;AACA,IAAM8mE,qBAAqB,GAAGsvG,GAAG,CAACtvG,qBAAJ,IAA6BsvG,GAAG,CAACovB,uBAAjC,IAA6D,UAAAz5K,QAAQ;AAAA,SAAI/hB,UAAU,CAAC+hB,QAAD,EAAWw0H,cAAX,CAAd;AAAA,CAAnG;AACA;;;AACA,IAAMklD,oBAAoB,GAAGrvB,GAAG,CAACqvB,oBAAJ,IAA4BrvB,GAAG,CAACsvB,6BAAhC,IAAiE37L,YAA9F;AACA;AACA;AACA;;AACA,IAAM47L,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACnB,MAAI,CAAC/gF,oFAAmB,EAAxB,EAA4B;AACxB;AACH;;AACD,MAAMghF,EAAE,GAAG5lM,MAAM,CAAC8mD,SAAP,CAAiBC,SAA5B;AACA,MAAM8+I,IAAI,GAAGD,EAAE,CAAC5hL,OAAH,CAAW,OAAX,CAAb;AACA,MAAM8hL,OAAO,GAAGF,EAAE,CAAC5hL,OAAH,CAAW,UAAX,CAAhB;AACA,SAAO6hL,IAAI,GAAG,CAAP,IAAYC,OAAO,GAAG,CAA7B;AACH,CARD;AASA;AACA;AACA;;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACxiI,KAAD;AAAA,SAAW,GAAGzoD,KAAH,CAAS+zF,IAAT,CAActrC,KAAd,CAAX;AAAA,CAArB;AACA;AACA;AACA;;;AACA,IAAMijD,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACnqG,OAAD,EAAUtD,IAAV,EAAgBtI,KAAhB;AAAA,SAA0B4L,OAAO,CAAC6G,OAAR,CAAgB,IAAI1H,MAAJ,gBAAoBzC,IAApB,YAAkC,GAAlC,CAAhB,EAAwDtI,KAAxD,CAA1B;AAAA,CAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;;;IACMu1L;MAAAA;AACF,mCAAc;AAAA;;AACV,WAAKjxE,SAAL,GAAiB,IAAjB;AACH;;;;WACD,eAAiB;AACb,eAAO5O,SAAS,CAAC,KAAKt1G,KAAN,CAAhB;AACH;;;WACD,eAAqB;AACjB,eAAO,KAAKA,KAAZ;AACH;;;;;;AAELm1L,EAAAA,mBAAmB,CAACz7J,IAApB;AAAA,qBAAiHy7J,mBAAjH;AAAA;;AACAA,EAAAA,mBAAmB,CAAC/4J,IAApB,kBADuG9sC,gEACvG;AAAA,UAAqG6lM,mBAArG;AAAA;AAAA;AAAA;AAAA;AADuG7lM,QAAAA,0DACvG;AADuGA,QAAAA,0DACvG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;SAZM6lM;;;AAaN;AAAA;AAAA;AAmBA;AACA;AACA;;;IACMC;MAAAA,8NACF,4BAAc;AAAA;;AACV,SAAKvzD,SAAL,GAAiB,IAAI3/H,wDAAJ,EAAjB;AACA,SAAKmzL,aAAL,GAAqB,IAAInzL,wDAAJ,EAArB;AACA,SAAKozL,WAAL,GAAmB,IAAIpzL,wDAAJ,EAAnB;AACA,SAAKy6D,KAAL,GAAa,IAAIz6D,wDAAJ,EAAb;AACA,SAAKqzL,OAAL,GAAe,IAAIrzL,wDAAJ,EAAf;AACA,SAAKsvC,KAAL,GAAa,IAAItvC,wDAAJ,EAAb;AACA,SAAKszL,OAAL,GAAe,IAAItzL,wDAAJ,EAAf;AACA,SAAKuzL,QAAL,GAAgB,IAAIvzL,wDAAJ,EAAhB;AACA,SAAKwzL,UAAL,GAAkB,IAAIxzL,wDAAJ,EAAlB;AACH;;AAELkzL,EAAAA,gBAAgB,CAAC17J,IAAjB;AAAA,qBAA8G07J,gBAA9G;AAAA;;AACAA,EAAAA,gBAAgB,CAACv7J,KAAjB,kBAtCuGvqC,iEAsCvG;AAAA,WAAkH8lM,gBAAlH;AAAA,aAAkHA,gBAAlH;AAAA;SAdMA;;;AAeN;AAAA;AAAA;AAIA;AACA;AACA;;;IACMO;MAAAA,qOACF,mCAAc;AAAA;;AACV,SAAKz3L,OAAL,GAAe,IAAIgE,wDAAJ,EAAf;AACH;;AAELyzL,EAAAA,uBAAuB,CAACj8J,IAAxB;AAAA,qBAAqHi8J,uBAArH;AAAA;;AACAA,EAAAA,uBAAuB,CAAC97J,KAAxB,kBApDuGvqC,iEAoDvG;AAAA,WAAyHqmM,uBAAzH;AAAA,aAAyHA,uBAAzH;AAAA;SANMA;;;AAON;AAAA;AAAA;AAIA;AACA;AACA;;;IACMC;AACF,gCAAY/2E,iBAAZ,EAA+B;AAAA;;AAC3B,SAAKA,iBAAL,GAAyBA,iBAAzB;AACH;;;;WACD,iBAAQ;AACJ,WAAKA,iBAAL,CAAuBg3E,SAAvB;AACH;;;WACD,gBAAOvpL,MAAP,EAAe;AACX,WAAKuyG,iBAAL,CAAuBt7G,MAAvB,CAA8B+I,MAA9B;AACH;;;WACD,oBAAW;AACP,aAAO,IAAP;AACH;;;WACD,oBAAW;AACP,aAAO,KAAKuyG,iBAAL,CAAuB09D,QAAvB,EAAP;AACH;;;WACD,uBAAc;AACV,aAAO,KAAP;AACH;;;;;AAGL;AACA;AACA;;;IACMuZ;AACF,4BAAY9tK,KAAZ,EAAmB;AAAA;;AACf,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAK9pB,OAAL,GAAe,IAAIsP,0CAAJ,EAAf;AACA,SAAKuoL,SAAL,GAAiB,CAAjB;AACA,SAAKC,SAAL,GAAiB,CAAjB;AACA,SAAKC,UAAL,GAAkB,CAAlB;AACA,SAAKC,UAAL,GAAkB,CAAlB;AACH;;;;SACD,eAAU;AACN,aAAO,KAAKluK,KAAL,CAAWmuK,OAAX,CAAmB,KAAKJ,SAAxB,CAAP;AACH;;;SACD,eAAW;AACP,UAAMK,GAAG,GAAG,KAAKA,GAAjB;;AACA,UAAIA,GAAJ,EAAS;AACL,eAAO,KAAKpuK,KAAL,CAAWquK,QAAX,CAAoB,KAAKL,SAAzB,EAAoCI,GAApC,CAAP;AACH;AACJ;;;SACD,eAAmB;AACf,UAAMA,GAAG,GAAG,KAAKA,GAAjB;;AACA,UAAIA,GAAJ,EAAS;AACL,eAAOA,GAAG,CAACE,YAAX;AACH;;AACD,aAAO,CAAC,CAAR;AACH;AACD;AACJ;AACA;;;;WACI,iBAA0E;AAAA,UAApErzD,QAAoE,uEAAzD,KAAK8yD,SAAoD;AAAA,UAAzCQ,QAAyC,uEAA9B,KAAKP,SAAyB;AAAA,UAAd/qJ,KAAc,uEAAN,IAAM;;AACtE,UAAI,KAAK2qH,QAAL,CAAc3yB,QAAd,EAAwBszD,QAAxB,EAAkCtrJ,KAAlC,CAAJ,EAA8C;AAC1C,aAAKirJ,UAAL,GAAkBjzD,QAAlB;AACA,aAAKgzD,UAAL,GAAkBM,QAAlB;AACH;AACJ;;;WACD,kBAAStzD,QAAT,EAAmBszD,QAAnB,EAA6BtrJ,KAA7B,EAAoC;AAChC,UAAI,CAACA,KAAD,IAAU,KAAKurJ,aAAL,CAAmBvzD,QAAnB,EAA6BszD,QAA7B,CAAd,EAAsD;AAClD,eAAO,KAAP;AACH;;AACD,UAAME,YAAY,GAAG,KAAKT,SAA1B;AACA,UAAMU,YAAY,GAAG,KAAKX,SAA1B;AACA,WAAKC,SAAL,GAAiBO,QAAjB;AACA,WAAKR,SAAL,GAAiB9yD,QAAjB;AACA,WAAK/kI,OAAL,CAAamO,IAAb,CAAkB;AACdkqL,QAAAA,QAAQ,EAARA,QADc;AAEdE,QAAAA,YAAY,EAAZA,YAFc;AAGdC,QAAAA,YAAY,EAAZA,YAHc;AAIdzzD,QAAAA,QAAQ,EAARA;AAJc,OAAlB;AAMA,aAAO,IAAP;AACH;;;WACD,uBAAcA,QAAd,EAAwBszD,QAAxB,EAAkC;AAC9B,UAAI,KAAKR,SAAL,KAAmB9yD,QAAvB,EAAiC;AAC7B,eAAO,KAAP;AACH;;AACD,UAAMQ,IAAI,GAAG,KAAKA,IAAlB;;AACA,kCAAuB,KAAKz7G,KAAL,CAAW2uK,SAAX,CAAqBlzD,IAArB,CAAvB;AAAA,UAAQl5F,KAAR,yBAAQA,KAAR;AAAA,UAAeC,GAAf,yBAAeA,GAAf;;AACA,aAAO,CAACmjF,OAAO,CAAC8V,IAAD,CAAR,IAAmBl5F,KAAK,IAAIgsJ,QAAT,IAAqBA,QAAQ,IAAI/rJ,GAA3D;AACH;AACD;AACJ;AACA;;;;WACI,kBAA6D;AAAA,UAAtDy4F,QAAsD,uEAA3C,KAAK8yD,SAAsC;AAAA,UAA3BQ,QAA2B,uEAAhB,KAAKP,SAAW;AACzD,WAAKE,UAAL,GAAkBjzD,QAAlB;AACA,WAAKgzD,UAAL,GAAkBM,QAAlB;AACA,WAAKP,SAAL,GAAiBO,QAAjB;AACA,WAAKR,SAAL,GAAiB9yD,QAAjB;AACH;AACD;AACJ;AACA;;;;WACI,oBAAW;AACP,WAAK/kI,OAAL,CAAamO,IAAb,CAAkB;AACdkqL,QAAAA,QAAQ,EAAE,KAAKP,SADD;AAEdS,QAAAA,YAAY,EAAE,KAAKT,SAFL;AAGdU,QAAAA,YAAY,EAAE,KAAKX,SAHL;AAId9yD,QAAAA,QAAQ,EAAE,KAAK8yD;AAJD,OAAlB;AAMH;;;WACD,6BAAoBtyD,IAApB,EAA0B;AACtB,UAAMmzD,QAAQ,GAAG,KAAK5uK,KAAL,CAAW4uK,QAAX,CAAoBnzD,IAApB,CAAjB;AACA,UAAMkzD,SAAS,GAAG,KAAK3uK,KAAL,CAAW2uK,SAAX,CAAqBlzD,IAArB,CAAlB;AACA,UAAMuyD,SAAS,GAAG,KAAKA,SAAvB;AACA,UAAMD,SAAS,GAAG,KAAKA,SAAvB;;AACA,UAAIa,QAAQ,CAACrsJ,KAAT,IAAkBwrJ,SAAlB,IAA+BA,SAAS,IAAIa,QAAQ,CAACpsJ,GAArD,IACAmsJ,SAAS,CAACpsJ,KAAV,IAAmByrJ,SADnB,IACgCA,SAAS,IAAIW,SAAS,CAACnsJ,GAD3D,EACgE;AAC5D,aAAKurJ,SAAL,GAAiBtyD,IAAI,CAACR,QAAtB;AACA,aAAK+yD,SAAL,GAAiBvyD,IAAI,CAAC8yD,QAAtB;AACA,eAAO,IAAP;AACH;AACJ;;;WACD,kBAAStzD,QAAT,EAAmBszD,QAAnB,EAA6B;AACzB,aAAO,KAAKP,SAAL,KAAmBO,QAAnB,IAA+B,KAAKR,SAAL,KAAmB9yD,QAAzD;AACH;;;WACD,kBAAmB;AAAA,UAAZjqF,MAAY,uEAAH,CAAG;AACf,aAAO,KAAK69I,SAAL,CAAe,CAAC79I,MAAhB,CAAP;AACH;;;WACD,oBAAqB;AAAA,UAAZA,MAAY,uEAAH,CAAG;AACjB,aAAO,KAAK69I,SAAL,CAAe79I,MAAf,CAAP;AACH;;;WACD,oBAAqB;AAAA,UAAZA,MAAY,uEAAH,CAAG;AACjB,aAAO,KAAK89I,SAAL,CAAe,CAAC99I,MAAhB,CAAP;AACH;;;WACD,qBAAsB;AAAA,UAAZA,MAAY,uEAAH,CAAG;AAClB,aAAO,KAAK89I,SAAL,CAAe99I,MAAf,CAAP;AACH;;;WACD,uBAAco9I,GAAd,EAAmB;AACf,aAAO,KAAKW,QAAL,CAAchS,OAAd,CAAsBiS,mBAAtB,CAA0CjyL,MAA1C,GAAmD,CAAnD,IACF,KAAKgyL,QAAL,CAAcE,iBAAd,KAAoC,CAACb,GAAD,IAAQ,CAACA,GAAG,CAACc,SAAjD,IAA8D,CAA9D,GAAkE,CADhE,CAAP;AAEH;;;WACD,mBAAUl+I,MAAV,EAAkB;AACd,UAAMm+I,OAAO,GAAG,KAAKnvK,KAAL,CAAWmuK,OAAX,CAAmB,KAAKD,UAAxB,CAAhB;AACA,UAAM/5E,SAAS,GAAG,KAAKi7E,aAAL,CAAmBD,OAAnB,CAAlB;AACA,UAAMlB,UAAU,GAAG,KAAKA,UAAxB;AACA,WAAKA,UAAL,GAAkBh+J,IAAI,CAACF,GAAL,CAAS,CAAT,EAAYE,IAAI,CAACD,GAAL,CAASi+J,UAAU,GAAGj9I,MAAtB,EAA8BmjE,SAA9B,CAAZ,CAAlB;AACA,UAAIk7E,YAAY,GAAG,KAAKpB,UAAxB;AACA,UAAIqB,YAAY,GAAG,KAAKpB,UAAxB;AACA,UAAIzyD,IAAI,GAAG,KAAKz7G,KAAL,CAAWquK,QAAX,CAAoB,KAAKJ,UAAzB,EAAqCkB,OAArC,CAAX;;AACA,UAAI,CAAC1zD,IAAD,IAAS,KAAKszD,QAAL,CAAcQ,cAA3B,EAA2C;AACvC,eAAO,KAAK3hC,QAAL,CAAc0hC,YAAd,EAA4BD,YAA5B,CAAP;AACH;;AACD,UAAI5zD,IAAI,CAACxB,OAAL,GAAe,CAAf,IAAoBwB,IAAI,CAAC8yD,QAAL,IAAiBN,UAArC,IAAmDA,UAAU,GAAGxyD,IAAI,CAAC8yD,QAAL,GAAgB9yD,IAAI,CAACxB,OAAzF,EAAkG;AAC9Fo1D,QAAAA,YAAY,GAAGr+I,MAAM,GAAG,CAAT,GAAa/gB,IAAI,CAACD,GAAL,CAASyrG,IAAI,CAAC8yD,QAAL,GAAgB9yD,IAAI,CAACxB,OAA9B,EAAuC9lB,SAAvC,CAAb,GAAiElkF,IAAI,CAACF,GAAL,CAAS,CAAT,EAAY0rG,IAAI,CAAC8yD,QAAL,GAAgBv9I,MAA5B,CAAhF;AACA,YAAMw+I,QAAQ,GAAG,KAAKxvK,KAAL,CAAWquK,QAAX,CAAoBgB,YAApB,EAAkCF,OAAlC,CAAjB;;AACA,YAAI1zD,IAAI,KAAK+zD,QAAb,EAAuB;AACnB/zD,UAAAA,IAAI,GAAG+zD,QAAP;AACA,eAAKvB,UAAL,GAAkBxyD,IAAI,CAAC8yD,QAAvB;AACH,SAHD,MAIK;AACD,eAAKN,UAAL,GAAkBA,UAAlB;AACH;AACJ;;AACD,aAAO,KAAKrgC,QAAL,CAAcnyB,IAAI,CAACR,QAAnB,EAA6BQ,IAAI,CAAC8yD,QAAlC,CAAP;AACH;;;WACD,mBAAUv9I,MAAV,EAAkB;AACd,UAAIq+I,YAAY,GAAG,KAAKpB,UAAxB;;AACA,UAAI,KAAKc,QAAL,IAAiB,KAAKA,QAAL,CAAcU,SAAnC,EAA8C;AAC1C,YAAMtf,QAAQ,GAAG,KAAK4e,QAAL,CAAcW,kBAA/B;AACA,YAAIhnG,SAAS,GAAGz4D,IAAI,CAACF,GAAL,CAAS,CAAT,EAAYE,IAAI,CAACD,GAAL,CAAS,KAAK+9J,SAAL,GAAiB/8I,MAA1B,EAAkCm/H,QAAlC,CAAZ,CAAhB;;AACA,YAAI,KAAK4e,QAAL,CAAcE,iBAAd,IAAmC,CAAC,KAAKjvK,KAAL,CAAWmuK,OAAX,CAAmBzlG,SAAnB,CAAxC,EAAuE;AACnEA,UAAAA,SAAS,GAAG13C,MAAM,GAAG,CAAT,GAAa03C,SAAS,GAAG,CAAzB,GAA6BA,SAAS,GAAG,CAArD;AACAA,UAAAA,SAAS,GAAGz4D,IAAI,CAACF,GAAL,CAAS,CAAT,EAAYE,IAAI,CAACD,GAAL,CAAS04D,SAAT,EAAoBynF,QAApB,CAAZ,CAAZ;AACH;;AACD,YAAI,KAAK4e,QAAL,CAAcE,iBAAd,IAAmCvmG,SAAS,KAAKynF,QAArD,EAA+D;AAC3D,cAAI,KAAKnwJ,KAAL,CAAW2vK,OAAX,CAAmBzsK,KAAnB,KAA6BitJ,QAAjC,EAA2C;AACvC;AACAznF,YAAAA,SAAS;AACZ;AACJ;;AACD,YAAMknG,QAAO,GAAG,KAAK5vK,KAAL,CAAWmuK,OAAX,CAAmBzlG,SAAnB,CAAhB;;AACA,YAAIknG,QAAJ,EAAa;AACT;AACA,cAAIn0D,KAAI,GAAG,KAAKz7G,KAAL,CAAWquK,QAAX,CAAoB,KAAKJ,UAAzB,EAAqC2B,QAArC,CAAX;;AACA,cAAIn0D,KAAI,CAACR,QAAL,IAAiB,KAAKizD,UAAtB,IAAoCl9I,MAAM,GAAG,CAA7C,IAAkDyqF,KAAI,CAACo0D,OAAL,GAAe,CAArE,EAAwE;AACpEp0D,YAAAA,KAAI,GAAG,KAAKz7G,KAAL,CAAWquK,QAAX,CAAoB,KAAKJ,UAAzB,EAAqC,KAAKjuK,KAAL,CAAWmuK,OAAX,CAAmB1yD,KAAI,CAACR,QAAL,GAAgBQ,KAAI,CAACo0D,OAArB,GAA+B,CAA/B,GAAmC7+I,MAAtD,CAArC,CAAP;AACH;;AACD03C,UAAAA,SAAS,GAAG+yC,KAAI,CAACR,QAAjB;AACAo0D,UAAAA,YAAY,GAAG5zD,KAAI,CAAC8yD,QAApB;AACH;;AACD,aAAKL,UAAL,GAAkBxlG,SAAlB;AACA,eAAO,KAAKklE,QAAL,CAAcllE,SAAd,EAAyB2mG,YAAzB,CAAP;AACH;;AACD,UAAMO,OAAO,GAAG,KAAK5vK,KAAL,CAAWmuK,OAAX,CAAmB,KAAKD,UAAL,GAAkBl9I,MAArC,KAAgD,KAAKhxB,KAAL,CAAW4vK,OAAX,CAAmB,KAAK1B,UAAxB,EAAoCl9I,MAApC,CAAhE;;AACA,UAAI,CAAC4+I,OAAL,EAAc;AACV,eAAO,KAAP;AACH;;AACD,UAAIn0D,IAAI,GAAG,KAAKz7G,KAAL,CAAWquK,QAAX,CAAoB,KAAKJ,UAAzB,EAAqC2B,OAArC,CAAX;;AACA,UAAIn0D,IAAI,IAAIA,IAAI,CAACR,QAAL,IAAiB,KAAKizD,UAA9B,IAA4Cl9I,MAAM,GAAG,CAArD,IAA0DyqF,IAAI,CAACo0D,OAAL,GAAe,CAA7E,EAAgF;AAAE;AAC9E,YAAMC,OAAO,GAAGr0D,IAAI,CAACR,QAAL,GAAgBQ,IAAI,CAACo0D,OAArB,GAA+B,CAA/B,GAAmC7+I,MAAnD;AACAyqF,QAAAA,IAAI,GAAG,KAAKz7G,KAAL,CAAWquK,QAAX,CAAoB,KAAKJ,UAAzB,EAAqC,KAAKjuK,KAAL,CAAWmuK,OAAX,CAAmB2B,OAAnB,CAArC,CAAP;AACH;;AACD,UAAI,CAACr0D,IAAD,IAAS,KAAKszD,QAAL,CAAcQ,cAA3B,EAA2C;AACvC,eAAO,KAAK3hC,QAAL,CAAc,KAAKsgC,UAAL,GAAkBl9I,MAAhC,EAAwC,KAAKi9I,UAA7C,CAAP;AACH;;AACD,WAAKC,UAAL,GAAkBzyD,IAAI,CAACR,QAAvB;AACA,aAAO,KAAK2yB,QAAL,CAAc,KAAKsgC,UAAnB,EAA+BzyD,IAAI,CAAC8yD,QAApC,CAAP;AACH;;;;;AAGL;AACA;AACA;;;IACMwB;AACF,qBAAc;AAAA;;AACV,SAAKjkH,KAAL,GAAa,CAAb;AACA,SAAKnqE,KAAL,GAAa,EAAb;AACH;;;;SACD,eAAY;AACR,UAAI,KAAKmqE,KAAL,GAAa,CAAjB,EAAoB;AAChB,YAAIj9C,MAAJ;AACA,aAAKvhC,OAAL,CAAa,UAAAwU,IAAI,EAAI;AACjB+sB,UAAAA,MAAM,GAAG/sB,IAAT;AACA,iBAAO,IAAP;AACH,SAHD;AAIA,eAAO+sB,MAAP;AACH;AACJ;;;SACD,eAAW;AACP,UAAI,KAAKi9C,KAAL,GAAa,CAAjB,EAAoB;AAChB,YAAMzpE,IAAI,GAAG8B,MAAM,CAAC9B,IAAP,CAAY,KAAKV,KAAjB,CAAb;AACA,eAAO,KAAKA,KAAL,CAAWU,IAAI,CAACA,IAAI,CAACtF,MAAL,GAAc,CAAf,CAAf,CAAP;AACH;AACJ;;;WACD,oBAAW2F,GAAX,EAAgB;AACZ,UAAI,KAAKf,KAAL,CAAWe,GAAX,CAAJ,EAAqB;AACjB,eAAO,KAAKf,KAAL,CAAWe,GAAX,CAAP;AACA,aAAKopE,KAAL;AACH;AACJ;;;WACD,iBAAQppE,GAAR,EAAaZ,IAAb,EAAmB;AACf,UAAI,CAAC,KAAKH,KAAL,CAAWe,GAAX,CAAL,EAAsB;AAClB,aAAKopE,KAAL;AACH;;AACD,WAAKnqE,KAAL,CAAWe,GAAX,IAAkBZ,IAAlB;AACH;;;WACD,iBAAQY,GAAR,EAAa;AACT,aAAO,KAAKf,KAAL,CAAWe,GAAX,CAAP;AACH;;;WACD,mBAAU;AACN,UAAMmsB,MAAM,GAAG,EAAf;AACA,WAAKvhC,OAAL,CAAa,UAAAwU,IAAI,EAAI;AACjB+sB,QAAAA,MAAM,CAAChyB,IAAP,CAAYiF,IAAZ;AACH,OAFD;AAGA,aAAO+sB,MAAP;AACH;;;WACD,iBAAQ3b,QAAR,EAAkB;AACd,WAAK,IAAIxQ,GAAT,IAAgB,KAAKf,KAArB,EAA4B;AACxB,YAAI,KAAKA,KAAL,CAAWc,cAAX,CAA0BC,GAA1B,KAAkCwQ,QAAQ,CAAC,KAAKvR,KAAL,CAAWe,GAAX,CAAD,CAA9C,EAAiE;AAC7D,iBAAO,KAAKf,KAAL,CAAWe,GAAX,CAAP;AACH;AACJ;AACJ;;;WACD,cAAKwQ,QAAL,EAAe;AACX,aAAO,KAAK5lB,OAAL,CAAa4lB,QAAb,CAAP;AACH;;;;;AAGL;AACA;AACA;AACA;AACA;;;IACM88K;AACF,6BAAc;AAAA;;AACV,SAAKxkD,IAAL,GAAY,IAAIukD,OAAJ,EAAZ;AACH;;;;SACD,eAAe;AACX,aAAO,KAAKvkD,IAAL,CAAU94G,KAAjB;AACH;;;SACD,eAAc;AACV,aAAO,KAAK84G,IAAL,CAAUx7F,IAAjB;AACH;;;WACD,sBAAayrF,IAAb,EAAmB;AACf,UAAM2yD,GAAG,GAAG,KAAK5iD,IAAL,CAAU78I,OAAV,CAAkB8sI,IAAI,CAACw0D,eAAvB,CAAZ;;AACA,UAAI,CAAC7B,GAAL,EAAU;AACN;AACH;;AACD,UAAMG,QAAQ,GAAG9yD,IAAI,CAACy0D,eAAtB;AACA,UAAMC,SAAS,GAAG;AACdC,QAAAA,GAAG,EAAE30D,IAAI,CAAC20D,GADI;AAEd7B,QAAAA,QAAQ,EAARA,QAFc;AAGdtzD,QAAAA,QAAQ,EAAEmzD,GAAG,CAAClrK,KAHA;AAId+2G,QAAAA,OAAO,EAAEwB,IAAI,CAACxB,OAJA;AAKd41D,QAAAA,OAAO,EAAEp0D,IAAI,CAACo0D,OALA;AAMdQ,QAAAA,gBAAgB,EAAE50D,IAAI,CAAC40D,gBANT;AAOdn7E,QAAAA,QAAQ,EAAEk5E,GAAG,CAACl5E,QAPA;AAQdo5E,QAAAA,YAAY,EAAEF,GAAG,CAACE,YARJ;AASdgC,QAAAA,UAAU,EAAE70D,IAAI,CAAC60D;AATH,OAAlB;AAWAlC,MAAAA,GAAG,CAACv7D,KAAJ,CAAU09D,OAAV,CAAkBhC,QAAlB,EAA4B4B,SAA5B;;AACA,UAAI10D,IAAI,CAACyzD,SAAT,EAAoB;AAChBd,QAAAA,GAAG,CAACc,SAAJ,GAAgBzzD,IAAI,CAACyzD,SAArB;AACH;;AACD,aAAOiB,SAAP;AACH;;;WACD,wBAAejtK,KAAf,EAAsB+3G,QAAtB,EAAgCQ,IAAhC,EAAsC;AAClC,UAAM2yD,GAAG,GAAG,KAAK5iD,IAAL,CAAU78I,OAAV,CAAkBssI,QAAlB,CAAZ;;AACA,UAAImzD,GAAJ,EAAS;AACL,YAAM9uL,KAAK,GAAG8uL,GAAG,CAACv7D,KAAJ,CAAUlkI,OAAV,CAAkBu0B,KAAlB,CAAd;;AACA,YAAI5jB,KAAK,IAAIA,KAAK,CAAC8wL,GAAN,KAAc30D,IAAI,CAAC20D,GAAhC,EAAqC;AACjChC,UAAAA,GAAG,CAACv7D,KAAJ,CAAUzyH,UAAV,CAAqB8iB,KAArB;AACH;AACJ;AACJ;;;WACD,qBAAYkrK,GAAZ,EAAiB;AACb,UAAMoC,QAAQ,GAAG;AACbJ,QAAAA,GAAG,EAAEhC,GAAG,CAACgC,GADI;AAEbltK,QAAAA,KAAK,EAAEkrK,GAAG,CAAC6B,eAFE;AAGb/6E,QAAAA,QAAQ,EAAEk5E,GAAG,CAACl5E,QAHD;AAIbo5E,QAAAA,YAAY,EAAEF,GAAG,CAACE,YAJL;AAKbz7D,QAAAA,KAAK,EAAE,IAAIk9D,OAAJ;AALM,OAAjB;AAOA,WAAKvkD,IAAL,CAAU+kD,OAAV,CAAkBnC,GAAG,CAAC6B,eAAtB,EAAuCO,QAAvC;AACH;;;WACD,mBAAUpC,GAAV,EAAe;AACX,UAAM9xJ,OAAO,GAAG,KAAKkvG,IAAL,CAAU78I,OAAV,CAAkBy/L,GAAG,CAAC6B,eAAtB,CAAhB;;AACA,UAAI3zJ,OAAJ,EAAa;AACTn4B,QAAAA,MAAM,CAACC,MAAP,CAAck4B,OAAd,EAAuB;AACnB44E,UAAAA,QAAQ,EAAEk5E,GAAG,CAACl5E,QADK;AAEnBo5E,UAAAA,YAAY,EAAEF,GAAG,CAACE;AAFC,SAAvB;AAIH;AACJ;;;WACD,uBAAcprK,KAAd,EAAqBkrK,GAArB,EAA0B;AACtB,UAAM9uL,KAAK,GAAG,KAAKksI,IAAL,CAAU78I,OAAV,CAAkBu0B,KAAlB,CAAd;;AACA,UAAI5jB,KAAK,IAAIA,KAAK,CAAC8wL,GAAN,KAAchC,GAAG,CAACgC,GAA/B,EAAoC;AAChC,aAAK5kD,IAAL,CAAUprI,UAAV,CAAqB8iB,KAArB;AACH;AACJ;;;WACD,mBAAUu4G,IAAV,EAAgB;AACZ,UAAIA,IAAJ,EAAU;AACN,YAAMl5F,KAAK,GAAGk5F,IAAI,CAAC8yD,QAAnB;AACA,YAAM/rJ,GAAG,GAAGi5F,IAAI,CAAC8yD,QAAL,IAAiB9yD,IAAI,CAACxB,OAAL,IAAgB,CAAjC,IAAsC,CAAlD;AACA,eAAO;AACH13F,UAAAA,KAAK,EAALA,KADG;AAEHC,UAAAA,GAAG,EAAHA;AAFG,SAAP;AAIH;;AACD,aAAO,EAAP;AACH;;;WACD,kBAASi5F,IAAT,EAAe;AACX,UAAIA,IAAJ,EAAU;AACN,YAAMl5F,KAAK,GAAGk5F,IAAI,CAACR,QAAnB;AACA,YAAMz4F,GAAG,GAAGi5F,IAAI,CAACR,QAAL,IAAiBQ,IAAI,CAACo0D,OAAL,IAAgB,CAAjC,IAAsC,CAAlD;AACA,eAAO;AACHttJ,UAAAA,KAAK,EAALA,KADG;AAEHC,UAAAA,GAAG,EAAHA;AAFG,SAAP;AAIH;;AACD,aAAO,EAAP;AACH;;;WACD,iBAAQy4F,QAAR,EAAkBjqF,MAAlB,EAA0B;AACtB,UAAMw6F,IAAI,GAAG,KAAKA,IAAL,CAAU/uG,OAAV,EAAb;AACA,UAAM2xJ,GAAG,GAAG,KAAK5iD,IAAL,CAAU78I,OAAV,CAAkBssI,QAAlB,CAAZ;AACA,UAAM/hI,QAAQ,GAAGsyI,IAAI,CAACrgI,OAAL,CAAaijL,GAAb,CAAjB;AACA,UAAM/pL,IAAI,GAAGmnI,IAAI,CAACtyI,QAAQ,GAAG83C,MAAZ,CAAjB;AACA,aAAO3sC,IAAP;AACH;;;WACD,iBAAQ6e,KAAR,EAAe;AACX,aAAO,KAAKsoH,IAAL,CAAU78I,OAAV,CAAkBu0B,KAAlB,CAAP;AACH;;;WACD,kBAASA,KAAT,EAAgBkrK,GAAhB,EAAqB;AACjB,UAAI,CAACA,GAAL,EAAU;AACN;AACH;;AACD,UAAMnzD,QAAQ,GAAGmzD,GAAG,CAAClrK,KAArB;AACA,UAAIu4G,IAAI,GAAG2yD,GAAG,CAACv7D,KAAJ,CAAUlkI,OAAV,CAAkBu0B,KAAlB,CAAX;AACA,UAAIukF,YAAY,GAAGwzB,QAAnB;;AACA,aAAO,CAACQ,IAAD,IAAS2yD,GAAhB,EAAqB;AACjBA,QAAAA,GAAG,GAAG,KAAK5iD,IAAL,CAAU78I,OAAV,CAAkB84G,YAAlB,CAAN;AACAg0B,QAAAA,IAAI,GAAG,KAAKg1D,OAAL,CAAavtK,KAAb,EAAoBkrK,GAApB,CAAP;AACA3mF,QAAAA,YAAY;AACf;;AACD,UAAIg0B,IAAI,IAAIR,QAAQ,IAAImzD,GAAG,CAAClrK,KAAJ,IAAau4G,IAAI,CAACo0D,OAAL,IAAgB,CAA7B,IAAkC,CAA1D,EAA6D;AACzD,eAAOp0D,IAAP;AACH;AACJ;;;WACD,iBAAQv4G,KAAR,EAAekrK,GAAf,EAAoB;AAChB,UAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACv7D,KAAJ,CAAU/mD,KAAvB,EAA8B;AAC1B;AACH;;AACD,UAAM4kH,SAAS,GAAGtC,GAAG,CAACv7D,KAAJ,CAAUngG,KAA5B;AACA,UAAI+oG,IAAJ;AAAA,UAAUh0B,YAAY,GAAGvkF,KAAzB;;AACA,aAAO,CAACu4G,IAAD,IAASh0B,YAAY,IAAIipF,SAAS,CAACnC,QAA1C,EAAoD;AAChD9yD,QAAAA,IAAI,GAAG2yD,GAAG,CAACv7D,KAAJ,CAAUlkI,OAAV,CAAkB84G,YAAlB,CAAP;AACAA,QAAAA,YAAY;AACf;;AACD,UAAIg0B,IAAI,IAAIv4G,KAAK,IAAIu4G,IAAI,CAAC8yD,QAAL,IAAiB9yD,IAAI,CAACxB,OAAL,IAAgB,CAAjC,IAAsC,CAA3D,EAA8D;AAC1D,eAAOwB,IAAP;AACH;AACJ;;;;;;AAGL,IAAMjW,cAAc,GAAG,qDAAvB;AACA,IAAMkB,oBAAoB,GAAG,EAA7B;;AACA,IAAMJ,WAAW,GAAG,SAAdA,WAAc,CAACjU,UAAD;AAAA,SAAgBz2B,MAAM,CAACy2B,UAAD,CAAN,CAAmBhjH,IAAnB,GAA0BkT,KAA1B,CAAgC,GAAhC,CAAhB;AAAA,CAApB;AACA;AACA;AACA;;;AACA,IAAMgkH,UAAU,GAAG,SAAbA,UAAa,CAACvsH,OAAD,EAAUq4G,UAAV,EAAyB;AACxC,MAAMmU,SAAS,GAAGF,WAAW,CAACjU,UAAD,CAA7B;AACA,SAAOsT,OAAO,CAACW,WAAW,CAACtsH,OAAO,CAAC42B,SAAT,CAAX,CAA+B1zB,IAA/B,CAAoC,UAAC0zB,SAAD;AAAA,WAAe41F,SAAS,CAACr7G,OAAV,CAAkBylB,SAAlB,KAAgC,CAA/C;AAAA,GAApC,CAAD,CAAd;AACH,CAHD;AAIA;AACA;AACA;;;AACA,IAAM61F,cAAc,GAAG,SAAjBA,cAAiB,CAACpU,UAAD;AAAA,SAAgB,UAACr4G,OAAD;AAAA,WAAausH,UAAU,CAACvsH,OAAD,EAAUq4G,UAAV,CAAvB;AAAA,GAAhB;AAAA,CAAvB;AACA;AACA;AACA;;;AACA,IAAMsU,eAAe,GAAG,SAAlBA,eAAkB,CAAC90D,QAAD,EAAc;AAClC,MAAI,CAAC60D,oBAAoB,CAAC70D,QAAD,CAAzB,EAAqC;AACjC60D,IAAAA,oBAAoB,CAAC70D,QAAD,CAApB,GAAiC,UAAC73D,OAAD;AAAA,aAAa4hF,MAAM,CAAC5hF,OAAO,CAAC63D,QAAT,CAAN,CAAyB9vD,WAAzB,OAA2C8vD,QAAQ,CAAC9vD,WAAT,EAAxD;AAAA,KAAjC;AACH;;AACD,SAAO2kH,oBAAoB,CAAC70D,QAAD,CAA3B;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAM9gC,OAAO,GAAG,SAAVA,OAAU,CAACogE,IAAD,EAAO+zB,SAAP,EAAqB;AACjC,SAAO/zB,IAAI,IAAI,CAAC+zB,SAAS,CAAC/zB,IAAD,CAAzB,EAAiC;AAC7BA,IAAAA,IAAI,GAAGA,IAAI,CAAC9/D,UAAZ;AACH;;AACD,SAAO8/D,IAAP;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAM8zB,cAAc,GAAG,SAAjBA,cAAiB,CAAC9zB,IAAD,EAAO+zB,SAAP,EAAkBC,KAAlB,EAA4B;AAC/C,SAAOh0B,IAAI,IAAIA,IAAI,KAAKg0B,KAAjB,IAA0B,CAACD,SAAS,CAAC/zB,IAAD,CAA3C,EAAmD;AAC/CA,IAAAA,IAAI,GAAGA,IAAI,CAAC9/D,UAAZ;AACH;;AACD,MAAI8/D,IAAI,KAAKg0B,KAAb,EAAoB;AAChB,WAAOh0B,IAAP;AACH;AACJ,CAPD;AAQA;AACA;AACA;;;AACA,IAAMw/F,UAAU,GAAG,SAAbA,UAAa,CAACxzL,MAAD,EAASg0F,IAAT,EAAqC;AAAA,MAAtBi0B,SAAsB,uEAAV,KAAU;AACpD,MAAMC,OAAO,GAAG,CAACt0F,OAAO,CAACogE,IAAD,EAAO,UAACtW,KAAD;AAAA,WAAWA,KAAK,KAAK19E,MAArB;AAAA,GAAP,CAAxB;;AACA,MAAIkoH,OAAJ,EAAa;AACT,WAAO,KAAP;AACH;;AACD,MAAMn0G,EAAE,GAAG6f,OAAO,CAACogE,IAAD,EAAO,UAACtW,KAAD;AAAA,WAAWA,KAAK,KAAKsW,IAArB;AAAA,GAAP,CAAlB;AACA,SAAOjgF,EAAE,KAAKk0G,SAAS,IAAIl0G,EAAE,KAAK/T,MAAzB,CAAT;AACH,CAPD;AAQA;AACA;AACA;;;AACA,IAAM0oH,SAAS,GAAG,SAAZA,SAAY,CAAC7rH,OAAD,EAAa;AAC3B,MAAMuyD,IAAI,GAAGvyD,OAAO,CAAC+2C,qBAAR,EAAb;AACA,MAAM+0E,OAAO,GAAGv5D,IAAI,CAACv0D,KAAL,GAAa,CAAb,IAAkBu0D,IAAI,CAACh4D,MAAL,GAAc,CAAhD;AACA,MAAMwxH,WAAW,GAAGx5D,IAAI,CAAC3sD,CAAL,KAAW,CAAX,IAAgB2sD,IAAI,CAAChO,CAAL,KAAW,CAA/C,CAH2B,CAI3B;AACA;;AACA,SAAO,CAACunE,OAAO,IAAIC,WAAZ,KAA4B5+H,MAAM,CAACipD,gBAAP,CAAwBp2C,OAAxB,EAAiCgsH,UAAjC,KAAgD,QAAnF;AACH,CAPD;AAQA;AACA;AACA;;;AACA,IAAMP,WAAW,GAAG,SAAdA,WAAc,CAACzrH,OAAD,EAAa;AAC7B,MAAI,CAACA,OAAO,CAACqkF,OAAb,EAAsB;AAClB,WAAO,KAAP;AACH;;AACD,MAAMA,OAAO,GAAGrkF,OAAO,CAACqkF,OAAR,CAAgBt8E,WAAhB,EAAhB;AACA,MAAM2jH,WAAW,GAAGC,OAAO,CAAC3rH,OAAO,CAAC83D,YAAR,CAAqB,UAArB,CAAD,CAA3B;AACA,MAAM8zD,SAAS,GAAG,CAAC5rH,OAAO,CAAC+kB,QAAT,IAAqBymG,cAAc,CAAC5iH,IAAf,CAAoBy7E,OAApB,CAAvC;AACA,SAAOunC,SAAS,IAAIF,WAApB;AACH,CARD;AASA;AACA;AACA;;;AACA,IAAMO,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACjsH,OAAD,EAAqC;AAAA,MAA3BksH,eAA2B,uEAAT,IAAS;;AAC/D,MAAI,CAACT,WAAW,CAACzrH,OAAD,CAAhB,EAA2B;AACvB,WAAO,KAAP;AACH;;AACD,MAAMmsH,OAAO,GAAG,CAACD,eAAD,IAAoBL,SAAS,CAAC7rH,OAAD,CAA7C;AACA,MAAM42L,UAAU,GAAG52L,OAAO,CAAC83D,YAAR,CAAqB,aAArB,MAAwC,MAA3D;AACA,MAAMtiB,QAAQ,GAAGx1C,OAAO,CAAC83D,YAAR,CAAqB,UAArB,CAAjB;AACA,SAAOq0D,OAAO,IAAI,CAACyqE,UAAZ,IAA0BphJ,QAAQ,KAAK,IAA9C;AACH,CARD;AASA;AACA;AACA;;;AACA,IAAM81E,WAAW,GAAG,SAAdA,WAAc,CAACn0B,IAAD,EAAO+zB,SAAP,EAAuC;AAAA,MAArBE,SAAqB,uEAAT,IAAS;;AACvD,MAAI,CAACj0B,IAAL,EAAW;AACP;AACH;;AACD,MAAIi0B,SAAS,IAAIF,SAAS,CAAC/zB,IAAD,CAA1B,EAAkC;AAC9B,WAAOA,IAAP;AACH;;AACDA,EAAAA,IAAI,GAAGA,IAAI,CAACshB,UAAZ;;AACA,SAAOthB,IAAP,EAAa;AACT,QAAIA,IAAI,CAAC7/D,QAAL,KAAkB,CAAtB,EAAyB;AACrB,UAAMt3B,OAAO,GAAGsrH,WAAW,CAACn0B,IAAD,EAAO+zB,SAAP,CAA3B;;AACA,UAAIlrH,OAAJ,EAAa;AACT,eAAOA,OAAP;AACH;AACJ;;AACDm3F,IAAAA,IAAI,GAAGA,IAAI,CAACo0B,WAAZ;AACH;AACJ,CAjBD;AAkBA;AACA;AACA;;;AACA,IAAMsrE,eAAe,GAAG,SAAlBA,eAAkB,CAAC1/F,IAAD,EAAO+zB,SAAP,EAAuC;AAAA,MAArBE,SAAqB,uEAAT,IAAS;AAC3D,MAAIp1E,IAAI,GAAG,IAAX;AACAs1E,EAAAA,WAAW,CAACn0B,IAAD,EAAO,UAACA,IAAD,EAAU;AACxB,QAAI+zB,SAAS,CAAC/zB,IAAD,CAAb,EAAqB;AACjBnhD,MAAAA,IAAI,GAAGmhD,IAAP;AACH;;AACD,WAAO,KAAP;AACH,GALU,EAKRi0B,SALQ,CAAX;AAMA,SAAOp1E,IAAP;AACH,CATD;AAUA;AACA;AACA;;;AACA,IAAMq2E,aAAa,GAAG,SAAhBA,aAAgB,CAACrsH,OAAD,EAAqC;AAAA,MAA3BksH,eAA2B,uEAAT,IAAS;AACvD,SAAOZ,WAAW,CAACtrH,OAAD,EAAU,UAACm3F,IAAD;AAAA,WAAU80B,qBAAqB,CAAC90B,IAAD,EAAO+0B,eAAP,CAA/B;AAAA,GAAV,CAAlB;AACH,CAFD;AAGA;AACA;AACA;;;AACA,IAAME,kBAAkB,GAAG,SAArBA,kBAAqB,CAACpsH,OAAD,EAAqC;AAAA,MAA3BksH,eAA2B,uEAAT,IAAS;AAC5D,SAAOZ,WAAW,CAACtrH,OAAD,EAAU,UAACm3F,IAAD;AAAA,WAAU80B,qBAAqB,CAAC90B,IAAD,EAAO+0B,eAAP,CAA/B;AAAA,GAAV,EAAkE,KAAlE,CAAlB;AACH,CAFD;AAGA;AACA;AACA;;;AACA,IAAM4qE,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAC92L,OAAD,EAAqC;AAAA,MAA3BksH,eAA2B,uEAAT,IAAS;AAChE,SAAO2qE,eAAe,CAAC72L,OAAD,EAAU,UAACm3F,IAAD;AAAA,WAAU80B,qBAAqB,CAAC90B,IAAD,EAAO+0B,eAAP,CAA/B;AAAA,GAAV,EAAkE,KAAlE,CAAtB;AACH,CAFD;AAGA;AACA;AACA;;;AACA,SAASU,iBAAT,CAA2B1tH,QAA3B,EAAqCc,OAArC,EAA8C6sH,OAA9C,EAAuD;AACnD,MAAIh4F,MAAM,GAAG31B,QAAb;;AACA,MAAI2tH,OAAO,GAAG,CAAd,EAAiB;AACbh4F,IAAAA,MAAM,GAAG,CAAC31B,QAAV;AACH,GAFD,MAGK,IAAI2tH,OAAO,GAAG,CAAd,EAAiB;AAClBh4F,IAAAA,MAAM,GAAG70B,OAAO,CAAC8sH,WAAR,GAAsB9sH,OAAO,CAAC/B,WAA9B,GAA4CiB,QAArD;AACH;;AACD,SAAO21B,MAAP;AACH;AAED;AACA;AACA;;;IACMkiK;AACF,iCAAc;AAAA;;AACV,SAAK76L,OAAL,GAAe,IAAIsP,0CAAJ,EAAf;AACA,SAAKixD,UAAL,GAAkB,IAAIjxD,0CAAJ,EAAlB;AACH;;;;SACD,eAAkB;AACd,aAAO,KAAK0/F,IAAL,GAAY,KAAKl4F,QAAxB;AACH;;;WACD,uBAAc9W,OAAd,EAAuB;AACnB,WAAKq+H,KAAL,GAAar+H,OAAO,CAACq+H,KAArB;AACA,WAAKvnH,QAAL,GAAgB9W,OAAO,CAAC8W,QAAxB;AACA,WAAKk4F,IAAL,GAAYhvG,OAAO,CAACgvG,IAApB;AACA,WAAKhvG,OAAL,CAAamO,IAAb,CAAkBnO,OAAlB;AACH;;;WACD,oBAAW2vB,IAAX,EAAiB;AACb,WAAK4wC,UAAL,CAAgBpyD,IAAhB,CAAqB;AAAE6gG,QAAAA,IAAI,EAAEr/E,IAAI,GAAG,KAAK7Y,QAApB;AAA8BkM,QAAAA,IAAI,EAAE,KAAKlM;AAAzC,OAArB;AACH;;;WACD,wBAAepV,KAAf,EAAsB;AAClB,WAAK6+D,UAAL,CAAgBpyD,IAAhB,CAAqB;AAAE6gG,QAAAA,IAAI,EAAE,CAAR;AAAWhsF,QAAAA,IAAI,EAAEthB;AAAjB,OAArB;AACH;;;WACD,oBAAW;AACP,UAAM8zK,QAAQ,GAAG,KAAKvmJ,WAAL,GAAmB,CAApC;;AACA,UAAIumJ,QAAQ,GAAG,KAAK1+J,QAAhB,GAA2B,KAAKunH,KAApC,EAA2C;AACvC,aAAKq3C,UAAL,CAAgBF,QAAhB;AACH;AACJ;;;WACD,oBAAW;AACP,UAAMC,QAAQ,GAAG,KAAKxmJ,WAAL,GAAmB,CAApC;;AACA,UAAIwmJ,QAAQ,GAAG,KAAK3+J,QAAhB,IAA4B,CAAhC,EAAmC;AAC/B,aAAK4+J,UAAL,CAAgBD,QAAhB;AACH;AACJ;;;;;AAGL;AACA;AACA;;;IACMqlB;MAAAA;AACF,oCAAc;AAAA;;AACV,WAAKC,QAAL,GAAgB,IAAIzrL,0CAAJ,EAAhB;AACH;;;;aACD,kBAAS0B,OAAT,EAAkB;AACd,aAAK+pL,QAAL,CAAc5sL,IAAd,CAAmB6C,OAAnB;AACH;;;;;;AAEL8pL,EAAAA,oBAAoB,CAACt/J,IAArB;AAAA,qBAAkHs/J,oBAAlH;AAAA;;AACAA,EAAAA,oBAAoB,CAACn/J,KAArB,kBAppBuGvqC,iEAopBvG;AAAA,WAAsH0pM,oBAAtH;AAAA,aAAsHA,oBAAtH;AAAA;SATMA;;;AAUN;AAAA;AAAA;AAIA;AACA;AACA;;;AACA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAAChC,SAAD,EAAe;AACnC,MAAI,CAAC5hF,SAAS,CAAC4hF,SAAD,CAAd,EAA2B;AACvB,WAAO,IAAP;AACH;;AACD,SAAO;AAAEz9K,IAAAA,KAAK,EAAEy9K,SAAS,CAAC1pM,IAAnB;AAAyB6iL,IAAAA,UAAU,EAAE6mB,SAAS,CAAChsK,KAA/C;AAAsDiuK,IAAAA,WAAW,EAAED,eAAe,CAAChC,SAAS,CAACiC,WAAX;AAAlF,GAAP;AACH,CALD;;AAOA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,WAAD,EAAcvN,WAAd;AAAA,SAA8BA,WAAW,KAAKuN,WAAhB,IAA+BA,WAAW,CAAC/4C,UAAZ,CAAuBwrC,WAAvB,CAA7D;AAAA,CAArB;AACA;AACA;AACA;;;IACMwN;MAAAA;AACF,6BAAc;AAAA;;AACV,WAAKp7L,OAAL,GAAe,IAAIsP,0CAAJ,EAAf;AACA,WAAK+rL,QAAL,GAAgB,IAAIr4J,GAAJ,EAAhB;AACH;;;;aACD,iBAAQ;AACJ,aAAKq4J,QAAL,CAAclxL,KAAd;AACH;;;aACD,uBAAc;AACV,aAAKw+D,KAAL;AACH;;;aACD,oBAAW2yH,SAAX,EAAsB;AAClB,YAAI,KAAKC,YAAT,EAAuB;AACnB,iBAAO,KAAKA,YAAL,CAAkBD,SAAlB,CAAP;AACH;;AACD,eAAO,CAAC,KAAKD,QAAL,CAAcl5D,GAAd,CAAkBm5D,SAAS,CAACnpB,UAA5B,CAAR;AACH;;;aACD,2BAAkB6mB,SAAlB,EAA6B;AACzB,YAAIwC,QAAQ,GAAG,IAAf;;AACA,eAAOxC,SAAS,IAAIwC,QAApB,EAA8B;AAC1BA,UAAAA,QAAQ,GAAG,KAAKlN,UAAL,CAAgB;AACvB/yK,YAAAA,KAAK,EAAEy9K,SAAS,CAAC1pM,IADM;AAEvB6iL,YAAAA,UAAU,EAAE6mB,SAAS,CAAChsK,KAFC;AAGvBiuK,YAAAA,WAAW,EAAED,eAAe,CAAChC,SAAS,CAACiC,WAAX;AAHL,WAAhB,CAAX;AAKAjC,UAAAA,SAAS,GAAGA,SAAS,CAACiC,WAAtB;AACH;;AACD,eAAOO,QAAP;AACH;;;aACD,mBAAUxC,SAAV,EAAqB;AACjB,YAAMiC,WAAW,GAAGD,eAAe,CAAChC,SAAS,CAACiC,WAAX,CAAnC;AACA,YAAMhpE,MAAM,GAAG,CAAC,KAAKq8D,UAAL,CAAgB;AAAE/yK,UAAAA,KAAK,EAAEy9K,SAAS,CAAC1pM,IAAnB;AAAyB6iL,UAAAA,UAAU,EAAE6mB,SAAS,CAAChsK,KAA/C;AAAsDiuK,UAAAA,WAAW,EAAXA;AAAtD,SAAhB,CAAhB;AACA,aAAKj7L,OAAL,CAAamO,IAAb,CAAkB;AAAEoN,UAAAA,KAAK,EAAEy9K,SAAS,CAAC1pM,IAAnB;AAAyB2iI,UAAAA,MAAM,EAANA,MAAzB;AAAiCkgD,UAAAA,UAAU,EAAE6mB,SAAS,CAAChsK,KAAvD;AAA8DiuK,UAAAA,WAAW,EAAXA;AAA9D,SAAlB,EAHiB,CAIjB;;AACA,YAAI,KAAKM,YAAT,EAAuB;AACnB;AACH;;AACD,YAAItpE,MAAJ,EAAY;AACR,eAAKopE,QAAL,CAAcpkL,MAAd,CAAqB+hL,SAAS,CAAChsK,KAA/B;AACH,SAFD,MAGK;AACD,eAAKquK,QAAL,CAAc/3J,GAAd,CAAkB01J,SAAS,CAAChsK,KAA5B;AACH;AACJ;;;aACD,wBAAe4gK,WAAf,EAA4B;AAAA;;AACxB,aAAKyN,QAAL,CAAcjkM,OAAd,CAAsB,UAAA41B,KAAK;AAAA,iBAAIkuK,YAAY,CAACluK,KAAD,EAAQ4gK,WAAR,CAAZ,IAAoC,KAAI,CAACyN,QAAL,CAAcpkL,MAAd,CAAqB+V,KAArB,CAAxC;AAAA,SAA3B;AACH;;;;;;AAELouK,EAAAA,aAAa,CAAC5/J,IAAd;AAAA,qBAA2G4/J,aAA3G;AAAA;;AACAA,EAAAA,aAAa,CAACz/J,KAAd,kBAxtBuGvqC,iEAwtBvG;AAAA,WAA+GgqM,aAA/G;AAAA,aAA+GA,aAA/G;AAAA;SAjDMA;;;AAkDN;AAAA;AAAA;AAIA;AACA;AACA;;;IACMn+E;AACF,8BAAc;AAAA;;AACV,SAAKC,SAAL,GAAiB,KAAjB;AACH;AACD;AACJ;AACA;AACA;AACA;;;;;WACI,0BAAiB;AACb,WAAKA,SAAL,GAAiB,IAAjB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,8BAAqB;AACjB,aAAO,KAAKA,SAAZ;AACH;;;;;AAGL;AACA;AACA;;;IACMu+E;;;;;AACF,+BAAY5pI,IAAZ,EAAkB;AAAA;;AAAA;;AACd;AACA5jD,IAAAA,MAAM,CAACC,MAAP,iNAAoB2jD,IAApB;AAFc;AAGjB;;;EAJ6BorD;AAOlC;AACA;AACA;;;IACMy+E;;;;;AACF,6BAAY7pI,IAAZ,EAAkB;AAAA;;AAAA;;AACd;AACA5jD,IAAAA,MAAM,CAACC,MAAP,iNAAoB2jD,IAApB;AAFc;AAGjB;;;EAJ2BorD;AAOhC;AACA;AACA;;;IACM0+E;MAAAA;AACF,8BAAc;AAAA;;AACV,WAAK37L,OAAL,GAAe,IAAIsP,0CAAJ,EAAf;AACA,WAAK+rL,QAAL,GAAgB,IAAIr4J,GAAJ,EAAhB;AACH;;;;aACD,uBAAc;AACV,aAAKq4J,QAAL,CAAclxL,KAAd;AACH;;;aACD,oBAAW6iB,KAAX,EAAkBgyF,QAAlB,EAA4B;AACxB,YAAI,KAAKu8E,YAAT,EAAuB;AACnB,iBAAO,KAAKA,YAAL,CAAkB;AAAEvuK,YAAAA,KAAK,EAALA,KAAF;AAASgyF,YAAAA,QAAQ,EAARA;AAAT,WAAlB,CAAP;AACH;;AACD,eAAO,KAAKq8E,QAAL,CAAcl5D,GAAd,CAAkBn1G,KAAlB,CAAP;AACH;;;aACD,mBAAUA,KAAV,EAAiBgyF,QAAjB,EAA2B;AACvB,YAAI,KAAKsvE,UAAL,CAAgBthK,KAAhB,EAAuBgyF,QAAvB,CAAJ,EAAsC;AAClC,eAAK48E,WAAL,CAAiB5uK,KAAjB,EAAwBgyF,QAAxB;AACH,SAFD,MAGK;AACD,eAAK68E,SAAL,CAAe7uK,KAAf,EAAsBgyF,QAAtB;AACH;AACJ;;;aACD,mBAAUhyF,KAAV,EAAiBgyF,QAAjB,EAA2B;AACvB,YAAM9B,SAAS,GAAG,KAAKtsE,SAAL,CAAe;AAAEouE,UAAAA,QAAQ,EAARA,QAAF;AAAYhyF,UAAAA,KAAK,EAALA,KAAZ;AAAmBilG,UAAAA,MAAM,EAAE;AAA3B,SAAf,CAAlB;;AACA,YAAI,CAAC/U,SAAD,IAAc,CAAC,KAAKq+E,YAAxB,EAAsC;AAClC,eAAKF,QAAL,CAAc/3J,GAAd,CAAkBtW,KAAlB;AACH;AACJ;;;aACD,qBAAYA,KAAZ,EAAmBgyF,QAAnB,EAA6B;AACzB,YAAM9B,SAAS,GAAG,KAAKtsE,SAAL,CAAe;AAAEouE,UAAAA,QAAQ,EAARA,QAAF;AAAYhyF,UAAAA,KAAK,EAALA,KAAZ;AAAmBilG,UAAAA,MAAM,EAAE;AAA3B,SAAf,CAAlB;;AACA,YAAI,CAAC/U,SAAD,IAAc,CAAC,KAAKq+E,YAAxB,EAAsC;AAClC,eAAKF,QAAL,CAAcpkL,MAAd,CAAqB+V,KAArB;AACH;AACJ;;;aACD,mBAAU6kC,IAAV,EAAgB;AACZ,YAAMiqI,QAAQ,GAAG,KAAKjqI,IAAI,CAACogE,MAAL,GAAcypE,iBAAd,GAAkCD,mBAAvC,EAA4D5pI,IAA5D,CAAjB;AACA,aAAK7xD,OAAL,CAAamO,IAAb,CAAkB2tL,QAAlB;AACA,eAAOA,QAAQ,CAAC39E,kBAAT,EAAP;AACH;;;;;;AAELw9E,EAAAA,cAAc,CAACngK,IAAf;AAAA,qBAA4GmgK,cAA5G;AAAA;;AACAA,EAAAA,cAAc,CAAChgK,KAAf,kBAxzBuGvqC,iEAwzBvG;AAAA,WAAgHuqM,cAAhH;AAAA,aAAgHA,cAAhH;AAAA;SAzCMA;;;AA0CN;AAAA;AAAA;AAIA;AACA;AACA;;;AACA,IAAMI,iBAAiB,GAAG,IAAI/lL,0DAAJ,CAAmB,iCAAnB,CAA1B;AACA;AACA;AACA;;IACMgmL;MAAAA;AACF,yBAA4B;AAAA,UAAhB5tL,MAAgB,uEAAP,KAAO;;AAAA;;AACxB,WAAKA,MAAL,GAAcA,MAAd;AACA,WAAKg3E,MAAL,GAAc,IAAIpiD,GAAJ,EAAd;AACH;;;;aACD,uBAAcznB,KAAd,EAAqB;AACjB,YAAI,KAAKnN,MAAT,EAAiB;AACb,eAAKg3E,MAAL,CAAY9hD,GAAZ,CAAgB/nB,KAAhB;AACH;AACJ;;;aACD,yBAAgBA,KAAhB,EAAuB;AACnB,YAAI,KAAKnN,MAAT,EAAiB;AACb,eAAKg3E,MAAL,CAAYnuE,MAAZ,CAAmBsE,KAAnB;AACH;AACJ;;;aACD,oBAAW;AACP,YAAI,KAAKnN,MAAT,EAAiB;AACb,eAAKg3E,MAAL,CAAYhuF,OAAZ,CAAoB,UAAAkgH,CAAC;AAAA,mBAAIA,CAAC,CAACogD,QAAF,EAAJ;AAAA,WAArB;AACH;AACJ;;;aACD,sBAAa;AACT,YAAI,KAAKtpJ,MAAT,EAAiB;AACb,eAAKg3E,MAAL,CAAYhuF,OAAZ,CAAoB,UAAAkgH,CAAC;AAAA,mBAAIA,CAAC,CAACwG,UAAF,EAAJ;AAAA,WAArB;AACH;AACJ;;;;;;AAELk+E,EAAAA,SAAS,CAACxgK,IAAV;AAAA,qBAAuGwgK,SAAvG,EA91BuG5qM,uDA81BvG,CAAkI2qM,iBAAlI;AAAA;;AACAC,EAAAA,SAAS,CAACrgK,KAAV,kBA/1BuGvqC,iEA+1BvG;AAAA,WAA2G4qM,SAA3G;AAAA,aAA2GA,SAA3G;AAAA;SA3BMA;;;AA4BN;AAAA;AAAA;AASA;AACA;AACA;;;IACMC;;;;;AACF,0BAAYl8L,OAAZ,EAAqB;AAAA;;AAAA;;AACjB;AACA;AACR;AACA;;AACQ,WAAKooG,MAAL,GAAc,WAAd;AACAl6F,IAAAA,MAAM,CAACC,MAAP,iNAAoBnO,OAApB;AANiB;AAOpB;;;EARwBk9G;AAW7B;AACA;AACA;;;AACA,IAAMiX,OAAO,GAAG,SAAVA,OAAU,CAAClnG,KAAD;AAAA,SAAW,UAACphB,IAAD;AAAA,WAAUA,IAAI,CAACohB,KAAL,KAAeA,KAAzB;AAAA,GAAX;AAAA,CAAhB;AACA;AACA;AACA;;;AACA,IAAMkvK,UAAU,GAAG,SAAbA,UAAa,CAAClvK,KAAD;AAAA,SAAW,UAACphB,IAAD;AAAA,WAAUA,IAAI,CAACohB,KAAL,KAAeA,KAAzB;AAAA,GAAX;AAAA,CAAnB;AACA;AACA;AACA;;;AACA,IAAMmvK,QAAQ,GAAG,SAAXA,QAAW,CAACnvK,KAAD;AAAA,SAAWA,KAAK,KAAK,CAAC,CAAX,IAAgBA,KAAK,KAAK/N,SAArC;AAAA,CAAjB;AACA;AACA;AACA;;;IACMm9K;MAAAA;AACF,yBAAYxoH,MAAZ,EAAoB;AAAA;;AAAA;;AAChB,WAAKA,MAAL,GAAcA,MAAd;AACA,WAAK5zE,OAAL,GAAe,IAAIgE,wDAAJ,EAAf;AACA,WAAKq4L,aAAL,GAAqB,EAArB;AACA,WAAKC,YAAL,GAAoB,KAApB;AACA,WAAKC,WAAL,GAAmB,KAAnB;AACA,WAAKC,aAAL,GAAqB,IAAIltL,0CAAJ,EAArB;AACA,WAAK0sG,OAAL,GAAe,KAAKwgF,aAAL,CAAmB1uL,YAAnB,GAAkChd,IAAlC,CAAuC8O,0DAAS,CAAC;AAAA,eAAM,MAAI,CAACg0E,MAAL,CAAYpgC,QAAZ,CAAqB1lC,YAArB,GAAoChd,IAApC,CAAyCkyB,qDAAI,CAAC,CAAD,CAA7C,CAAN;AAAA,OAAD,CAAhD,CAAf;AACH;;;;aACD,iBAAQgK,KAAR,EAAkC;AAAA,YAAnBzR,KAAmB,uEAAX0D,SAAW;AAC9B,aAAKo9K,aAAL,CAAmB11L,IAAnB,CAAwB;AAAEqmB,UAAAA,KAAK,EAALA,KAAF;AAASzR,UAAAA,KAAK,EAALA;AAAT,SAAxB;AACA,aAAKkhL,SAAL;AACH;;;aACD,gBAAOlhL,KAAP,EAAc;AACV,aAAKmhL,YAAL,GAAoB;AAAEnhL,UAAAA,KAAK,EAALA;AAAF,SAApB;AACA,aAAKkhL,SAAL;AACH;;;aACD,kBAAS13D,QAAT,EAAmB+hD,MAAnB,EAA2BvrK,KAA3B,EAAkC;AAC9B,YAAI4gL,QAAQ,CAACp3D,QAAD,CAAR,IAAsB+hD,MAAM,CAACxzG,QAAP,KAAoB,KAA1C,IAAmD,EAAEwzG,MAAM,CAAC6V,YAAP,IAAuB7V,MAAM,CAACvtD,KAAhC,CAAvD,EAA+F;AAC3F;AACH;;AACD,aAAKqjE,gBAAL;;AACA,YAAI,CAAC,KAAKC,SAAL,EAAL,EAAuB;AACnB,eAAKC,OAAL,CAAa/3D,QAAb,EAAuBxpH,KAAvB;AACA,eAAKurK,MAAL,GAAcA,MAAd;AACA,eAAK2V,SAAL;AACH;AACJ;;;aACD,qBAAY;AACR,eAAO,KAAKJ,aAAL,CAAmBx1L,MAAnB,GAA4B,CAAnC;AACH;;;aACD,yBAAgB;AACZ,eAAO,KAAKk2L,SAAL,MAAoB,KAAKjW,MAAL,KAAgB7nK,SAA3C;AACH;;;WACD,eAAiB;AACb,eAAOm4F,SAAS,CAAC,KAAKslF,YAAN,CAAhB;AACH;;;WACD,eAAkB;AACd,YAAI,KAAKM,UAAT,EAAqB;AACjB,iBAAO,KAAKN,YAAL,CAAkBnhL,KAAlB,CAAwB7Z,KAA/B;AACH;;AACD,eAAO,EAAP;AACH;;;aACD,eAAMsrB,KAAN,EAAa;AACT,YAAImvK,QAAQ,CAACnvK,KAAD,CAAZ,EAAqB;AACjB,eAAK0vK,YAAL,GAAoBz9K,SAApB;AACA;AACH;;AACD,aAAKo9K,aAAL,GAAqB,KAAKA,aAAL,CAAmB9rM,MAAnB,CAA0B2rM,UAAU,CAAClvK,KAAD,CAApC,CAArB;AACA,eAAO,KAAK85J,MAAZ;AACA,aAAK2V,SAAL;AACH;;;aACD,mBAAUl2E,aAAV,EAAyB;AAAA;;AACrB,YAAI,KAAKugE,MAAL,IAAe,CAAC,KAAKyV,WAAzB,EAAsC;AAClC,iBAAO,KAAK3oH,MAAL,CAAY/sC,GAAZ,CAAgB,YAAM;AACzB,wCAAyB,MAAI,CAACw1J,aAAL,CAAmB,CAAnB,CAAzB;AAAA,gBAAQrvK,KAAR,yBAAQA,KAAR;AAAA,gBAAezR,KAAf,yBAAeA,KAAf;AACA,gBAAMs2C,IAAI,GAAG,IAAIoqI,cAAJ,CAAmB;AAC5BnV,cAAAA,MAAM,EAAE,MAAI,CAACA,MADe;AAE5BmW,cAAAA,SAAS,EAAE1hL,KAFiB;AAG5BgrG,cAAAA,aAAa,EAAEA,aAHa;AAI5Bwe,cAAAA,QAAQ,EAAE/3G;AAJkB,aAAnB,CAAb;AAMA,kBAAI,CAACuvK,WAAL,GAAmB,IAAnB;;AACA,kBAAI,CAACv8L,OAAL,CAAa4K,IAAb,CAAkBinD,IAAlB;;AACA,kBAAI,CAAC0qI,WAAL,GAAmB,KAAnB;;AACA,gBAAI,CAAC1qI,IAAI,CAACssD,kBAAL,EAAL,EAAgC;AAC5B,oBAAI,CAAC++E,UAAL;AACH;;AACD,mBAAOrrI,IAAI,CAACssD,kBAAL,EAAP;AACH,WAfM,CAAP;AAgBH;AACJ;;;aACD,sBAAa;AACT,YAAI,KAAK2oE,MAAT,EAAiB;AACb,eAAKuV,aAAL,GAAqB,EAArB;AACA,iBAAO,KAAKvV,MAAZ;AACA,eAAK2V,SAAL;AACH;AACJ;;;aACD,2BAAkB;AACd,eAAO,KAAK3V,MAAL,IAAe,CAAC,KAAKwV,YAA5B;AACH;;;aACD,4BAAmB;AAAA;;AACf,aAAK1oH,MAAL,CAAY3tC,iBAAZ,CAA8B,YAAM;AAChCh1C,UAAAA,MAAM,CAAC+J,YAAP,CAAoB,MAAI,CAACmiM,eAAzB;AACA,gBAAI,CAACb,YAAL,GAAoB,IAApB;AACA,gBAAI,CAACa,eAAL,GAAuBlsM,MAAM,CAACgK,UAAP,CAAkB,YAAM;AAC3C,kBAAI,CAACqhM,YAAL,GAAoB,KAApB;AACH,WAFsB,EAEpB,CAFoB,CAAvB;AAGH,SAND;AAOH;;;aACD,iBAAQtvK,KAAR,EAAe;AACX,YAAImvK,QAAQ,CAACnvK,KAAD,CAAZ,EAAqB;AACjB,iBAAO,KAAK0vK,YAAZ;AACH;;AACD,eAAO,KAAKU,WAAL,CAAiBpwK,KAAjB,CAAP;AACH;;;aACD,uBAAcA,KAAd,EAAqB85J,MAArB,EAA6B;AACzB,YAAIqV,QAAQ,CAACnvK,KAAD,CAAZ,EAAqB;AACjB,iBAAO,KAAK0vK,YAAZ;AACH;;AACD,YAAI,CAAC,KAAK5V,MAAN,IAAgBA,MAAM,KAAK,KAAKA,MAApC,EAA4C;AACxC,iBAAO,KAAKsW,WAAL,CAAiBpwK,KAAjB,CAAP;AACH;AACJ;;;aACD,kBAASA,KAAT,EAAgB;AACZ,YAAImvK,QAAQ,CAACnvK,KAAD,CAAR,IAAmBoqF,SAAS,CAAC,KAAKslF,YAAN,CAAhC,EAAqD;AACjD,iBAAO,IAAP;AACH;;AACD,eAAO,CAAC,KAAK5V,MAAN,IAAgB1vE,SAAS,CAAC,KAAKgmF,WAAL,CAAiBpwK,KAAjB,CAAD,CAAhC;AACH;;;aACD,mBAAUA,KAAV,EAAiB;AACb,eAAOoqF,SAAS,CAAC,KAAKvrF,OAAL,CAAamB,KAAb,CAAD,CAAhB;AACH;;;aACD,wBAAeA,KAAf,EAAsB85J,MAAtB,EAA8B;AAC1B,YAAI,KAAKA,MAAL,IAAe,KAAKA,MAAL,KAAgBA,MAAnC,EAA2C;AACvC,iBAAO1vE,SAAS,CAAC,KAAKgmF,WAAL,CAAiBpwK,KAAjB,CAAD,CAAhB;AACH;;AACD,eAAO,KAAP;AACH;;;aACD,mBAAU+3G,QAAV,EAAoB;AAChB,aAAK/kI,OAAL,CAAa4K,IAAb,CAAkB;AAAEu9F,UAAAA,MAAM,EAAE,MAAV;AAAkB48B,UAAAA,QAAQ,EAARA;AAAlB,SAAlB;AACH;;;aACD,oBAAW;AACP,aAAK/kI,OAAL,CAAa4K,IAAb,CAAkB;AAAEu9F,UAAAA,MAAM,EAAE;AAAV,SAAlB;AACH;;;aACD,iBAAQ48B,QAAR,EAAkB;AACd,4BAA6B,KAAKl5G,OAAL,CAAak5G,QAAb,CAA7B;AAAA,YAAek4D,SAAf,iBAAQ1hL,KAAR;;AACA,aAAKvb,OAAL,CAAa4K,IAAb,CAAkB;AAAEu9F,UAAAA,MAAM,EAAE,QAAV;AAAoB48B,UAAAA,QAAQ,EAARA,QAApB;AAA8Bk4D,UAAAA,SAAS,EAATA,SAA9B;AAAyCI,UAAAA,KAAK,EAAElB,QAAQ,CAACp3D,QAAD;AAAxD,SAAlB;AACH;;;aACD,cAAKA,QAAL,EAAe;AACX,6BAA6B,KAAKl5G,OAAL,CAAak5G,QAAb,CAA7B;AAAA,YAAek4D,SAAf,kBAAQ1hL,KAAR;;AACA,aAAKvb,OAAL,CAAa4K,IAAb,CAAkB;AAAEu9F,UAAAA,MAAM,EAAE,MAAV;AAAkB48B,UAAAA,QAAQ,EAARA,QAAlB;AAA4Bk4D,UAAAA,SAAS,EAATA,SAA5B;AAAuCI,UAAAA,KAAK,EAAElB,QAAQ,CAACp3D,QAAD;AAAtD,SAAlB;AACH;;;aACD,gBAAOA,QAAP,EAAiB;AACb,aAAK/kI,OAAL,CAAa4K,IAAb,CAAkB;AAAEu9F,UAAAA,MAAM,EAAE,QAAV;AAAoB48B,UAAAA,QAAQ,EAARA;AAApB,SAAlB;AACH;;;aACD,qBAAY/3G,KAAZ,EAAmB;AACf,eAAO,KAAKqvK,aAAL,CAAmBr1L,IAAnB,CAAwBktH,OAAO,CAAClnG,KAAD,CAA/B,CAAP;AACH;;;aACD,qBAAY;AAAA;;AACR,aAAK4mD,MAAL,CAAY3tC,iBAAZ,CAA8B,YAAM;AAChC,gBAAI,CAACu2J,aAAL,CAAmBruL,IAAnB;AACH,SAFD;AAGH;;;;;;AAELiuL,EAAAA,WAAW,CAAC5gK,IAAZ;AAAA,qBAAyG4gK,WAAzG,EAzhCuGhrM,uDAyhCvG,CAAsIA,kDAAtI;AAAA;;AACAgrM,EAAAA,WAAW,CAACzgK,KAAZ,kBA1hCuGvqC,iEA0hCvG;AAAA,WAA6GgrM,WAA7G;AAAA,aAA6GA,WAA7G;AAAA;SApJMA;;;AAqJN;AAAA;AAAA;;AAIA,IAAMkB,QAAQ,GAAG7sE,eAAe,CAAC,QAAD,CAAhC;AACA,IAAM8sE,UAAU,GAAG9sE,eAAe,CAAC,OAAD,CAAlC;AACA,IAAM+sE,cAAc,GAAG,kDAAvB;;AACA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAA35L,OAAO;AAAA,SAAIy5L,UAAU,CAACz5L,OAAD,CAAV,IAAuB05L,cAAc,CAAC9wL,IAAf,CAAoB5I,OAAO,CAAChK,IAA5B,CAA3B;AAAA,CAAhC;;AACA,IAAM4jM,YAAW,GAAG,SAAdA,WAAc,CAAA55L,OAAO;AAAA,SAAI,CAACA,OAAO,CAAC+kB,QAAT,KAAsBy0K,QAAQ,CAACx5L,OAAD,CAAR,IAAqB25L,gBAAgB,CAAC35L,OAAD,CAA3D,CAAJ;AAAA,CAA3B;AACA;AACA;AACA;;;IACM65L;AACF,mCAAY58L,IAAZ,EAAkB7K,QAAlB,EAA4B;AAAA;;AACxB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK4N,OAAL,GAAe/C,IAAI,CAACsC,aAApB;AACA,SAAKqsH,SAAL,GAAiBS,aAAa,CAAC,KAAKrsH,OAAN,EAAe,KAAf,CAAb,IAAsC,KAAKA,OAA5D;AACH;;;;SACD,eAAc;AACV,aAAO,KAAK4rH,SAAL,IAAkB,CAAC,KAAKA,SAAL,CAAe7mG,QAAzC;AACH;;;SACD,eAAc;AACV,aAAO,KAAK6mG,SAAL,IAAkBC,SAAS,CAAC,KAAKD,SAAN,CAAlC;AACH;;;WACD,uBAAc;AACV,aAAO,KAAKkuE,QAAL,MAAmBF,YAAW,CAAC,KAAK55L,OAAN,CAArC;AACH;;;WACD,gBAAOsK,MAAP,EAAe;AACX,WAAKlY,QAAL,CAAc8C,YAAd,CAA2B,KAAK02H,SAAhC,EAA2C,UAA3C,EAAuDthH,MAAM,GAAG,GAAH,GAAS,IAAtE;AACH;;;WACD,iBAAQ;AACJ,UAAI,KAAKshH,SAAT,EAAoB;AAChB,aAAKA,SAAL,CAAep8E,KAAf;AACH;AACJ;;;WACD,oBAAW;AACP,aAAO,KAAK28E,OAAL,IAAgB,KAAK96H,OAA5B;AACH;;;WACD,oBAAW;AAAA;;AACP,aAAOc,QAAQ,CAACorD,aAAT,KAA2B,KAAKv9C,OAAhC,IAA2C+2B,OAAO,CAAC5kC,QAAQ,CAACorD,aAAV,EAAyB,UAAAjnD,CAAC;AAAA,eAAIA,CAAC,KAAK,MAAI,CAAC0J,OAAf;AAAA,OAA1B,CAAzD;AACH;;;;;AAGL;AACA;AACA;;;AACA,IAAM+5L,YAAY,GAAG,IAAI7nL,0DAAJ,CAAmB,mBAAnB,CAArB;AACA;AACA;AACA;;AACA,IAAM8nL,kBAAkB,GAAG,EAA3B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMv/E;MAAAA;AACF,gCAAYknB,WAAZ,EAAyBnqF,WAAzB,EAAsCplD,QAAtC,EAAgD;AAAA;;AAC5C,WAAKuvI,WAAL,GAAmBA,WAAnB;AACA,WAAKnqF,WAAL,GAAmBA,WAAnB;AACA,WAAKplD,QAAL,GAAgBA,QAAhB;AACA,WAAKkY,MAAL,GAAc,IAAd;AACA,WAAK2vL,QAAL,GAAgB,IAAhB;;AACA,UAAI,KAAKt4D,WAAT,EAAsB;AAClB,aAAKlqH,KAAL,GAAa,KAAKkqH,WAAL,CAAiB20D,UAA9B;AACH;;AACD,UAAI,KAAK7+K,KAAT,EAAgB;AACZ,aAAKA,KAAL,CAAWyiL,eAAX,CAA2B,IAA3B;AACH;AACJ;AACD;AACJ;AACA;;;;;WAeI,eAAc;AACV,eAAO,KAAKD,QAAZ;AACH;WAhBD,aAAYr8L,KAAZ,EAAmB;AACf,YAAIA,KAAK,KAAK,EAAd,EAAkB;AACdA,UAAAA,KAAK,GAAG,IAAR;AACH,SAFD,MAGK;AACDA,UAAAA,KAAK,GAAG+tH,OAAO,CAAC/tH,KAAD,CAAf;AACH;;AACD,YAAIA,KAAK,KAAK,KAAKvM,OAAnB,EAA4B;AACxB,eAAK4oM,QAAL,GAAgBr8L,KAAhB;;AACA,cAAI,KAAKoC,OAAT,EAAkB;AACd,iBAAKA,OAAL,CAAauB,MAAb,CAAoB,KAAK+I,MAAL,IAAe1M,KAAnC;AACH;AACJ;AACJ;;;aAID,2BAAkB;AACd,YAAI,CAAC,KAAKoC,OAAV,EAAmB;AACf,eAAKA,OAAL,GAAe,IAAI65L,uBAAJ,CAA4B,KAAKriJ,WAAjC,EAA8C,KAAKplD,QAAnD,CAAf;AACH;;AACD,YAAI,KAAKqlB,KAAL,IAAc,KAAKzX,OAAvB,EAAgC;AAC5B,eAAKuB,MAAL,CAAY,KAAKkW,KAAL,CAAWmoH,QAAvB;AACH;AACJ;;;aACD,uBAAc;AACV,YAAI,KAAKnoH,KAAT,EAAgB;AACZ,eAAKA,KAAL,CAAW0iL,iBAAX,CAA6B,IAA7B;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,gBAAO7vL,MAAP,EAAe;AACX,YAAI,KAAKtK,OAAL,IAAgBsK,MAAM,KAAK,KAAKA,MAApC,EAA4C;AACxC,eAAKtK,OAAL,CAAauB,MAAb,CAAoB,KAAKlQ,OAAL,IAAgBiZ,MAApC;AACA,eAAKA,MAAL,GAAcA,MAAd;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW;AACP,eAAO,KAAKjZ,OAAL,IAAgB,KAAK2O,OAArB,IAAgC,KAAKA,OAAL,CAAa85L,QAAb,EAAvC;AACH;AACD;AACJ;AACA;;;;aACI,uBAAc;AACV,eAAO,KAAKzoM,OAAL,IAAgB,KAAK2O,OAArB,IAAgC,KAAKA,OAAL,CAAa45L,WAAb,EAAvC;AACH;AACD;AACJ;AACA;;;;aACI,iBAAQ;AACJ,YAAI,KAAKvoM,OAAL,IAAgB,KAAK2O,OAAzB,EAAkC;AAC9B,eAAKA,OAAL,CAAawvC,KAAb;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,oBAAW;AACP,eAAO,KAAKn+C,OAAL,IAAgB,KAAK2O,OAArB,IAAgC,KAAKA,OAAL,CAAau6K,QAAb,EAAvC;AACH;AACD;AACJ;AACA;;;;aACI,yBAAgBv6K,OAAhB,EAAyB;AACrB,aAAKA,OAAL,GAAeA,OAAf;AACH;;;;;;AAELy6G,EAAAA,kBAAkB,CAAC/iF,IAAnB;AAAA,qBAAgH+iF,kBAAhH,EAxtCuGntH,gEAwtCvG,CAAoJysM,YAApJ,OAxtCuGzsM,gEAwtCvG,CAA6MA,sDAA7M,GAxtCuGA,gEAwtCvG,CAAuOA,qDAAvO;AAAA;;AACAmtH,EAAAA,kBAAkB,CAACviF,IAAnB,kBAztCuG5qC,gEAytCvG;AAAA,UAAoGmtH,kBAApG;AAAA;AAAA;AAAA;AAAA;AAAA;SA1FMA;;;AA2FN;AAAA;AAAA;;AAuBA,IAAM2/E,YAAY,GAAG,SAAfA,YAAe,CAACp6L,OAAD,EAAUq6L,WAAV;AAAA,SAA0BtjK,OAAO,CAAC/2B,OAAD,EAAU2sH,eAAe,CAAC,YAAD,CAAzB,CAAP,KAAoD0tE,WAA9E;AAAA,CAArB;;AACA,IAAMC,eAAe,GAAG3tE,eAAe,CAAC,IAAD,CAAvC;AACA,IAAM4tE,aAAa,GAAG5tE,eAAe,CAAC,IAAD,CAArC;AACA,IAAM6tE,eAAe,GAAG7tE,eAAe,CAAC,mBAAD,CAAvC;;AACA,IAAM8tE,SAAS,GAAG,SAAZA,SAAY,CAACz6L,OAAD;AAAA,SAAau6L,aAAa,CAACv6L,OAAD,CAAb,IAA0Bs6L,eAAe,CAACt6L,OAAD,CAAzC,IAAsDw6L,eAAe,CAACx6L,OAAD,CAAlF;AAAA,CAAlB;;AACA,IAAM06L,QAAQ,GAAG,SAAXA,QAAW,CAAC16L,OAAD,EAAUq6L,WAAV,EAA0B;AACvC,MAAIzjM,MAAM,GAAGmgC,OAAO,CAAC/2B,OAAD,EAAUy6L,SAAV,CAApB;;AACA,SAAO7jM,MAAM,IAAI,CAACwjM,YAAY,CAACxjM,MAAD,EAASyjM,WAAT,CAA9B,EAAqD;AACjDzjM,IAAAA,MAAM,GAAGmgC,OAAO,CAACngC,MAAM,CAACwgC,aAAR,EAAuBqjK,SAAvB,CAAhB;AACH;;AACD,SAAO7jM,MAAP;AACH,CAND;;AAOA,IAAM+jM,UAAU,GAAG,SAAbA,UAAa,CAAC/jM,MAAD,EAASyjM,WAAT,EAAyB;AACxC,MAAM54D,IAAI,GAAGi5D,QAAQ,CAAC9jM,MAAD,EAASyjM,WAAT,CAArB;AACA,MAAMjG,GAAG,GAAGr9J,OAAO,CAAC0qG,IAAD,EAAO9U,eAAe,CAAC,IAAD,CAAtB,CAAnB;;AACA,MAAI8U,IAAI,IAAI2yD,GAAZ,EAAiB;AACb,QAAInzD,QAAQ,GAAGmzD,GAAG,CAACt8H,YAAJ,CAAiB,eAAjB,CAAf;AACAmpE,IAAAA,QAAQ,GAAGA,QAAQ,GAAGprG,QAAQ,CAACorG,QAAD,EAAW,EAAX,CAAR,GAAyB,CAA5B,GAAgC,IAAnD;AACA,QAAIszD,QAAQ,GAAG9yD,IAAI,CAAC3pE,YAAL,CAAkB,eAAlB,CAAf;AACAy8H,IAAAA,QAAQ,GAAGA,QAAQ,GAAG1+J,QAAQ,CAAC0+J,QAAD,EAAW,EAAX,CAAR,GAAyB,CAA5B,GAAgC,IAAnD;;AACA,QAAItzD,QAAQ,KAAK,IAAb,IAAqBszD,QAAQ,KAAK,IAAtC,EAA4C;AACxC,aAAO;AAAEA,QAAAA,QAAQ,EAARA,QAAF;AAAYtzD,QAAAA,QAAQ,EAARA,QAAZ;AAAsBjhI,QAAAA,OAAO,EAAEyhI;AAA/B,OAAP;AACH;AACJ;AACJ,CAZD;;AAaA,IAAMm5D,UAAU,GAAG,SAAbA,UAAa,CAAA5vG,OAAO;AAAA,SAAIA,OAAO,KAAKgnB,2EAAZ,IAA8BhnB,OAAO,KAAKgnB,4EAA1C,IAC1BhnB,OAAO,KAAKgnB,yEADc,IACEhnB,OAAO,KAAKgnB,2EADlB;AAAA,CAA1B;;AAEA,IAAM6oF,eAAe,GAAG,SAAlBA,eAAkB,CAAA7vG,OAAO;AAAA,SAAI4vG,UAAU,CAAC5vG,OAAD,CAAV,IAC/BA,OAAO,KAAKgnB,wEADmB,IACJhnB,OAAO,KAAKgnB,0EADR,IAE/BhnB,OAAO,KAAKgnB,sEAFmB,IAENhnB,OAAO,KAAKgnB,qEAFV;AAAA,CAA/B;;AAGA,IAAM8oF,OAAO,GAAGnuE,eAAe,CAAC,OAAD,CAA/B;;AACA,IAAMouE,WAAW,GAAG,SAAdA,WAAc,CAAA/6L,OAAO;AAAA,SAAIA,OAAO,IAAI86L,OAAO,CAAC96L,OAAD,CAAlB,IAA+BA,OAAO,CAAChK,IAAR,CAAa+R,WAAb,OAA+B,MAAlE;AAAA,CAA3B;;AACA,IAAMizL,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACvgG,GAAD;AAAA,SAASA,GAAG,CAAC13F,MAAJ,KAAe,CAAf,IAAoB03F,GAAG,CAACn1F,KAAJ,CAAU,IAAV,CAA7B;AAAA,CAA7B;AACA;AACA;AACA;;;IACM21L;AACF,8BAAY9tD,cAAZ,EAA4BC,aAA5B,EAA2C;AAAA;;AACvC,SAAKD,cAAL,GAAsBA,cAAtB;AACA,SAAKC,aAAL,GAAqBA,aAArB;AACH;;;;WACD,qBAAYknD,YAAZ,EAA0B;AACtB,UAAM4G,SAAS,GAAG5G,YAAY,GAAG,CAAjC;AACA,aAAO4G,SAAS,IAAK5G,YAAY,IAAI,KAAKnnD,cAArB,IAAuCmnD,YAAY,IAAI,KAAKlnD,aAAjF;AACH;;;WACD,oBAAW7kG,KAAX,EAAkBC,GAAlB,EAAuB;AACnB,aAAQD,KAAK,IAAI,KAAK4kG,cAAd,IAAgC,KAAKC,aAAL,IAAsB5kG,GAAvD,IACF,KAAK2kG,cAAL,IAAuB5kG,KAAvB,IAAgCA,KAAK,IAAI,KAAK6kG,aAD5C,IAEF,KAAKD,cAAL,IAAuB3kG,GAAvB,IAA8BA,GAAG,IAAI,KAAK4kG,aAF/C;AAGH;;;;;AAEL;AACA;AACA;;;IACMzxB;MAAAA;AACF,+BAAYnnE,IAAZ,EAAkB0rF,SAAlB,EAA6Bi7D,mBAA7B,EAAkDC,oBAAlD,EAAwEC,aAAxE,EAAuFC,cAAvF,EAAuGC,SAAvG,EAAkHC,WAAlH,EAA+HhtJ,EAA/H,EAAmIinE,YAAnI,EAAiJgmF,eAAjJ,EAAkK;AAAA;;AAC9J,WAAKjnJ,IAAL,GAAYA,IAAZ;AACA,WAAK0rF,SAAL,GAAiBA,SAAjB;AACA,WAAKi7D,mBAAL,GAA2BA,mBAA3B;AACA,WAAKC,oBAAL,GAA4BA,oBAA5B;AACA,WAAKC,aAAL,GAAqBA,aAArB;AACA,WAAKC,cAAL,GAAsBA,cAAtB;AACA,WAAKC,SAAL,GAAiBA,SAAjB;AACA,WAAKC,WAAL,GAAmBA,WAAnB;AACA,WAAKhtJ,EAAL,GAAUA,EAAV;AACA,WAAKinE,YAAL,GAAoBA,YAApB;AACA,WAAKgmF,eAAL,GAAuBA,eAAvB;AACA,WAAKC,WAAL,GAAmB,IAAIx7L,wDAAJ,EAAnB;AACA,WAAKy7L,cAAL,GAAsB,CAAtB;AACA,WAAKC,KAAL,GAAa,KAAb;AACA,WAAKtxL,MAAL,GAAc,IAAd;AACA,WAAKuxL,IAAL,GAAY;AAAE;AAAd;AACA,WAAK71K,KAAL,GAAa,IAAIgwK,eAAJ,EAAb;AACA,WAAK8F,MAAL,GAAc,IAAIhI,gBAAJ,CAAqB,KAAK9tK,KAA1B,CAAd;AACA,WAAK9pB,OAAL,GAAe,KAAK4/L,MAAL,CAAY5/L,OAA3B;AACH;;;;WAKD,eAAe;AACX,eAAO,KAAKyjG,IAAZ;AACH;WAND,aAAa/hG,KAAb,EAAoB;AAChB,aAAK+hG,IAAL,GAAY/hG,KAAZ;AACA,aAAKk+L,MAAL,CAAY/G,QAAZ,GAAuBn3L,KAAvB;AACH;;;WAID,eAAc;AACV,eAAO,KAAKg+L,KAAZ;AACH;;;WACD,eAAiB;AACb,YAAI,KAAKC,IAAL,KAAc;AAAE;AAApB,UAAmC;AAC/B,iBAAO,KAAKC,MAAL,CAAYr6D,IAAnB;AACH;AACJ;;;WACD,eAAgB;AACZ,YAAI,KAAKo6D,IAAL,KAAc;AAAE;AAApB,UAAmC;AAC/B,iBAAO1xL,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAK0xL,MAAL,CAAY1H,GAA9B,EAAmC;AACtCv7D,YAAAA,KAAK,EAAE,KAAKijE,MAAL,CAAY1H,GAAZ,CAAgBv7D,KAAhB,CAAsBp2F,OAAtB;AAD+B,WAAnC,CAAP;AAGH;AACJ;;;WACD,eAAoB;AAChB,eAAOxM,IAAI,CAACF,GAAL,CAAS,CAAT,EAAY,KAAK4lK,cAAL,GAAsB,KAAKh8F,IAAL,CAAUo8F,UAA5C,CAAP;AACH;;;aACD,cAAKp8F,IAAL,EAAW;AAAA;;AACP,aAAKi8F,KAAL,GAAa,IAAb;AACA,aAAKL,SAAL,CAAejxL,MAAf,GAAwB,IAAxB;AACA,aAAKyqL,QAAL,GAAgBp1F,IAAhB;;AACA,YAAMq8F,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,6CAAIC,SAAJ;AAAIA,YAAAA,SAAJ;AAAA;;AAAA,iBAAkB,UAACluI,IAAD;AAAA;;AAAA,mBAAU,OAAI,CAACvZ,IAAL,CAAU0nJ,QAAV,GACnD7yJ,2CAAI,CAAC,CAAC,IAAD,CAAD,CAAJ,CAAar8C,IAAb,CAAkBoP,oDAAG,CAAC;AAAA,qBAAM2xD,IAAN;AAAA,aAAD,CAArB,CADmD,GAEnD,gCAAI,CAACvZ,IAAL,CAAU9E,QAAV,EAAmB1iD,IAAnB,+BAAwBkyB,qDAAI,CAAC,CAAD,CAA5B,EAAiC9iB,oDAAG,CAAC;AAAA,qBAAM2xD,IAAN;AAAA,aAAD,CAApC,SAAqDkuI,SAArD,EAFyC;AAAA,WAAlB;AAAA,SAA3B;;AAGA,YAAMvsJ,QAAQ,GAAGssJ,kBAAkB,EAAnC;AACA,aAAK7lF,IAAL,GAAY,IAAI3D,+CAAJ,EAAZ;AACA,aAAK2D,IAAL,CAAU32E,GAAV,CAAc,KAAKs8J,MAAL,CAAY5/L,OAAZ,CACThP,SADS,CACC,UAAA6gE,IAAI;AAAA,iBAAI,OAAI,CAACouI,eAAL,CAAqBpuI,IAArB,CAAJ;AAAA,SADL,CAAd;AAEA,aAAKooD,IAAL,CAAU32E,GAAV,CAAc,KAAK0gG,SAAL,CAAe1wF,KAAf,CAAqBxiD,IAArB,CAA0B8O,0DAAS,CAAC4zC,QAAD,CAAnC,EACTxiD,SADS,CACC,UAAC6gE,IAAD;AAAA,iBAAU,OAAI,CAAC9d,UAAL,CAAgB8d,IAAI,CAACn3D,MAArB,CAAV;AAAA,SADD,CAAd;AAEA,aAAKu/G,IAAL,CAAU32E,GAAV,CAAc,KAAK0gG,SAAL,CAAeuzD,QAAf,CAAwBzmM,IAAxB,CAA6BP,uDAAM,CAAC;AAAA,iBAAM,OAAI,CAACovM,IAAL,KAAc,CAApB;AAAA;AAAsB;AAAvB,SAAnC,EAA0E//L,0DAAS,CAACkgM,kBAAkB,CAACn/L,0DAAS,CAAC,KAAKqjI,SAAL,CAAe1wF,KAAhB,CAAV,CAAnB,CAAnF,EACTtiD,SADS,CACC,UAAA6gE,IAAI;AAAA,iBAAI,OAAI,CAACquI,UAAL,CAAgBruI,IAAhB,CAAJ;AAAA,SADL,CAAd;AAEA,aAAKooD,IAAL,CAAU32E,GAAV,CAAc,KAAK0gG,SAAL,CAAewzD,UAAf,CAA0B1mM,IAA1B,CAA+BP,uDAAM,CAAC;AAAA,iBAAM,OAAI,CAACovM,IAAL,KAAc,CAApB;AAAA;AAAsB;AAAvB,SAArC,EACT3uM,SADS,CACC;AAAA,iBAAM,OAAI,CAACmvM,YAAL,EAAN;AAAA,SADD,CAAd;AAEA,aAAKlmF,IAAL,CAAU32E,GAAV,EACA;AACA;AACA,aAAKg8J,WAAL,CAAiBt/L,OAAjB,CAAyBlP,IAAzB,CAA8BP,uDAAM,CAAC,UAAA6J,CAAC;AAAA,iBAAIA,CAAC,CAAC+tG,MAAF,KAAa,MAAb,IAAuB,OAAI,CAACw3F,IAAL,KAAc,CAAzC;AAAA;AAA2C;AAA7C,SAApC,EAAiGpvM,uDAAM,CAAC,UAAC6J,CAAD;AAAA,iBAAOA,CAAC,CAAC+tG,MAAF,KAAa,WAAb,IAA4B,CAAC/tG,CAAC,CAAC8iH,SAAtC;AAAA,SAAD,CAAvG,EAA0Jt9G,0DAAS,CAAC4zC,QAAD,CAAnK,EACKxiD,SADL,CACe;AAAA,iBAAM,OAAI,CAACovM,SAAL,EAAN;AAAA,SADf,CAHA;AAKA,aAAKnmF,IAAL,CAAU32E,GAAV,CAAc,KAAK27J,mBAAL,CAAyB1+H,UAAzB,CACTvvE,SADS,CACC;AAAA,iBAAM,OAAI,CAAC4uM,MAAL,CAAYj3H,KAAZ,CAAkB,CAAlB,EAAqB,CAArB,CAAN;AAAA,SADD,CAAd;AAEA,aAAKsxC,IAAL,CAAU32E,GAAV,CAAc,KAAK0gG,SAAL,CAAeqzD,OAAf,CACTrmM,SADS,CACC,UAAA6gE,IAAI;AAAA,iBAAI,OAAI,CAACwuI,SAAL,CAAexuI,IAAf,CAAJ;AAAA,SADL,CAAd;AAEA,aAAKooD,IAAL,CAAU32E,GAAV,CAAc,KAAK0gG,SAAL,CAAeqzD,OAAf,CAAuBvmM,IAAvB,CAA4BP,uDAAM,CAAC,UAAAshE,IAAI;AAAA,iBAAIA,IAAI,CAACi9B,OAAL,KAAiBgnB,qEAAjB,IAA6B,OAAI,CAAC6pF,IAAL,KAAc,CAA/C;AAAA;AAAiD;AAAtD,SAAlC,EAAwGzL,4DAAW,CAAC,KAAKlwD,SAAL,CAAeuzD,QAAf,CAAwBzmM,IAAxB,CAA6B6P,0DAAS,EACxK;AACAkkC,QAAAA,+CAAQ,CAAC,CAAD,CAAR,CAAY/zC,IAAZ,CAAiBkyB,qDAAI,CAAC,CAAD,CAArB,CAFwK,CAAtC,CAAD,CAAnH,EAGThyB,SAHS,CAGC;AAAA,iBAAM,OAAI,CAACsvM,QAAL,EAAN;AAAA,SAHD,CAAd;;AAIA,YAAI,KAAKf,eAAT,EAA0B;AACtB,cAAMz7L,OAAO,GAAG,IAAI4zL,oBAAJ,CAAyB,IAAzB,CAAhB;AACA,eAAK6H,eAAL,CAAqBvB,eAArB,CAAqCl6L,OAArC;AACH;;AACD,aAAKy8L,kBAAL;AACH;;;aACD,uBAAc;AACV,YAAI,KAAKtmF,IAAT,EAAe;AACX,eAAKA,IAAL,CAAU9oH,WAAV;AACH;;AACD,aAAKuuM,KAAL,GAAa,KAAb;AACH;;;aACD,sBAAan6D,IAAb,EAAmB;AACf,YAAIA,IAAI,CAACw0D,eAAL,KAAyB,KAAKyG,eAAlC,EAAmD;AAC/C,cAAMvG,SAAS,GAAG,KAAKnwK,KAAL,CAAW22K,YAAX,CAAwBl7D,IAAxB,CAAlB;;AACA,cAAI,KAAKm7D,WAAL,IAAoB,KAAKd,MAAL,CAAYe,mBAAZ,CAAgC1G,SAAhC,CAAxB,EAAoE;AAChE,iBAAKyG,WAAL,GAAmB,KAAnB;AACH;AACJ;AACJ;;;aACD,kCAAyBn7D,IAAzB,EAA+B;AAC3B,YAAIA,IAAI,CAACw0D,eAAL,KAAyB,KAAKyG,eAAlC,EAAmD;AAC/C,eAAK12K,KAAL,CAAW22K,YAAX,CAAwBl7D,IAAxB;AACH;AACJ;;;aACD,wBAAev4G,KAAf,EAAsB+3G,QAAtB,EAAgCQ,IAAhC,EAAsC;AAClC,aAAKz7G,KAAL,CAAW82K,cAAX,CAA0B5zK,KAA1B,EAAiC+3G,QAAjC,EAA2CQ,IAA3C;AACH;;;aACD,qBAAY2yD,GAAZ,EAAiB;AACb,aAAKpuK,KAAL,CAAW+2K,WAAX,CAAuB3I,GAAvB;AACA,aAAKsI,eAAL,GAAuBtI,GAAG,CAAC6B,eAA3B;AACH;;;aACD,mBAAU7B,GAAV,EAAe;AACX,aAAKpuK,KAAL,CAAWg3K,SAAX,CAAqB5I,GAArB;AACH;;;aACD,uBAAclrK,KAAd,EAAqBkrK,GAArB,EAA0B;AACtB,aAAKpuK,KAAL,CAAWi3K,aAAX,CAAyB/zK,KAAzB,EAAgCkrK,GAAhC;AACA,YAAMuB,OAAO,GAAG,KAAK3vK,KAAL,CAAW2vK,OAA3B;;AACA,YAAIA,OAAO,IAAI,KAAKkG,IAAL,KAAc;AAAE;AAA/B,UAA8C;AAC1C,cAAM1lB,QAAQ,GAAI,KAAK+mB,aAAL,MAAwB,KAAKC,QAA9B,GAA0C,KAAKA,QAAL,CAAc/vD,aAAxD,GAAwEuoD,OAAO,CAACzsK,KAAjG;;AACA,cAAI,KAAKyyK,cAAL,GAAsBxlB,QAA1B,EAAoC;AAChC,iBAAK2lB,MAAL,CAAYj3H,KAAZ,CAAkB,CAAlB,EAAqB,CAArB;AACH;AACJ;AACJ;;;aACD,yBAAgB48D,IAAhB,EAAsB;AAClB,eAAO,KAAKm6D,KAAL,IACH,KAAKtxL,MADF,IAEH,KAAKuxL,IAAL,KAAc;AAAE;AAFb,WAGH,KAAKC,MAAL,CAAYl8D,QAAZ,CAAqB6B,IAAI,CAACw0D,eAA1B,EAA2Cx0D,IAAI,CAACy0D,eAAhD,CAHJ;AAIH;;;aACD,uBAAcz0D,IAAd,EAAoB;AAChB,eAAO,KAAKo6D,IAAL,KAAc;AAAE;AAAhB,WAAgC,KAAKuB,eAAL,CAAqB37D,IAArB,CAAvC;AACH;;;aACD,oBAAWvqH,EAAX,EAAe;AACX,YAAI,CAAC,KAAK0kL,KAAV,EAAiB;AACb;AACH;;AACD,YAAMn6D,IAAI,GAAGk5D,UAAU,CAACzjL,EAAD,EAAK,KAAKyoF,IAAL,CAAU06F,WAAV,CAAsB96L,aAA3B,CAAvB;;AACA,YAAI,CAACkiI,IAAL,EAAW;AACP;AACH;;AACD,YAAM47D,OAAO,GAAG,KAAKxB,IAArB;AACA,YAAMyB,WAAW,GAAG3G,UAAU,CAACl1D,IAAI,CAACzhI,OAAN,EAAe7N,QAAQ,CAACorD,aAAxB,CAA9B;AACA,YAAMggJ,uBAAuB,GAAG,KAAK1B,IAAL,KAAc;AAAE;AAAhB,WAC5B,KAAKF,cAAL,KAAwBl6D,IAAI,CAACR,QADD,IAE5B/pH,EAAE,KAAKuqH,IAAI,CAACzhI,OAFhB;;AAGA,YAAIs9L,WAAJ,EAAiB;AACb,eAAKzB,IAAL,GAAY;AAAE;AAAd;AACA,eAAKC,MAAL,CAAYj3H,KAAZ,CAAkB48D,IAAI,CAACR,QAAvB,EAAiCQ,IAAI,CAAC8yD,QAAtC;AACA,eAAKiJ,WAAL;AACH,SAJD,MAKK,IAAI,CAACD,uBAAL,EAA8B;AAC/B,eAAK1B,IAAL,GAAY;AAAE;AAAd;AACA,eAAKY,kBAAL;AACA,cAAMgB,aAAa,GAAG,KAAK3B,MAAL,CAAYl8D,QAAZ,CAAqB6B,IAAI,CAACR,QAA1B,EAAoCQ,IAAI,CAAC8yD,QAAzC,CAAtB;AACA,cAAMmJ,QAAQ,GAAGL,OAAO,KAAK;AAAE;AAAd,aAA8BI,aAA/C;;AACA,cAAI,CAACC,QAAL,EAAe;AACX,iBAAK5B,MAAL,CAAYj3H,KAAZ,CAAkB48D,IAAI,CAACR,QAAvB,EAAiCQ,IAAI,CAAC8yD,QAAtC;AACH;AACJ;AACJ;;;aACD,kBAASr9K,EAAT,EAAa;AACT,aAAKymL,gBAAL;AACA,YAAM/xE,SAAS,GAAGQ,kBAAkB,CAACl1G,EAAD,CAApC;;AACA,YAAI00G,SAAJ,EAAe;AACX,cAAM6V,MAAI,GAAGk5D,UAAU,CAAC/uE,SAAD,EAAY,KAAKjsB,IAAL,CAAU06F,WAAV,CAAsB96L,aAAlC,CAAvB;;AACA,cAAIkiI,MAAJ,EAAU;AACN,iBAAKq6D,MAAL,CAAYj3H,KAAZ,CAAkB48D,MAAI,CAACR,QAAvB,EAAiCQ,MAAI,CAAC8yD,QAAtC;AACA,iBAAKkI,kBAAL;AACA,iBAAKmB,SAAL;AACH;;AACDhyE,UAAAA,SAAS,CAACp8E,KAAV;AACH,SARD,MASK;AACD,eAAKitJ,kBAAL;AACH;;AACD,eAAO,CAAC,CAAC7wE,SAAT;AACH;;;aACD,yBAAgB;AACZ,eAAO,KAAKjsB,IAAL,IAAa,KAAKA,IAAL,CAAU81F,SAA9B;AACH;;;aACD,qBAAYtoD,cAAZ,EAA4BC,aAA5B,EAA2C;AACvC,aAAK+vD,QAAL,GAAgB,IAAIlC,kBAAJ,CAAuB9tD,cAAvB,EAAuCC,aAAvC,CAAhB;;AACA,YAAI,KAAKztC,IAAL,IAAa,KAAKA,IAAL,CAAU81F,SAAvB,IAAoC,KAAKoI,aAAL,GAAqB,CAAC,CAA9D,EAAiE;AAC7D,cAAMvJ,YAAY,GAAG,KAAKuJ,aAA1B;AACA,cAAMC,KAAK,GAAG3wD,cAAc,GAAGmnD,YAA/B;AACA,cAAMyJ,MAAM,GAAGzJ,YAAY,GAAGlnD,aAA9B;;AACA,cAAI0wD,KAAK,GAAG,CAAZ,EAAe;AACX,iBAAKhC,MAAL,CAAYj3H,KAAZ,CAAkBsoE,cAAc,GAAG,KAAKxtC,IAAL,CAAUo8F,UAA7C;AACH,WAFD,MAGK,IAAIgC,MAAM,GAAG,CAAb,EAAgB;AACjB,iBAAKjC,MAAL,CAAYj3H,KAAZ,CAAkBuoE,aAAa,GAAG,KAAKztC,IAAL,CAAUo8F,UAA5C;AACH;AACJ;AACJ;;;aACD,2BAAkB5uD,cAAlB,EAAkCC,aAAlC,EAAiD;AAC7C,aAAK4wD,cAAL,GAAsB,IAAI/C,kBAAJ,CAAuB9tD,cAAvB,EAAuCC,aAAvC,CAAtB;AACH;;;aACD,qBAAsD;AAAA,YAA5CnM,QAA4C,uEAAjC9lH,SAAiC;AAAA,YAAtBo5K,QAAsB,uEAAXp5K,SAAW;AAClD,aAAK0gL,IAAL,GAAY;AAAE;AAAd;AACA,aAAKC,MAAL,CAAYj3H,KAAZ,CAAkBo8D,QAAlB,EAA4BszD,QAA5B;AACA,eAAO,KAAK0J,UAAZ;AACH;;;aACD,4BAAmB/mL,EAAnB,EAAuB;AACnB,YAAMuqH,IAAI,GAAGk5D,UAAU,CAACzjL,EAAD,EAAK,KAAKyoF,IAAL,CAAU06F,WAAV,CAAsB96L,aAA3B,CAAvB;;AACA,YAAIkiI,IAAJ,EAAU;AACN,iBAAO,KAAKoyD,SAAL,CAAepyD,IAAI,CAACR,QAApB,EAA8BQ,IAAI,CAAC8yD,QAAnC,CAAP;AACH;AACJ;;;aACD,yBAA2B;AAAA,YAAbvzJ,IAAa,uEAAN,IAAM;AACvB,eAAO,KAAKk9J,iBAAL,CAAuB,IAAvB,EAA6Bl9J,IAA7B,CAAP;AACH;;;aACD,yBAA2B;AAAA,YAAbA,IAAa,uEAAN,IAAM;AACvB,eAAO,KAAKk9J,iBAAL,CAAuB,KAAvB,EAA8Bl9J,IAA9B,CAAP;AACH;;;aACD,gBAAO12B,MAAP,EAAe;AACX,aAAKA,MAAL,GAAcA,MAAd;AACA,aAAKwxL,MAAL,CAAYqC,QAAZ;AACH;;;aACD,oBAAW;AACP,eAAO,KAAKtC,IAAL,KAAc;AAAE;AAAhB,WAAgC,KAAKA,IAAL,KAAc;AAAE;AAAvD;AACH;;;aACD,uBAActzJ,KAAd,EAAqBC,GAArB,EAA0B;AACtB,eAAO,CAAC,KAAKm3D,IAAL,CAAU41F,cAAX,IAA6B/sJ,GAAG,GAAG,KAAKm3D,IAAL,CAAUojF,OAAV,CAAkBqb,iBAAlB,CAAoCr7L,MAAvE,IAAiF,KAAKi7L,cAAL,CAAoBK,UAApB,CAA+B91J,KAA/B,EAAsCC,GAAtC,CAAxF;AACH;;;aACD,2BAAkB81J,GAAlB,EAAuBt9J,IAAvB,EAA6B;AACzB,aAAK6yJ,SAAL;AACA,YAAIpqL,OAAO,GAAG60L,GAAG,GAAG,KAAKC,aAAL,EAAH,GAA0B,KAAKC,aAAL,EAA3C;;AACA,YAAIx9J,IAAI,IAAI,CAACv3B,OAAb,EAAsB;AAClBA,UAAAA,OAAO,GAAG60L,GAAG,GAAG,KAAKxC,MAAL,CAAYl2D,QAAZ,CAAqB,CAArB,CAAH,GAA6B,KAAKk2D,MAAL,CAAY12D,MAAZ,CAAmB,CAAnB,CAA1C;;AACA,cAAI37H,OAAJ,EAAa;AACT,gBAAM2qL,IAAG,GAAG,KAAK0H,MAAL,CAAY1H,GAAxB;AACA,gBAAMqK,MAAM,GAAGH,GAAG,GAAG,CAAH,GAAO,KAAKxC,MAAL,CAAY1G,aAAZ,CAA0BhB,IAA1B,CAAzB;AACA,iBAAK0H,MAAL,CAAYj3H,KAAZ,CAAkBuvH,IAAG,CAAClrK,KAAtB,EAA6Bu1K,MAA7B;AACH;AACJ;;AACD,YAAIh1L,OAAJ,EAAa;AACT,iBAAO,KAAKw0L,UAAZ;AACH,SAFD,MAGK;AACD,eAAKpC,IAAL,GAAY;AAAE;AAAd;AACA,eAAKC,MAAL,CAAYqC,QAAZ;AACH;;AACD,eAAO,IAAP;AACH;;;aACD,qBAAY;AACR,YAAM18D,IAAI,GAAG,KAAKq6D,MAAL,CAAYr6D,IAAzB;;AACA,YAAI,CAACA,IAAL,EAAW;AACP;AACH;;AACD,YAAMhqH,KAAK,GAAGgqH,IAAI,CAAC60D,UAAnB;AACA,YAAM1qE,SAAS,GAAGn0G,KAAK,IAAIA,KAAK,CAACqiL,QAAN,EAA3B;AACA,aAAK+B,IAAL,GAAYjwE,SAAS,GAAG;AAAE;AAAL,UAAqB;AAAE;AAA5C;AACA,aAAKkwE,MAAL,CAAYqC,QAAZ;;AACA,YAAIvyE,SAAJ,EAAe;AACX,eAAK4xE,WAAL;AACA/lL,UAAAA,KAAK,CAAC+3B,KAAN;AACH;AACJ;;;aACD,qBAAY;AACR,YAAMiyF,IAAI,GAAG,KAAKq6D,MAAL,CAAYr6D,IAAzB;;AACA,YAAI,CAACA,IAAL,EAAW;AACP;AACH;;AACD,YAAMhqH,KAAK,GAAGgqH,IAAI,CAAC60D,UAAnB;AACA,YAAM1qE,SAAS,GAAGn0G,KAAK,IAAIA,KAAK,CAACqiL,QAAN,EAA3B;;AACA,YAAI,CAACluE,SAAL,EAAgB;AACZ,eAAK6wE,kBAAL;AACH;;AACD,aAAKZ,IAAL,GAAY;AAAE;AAAd;AACA,aAAKC,MAAL,CAAYqC,QAAZ;AACH;;;aACD,4BAAmB;AACf,aAAK5C,SAAL,CAAe3nC,QAAf;AACH;;;aACD,8BAAqB;AACjB,aAAK2nC,SAAL,CAAevhF,UAAf;AACH;;;aACD,uBAAc;AACV,aAAK8hF,MAAL,CAAY1H,GAAZ,CAAgBv7D,KAAhB,CACKvlI,OADL,CACa,UAAAmuI,IAAI;AAAA,iBAAIA,IAAI,CAAC60D,UAAL,IAAmB70D,IAAI,CAAC60D,UAAL,CAAgB1iC,QAAhB,EAAvB;AAAA,SADjB;AAEH;;;aACD,yBAAgB;AACZ,eAAO,KAAKn+C,YAAL,CAAkBW,GAAlB,GAAwB,KAAK0lF,MAAL,CAAY4C,QAAZ,EAAxB,GAAiD,KAAK5C,MAAL,CAAY6C,SAAZ,EAAxD;AACH;;;aACD,yBAAgB;AACZ,eAAO,KAAKlpF,YAAL,CAAkBW,GAAlB,GAAwB,KAAK0lF,MAAL,CAAY6C,SAAZ,EAAxB,GAAkD,KAAK7C,MAAL,CAAY4C,QAAZ,EAAzD;AACH;;;aACD,yBAAgB3wI,IAAhB,EAAsB;AAAA;;AAClB,YAAI5sD,cAAc,GAAG,KAArB;AACA,YAAMi5H,QAAQ,GAAGrsE,IAAI,CAAC8zE,OAAL,IAAgB9zE,IAAI,CAAC+zE,OAAtC;AACA,YAAM53E,IAAI,GAAGkwE,QAAQ,GAAG,CAAH,GAAO,CAA5B;;AACA,YAAI,CAAC,KAAKwkE,aAAL,CAAmB7wI,IAAnB,CAAL,EAA+B;AAC3B;AACH;;AACD,YAAMqmI,GAAG,GAAG,KAAK0H,MAAL,CAAY1H,GAAxB;;AACA,gBAAQrmI,IAAI,CAACi9B,OAAb;AACI,eAAKgnB,2EAAL;AACI7wG,YAAAA,cAAc,GAAG,KAAK26L,MAAL,CAAYl2D,QAAZ,CAAqB17E,IAArB,CAAjB;AACA;;AACJ,eAAK8nD,yEAAL;AACI7wG,YAAAA,cAAc,GAAG,KAAK26L,MAAL,CAAY12D,MAAZ,CAAmBl7E,IAAnB,CAAjB;AACA;;AACJ,eAAK8nD,4EAAL;AACI7wG,YAAAA,cAAc,GAAG,KAAKo9L,aAAL,EAAjB;AACA;;AACJ,eAAKvsF,2EAAL;AACI7wG,YAAAA,cAAc,GAAG,KAAKq9L,aAAL,EAAjB;AACA;;AACJ,eAAKxsF,0EAAL;AACI,gBAAI,KAAK+iF,QAAL,CAAcU,SAAd,IAA2B,KAAK0H,QAApC,EAA8C;AAC1C,kBAAI0B,aAAa,GAAG,KAAKl/F,IAAL,CAAUo8F,UAAV,GAAuB,KAAKoB,QAAL,CAAc/vD,aAArC,GAAqD,CAAzE;;AACA,kBAAI,KAAK2nD,QAAL,CAAcE,iBAAlB,EAAqC;AACjC4J,gBAAAA,aAAa;AAChB;;AACDA,cAAAA,aAAa,GAAG5oK,IAAI,CAACD,GAAL,CAAS,KAAK2pE,IAAL,CAAU+1F,kBAAnB,EAAuCmJ,aAAvC,CAAhB;AACA,mBAAK/C,MAAL,CAAYj3H,KAAZ,CAAkBg6H,aAAlB;AACA19L,cAAAA,cAAc,GAAG,IAAjB;AACH,aARD,MASK,IAAI,KAAK4zL,QAAL,CAAc+J,QAAlB,EAA4B;AAC7B,mBAAKtqJ,IAAL,CAAUzR,GAAV,CAAc;AAAA,uBAAM,OAAI,CAACo4J,mBAAL,CAAyBzpB,QAAzB,EAAN;AAAA,eAAd;AACAvwK,cAAAA,cAAc,GAAG,IAAjB;AACH;;AACD;;AACJ,eAAK6wG,wEAAL;AACI,gBAAI,KAAK+iF,QAAL,CAAcU,SAAd,IAA2B,KAAK0H,QAApC,EAA8C;AAC1C,kBAAI4B,YAAY,GAAG,KAAK5B,QAAL,CAAc/vD,aAAd,GAA8B,KAAK+vD,QAAL,CAAchwD,cAA/D;AACA,kBAAIA,cAAc,GAAG,KAAKgwD,QAAL,CAAchwD,cAAnC;;AACA,kBAAI0xD,cAAa,GAAG5oK,IAAI,CAACF,GAAL,CAAS,KAAK4pE,IAAL,CAAUo8F,UAAnB,EAA+B5uD,cAAc,GAAG4xD,YAAjB,GAAgC,CAA/D,CAApB;;AACA,mBAAKjD,MAAL,CAAYj3H,KAAZ,CAAkBg6H,cAAlB;AACA19L,cAAAA,cAAc,GAAG,IAAjB;AACH,aAND,MAOK,IAAI,KAAK4zL,QAAL,CAAc+J,QAAlB,EAA4B;AAC7B,mBAAKtqJ,IAAL,CAAUzR,GAAV,CAAc;AAAA,uBAAM,OAAI,CAACo4J,mBAAL,CAAyBxpB,QAAzB,EAAN;AAAA,eAAd;AACAxwK,cAAAA,cAAc,GAAG,IAAjB;AACH;;AACD;;AACJ,eAAK6wG,sEAAL;AACI,gBAAIooB,QAAJ,EAAc;AACV,kBAAI,KAAKz6B,IAAL,CAAU81F,SAAd,EAAyB;AACrB,qBAAKqG,MAAL,CAAYj3H,KAAZ,CAAkB,KAAK86B,IAAL,CAAUo8F,UAA5B,EAAwC,CAAxC,EAA2C,KAA3C;AACH,eAFD,MAGK;AACD,qBAAKD,MAAL,CAAYj3H,KAAZ,CAAkB,KAAK7+C,KAAL,CAAWg5K,QAAX,CAAoB91K,KAAtC,EAA6C,CAA7C,EAAgD,KAAhD;AACH;AACJ,aAPD,MAQK;AACD,mBAAK4yK,MAAL,CAAYj3H,KAAZ,CAAkBuvH,GAAG,CAAClrK,KAAtB,EAA6B,CAA7B,EAAgC,KAAhC;AACH;;AACD/nB,YAAAA,cAAc,GAAG,IAAjB;AACA;;AACJ,eAAK6wG,qEAAL;AACI,gBAAIooB,QAAJ,EAAc;AACV,kBAAI,KAAKz6B,IAAL,CAAU81F,SAAd,EAAyB;AACrB,oBAAIwJ,YAAY,GAAG,KAAKt/F,IAAL,CAAU+1F,kBAA7B;;AACA,oBAAI,KAAK/1F,IAAL,CAAUs1F,iBAAd,EAAiC;AAC7BgK,kBAAAA,YAAY;AACf;;AACD,qBAAKnD,MAAL,CAAYj3H,KAAZ,CAAkBo6H,YAAlB,EAAgC,KAAKnD,MAAL,CAAY1G,aAAZ,EAAhC,EAA6D,KAA7D;AACH,eAND,MAOK;AACD,qBAAK0G,MAAL,CAAYj3H,KAAZ,CAAkB,KAAK7+C,KAAL,CAAW2vK,OAAX,CAAmBzsK,KAArC,EAA4C,KAAK4yK,MAAL,CAAY1G,aAAZ,CAA0B,KAAKpvK,KAAL,CAAW2vK,OAArC,CAA5C,EAA2F,KAA3F;AACH;AACJ,aAXD,MAYK;AACD,kBAAMx7E,SAAS,GAAG,KAAK2hF,MAAL,CAAY1G,aAAZ,CAA0BhB,GAA1B,CAAlB;;AACA,kBAAM3yD,MAAI,GAAG,KAAKz7G,KAAL,CAAWquK,QAAX,CAAoBl6E,SAApB,EAA+Bi6E,GAA/B,CAAb;;AACA,kBAAI3yD,MAAJ,EAAU;AACN,qBAAKq6D,MAAL,CAAYj3H,KAAZ,CAAkB48D,MAAI,CAACR,QAAvB,EAAiCQ,MAAI,CAAC8yD,QAAtC;AACH,eAFD,MAGK;AACD,qBAAKuH,MAAL,CAAYj3H,KAAZ,CAAkBuvH,GAAG,CAAClrK,KAAtB,EAA6BixF,SAA7B;AACH;AACJ;;AACDh5G,YAAAA,cAAc,GAAG,IAAjB;AACA;;AACJ,eAAK6wG,uEAAL;AACA,eAAKA,oEAAL;AACI,gBAAMkjF,SAAS,GAAGd,GAAG,CAACc,SAAtB;;AACA,gBAAIA,SAAJ,EAAe;AACX,mBAAK1gJ,IAAL,CAAUzR,GAAV,CAAc;AAAA,uBAAM,OAAI,CAACs4J,aAAL,CAAmB8D,SAAnB,CAA6BjK,SAA7B,CAAN;AAAA,eAAd;AACH,aAFD,MAGK,IAAI,KAAK4G,MAAL,CAAYr6D,IAAZ,CAAiB40D,gBAArB,EAAuC;AACxC,mBAAK7hJ,IAAL,CAAUzR,GAAV,CAAc;AAAA,uBAAM,OAAI,CAACu4J,cAAL,CAAoB6D,SAApB,CAA8B/K,GAAG,CAACE,YAAlC,EAAgDF,GAAG,CAACl5E,QAApD,CAAN;AAAA,eAAd;AACH,aAFI,MAGA;AACD,mBAAK0iF,SAAL;;AACA,kBAAI,CAAC,KAAK9B,MAAL,CAAYr6D,IAAZ,CAAiB60D,UAAjB,CAA4BsD,WAA5B,EAAL,EAAgD;AAC5Cz4L,gBAAAA,cAAc,GAAG,IAAjB;AACH;AACJ;;AACD;;AACJ;AACI,gBAAI,CAAC4sD,IAAI,CAAC8zE,OAAN,IAAiB,CAAC9zE,IAAI,CAACwuD,MAAvB,IAAiCy+E,oBAAoB,CAACjtI,IAAI,CAACrlD,GAAN,CAAzD,EAAqE;AACjE,mBAAKk1L,SAAL;AACH;;AAnGT;;AAqGA,YAAIz8L,cAAJ,EAAoB;AAChB4sD,UAAAA,IAAI,CAAC5sD,cAAL;AACH;AACJ;;;aACD,0BAAiB4sD,IAAjB,EAAuB;AACnB,YAAI,CAAC,KAAK6wI,aAAL,CAAmB7wI,IAAnB,CAAL,EAA+B;AAC3B;AACH;;AACD,YAAM4rH,OAAO,GAAG,CAAC5rH,IAAI,CAAC9zB,gBAAN,IAA0B8zB,IAAI,CAACi9B,OAAL,KAAiBgnB,uEAA3C,IAAyD+oF,WAAW,CAAChtI,IAAI,CAACqxI,UAAN,CAApF;;AACA,YAAIrxI,IAAI,CAACi9B,OAAL,KAAiBgnB,wEAAjB,IAAgCjkD,IAAI,CAACi9B,OAAL,KAAiBgnB,oEAAjD,IAA4D2nE,OAAhE,EAAyE;AACrE,eAAK2iB,SAAL;AACA,eAAKR,MAAL,CAAYj3H,KAAZ;AACA9W,UAAAA,IAAI,CAAChc,eAAL;AACH,SAJD,MAKK,IAAI8oJ,eAAe,CAAC9sI,IAAI,CAACi9B,OAAN,CAAf,IAAiC,KAAK8wG,MAAL,CAAYr6D,IAAZ,CAAiB60D,UAAjB,CAA4BsD,WAA5B,EAArC,EAAgF;AACjF,eAAKyF,eAAL,CAAqBtxI,IAArB;;AACA,cAAIA,IAAI,CAAC9zB,gBAAT,EAA2B;AACvB,iBAAKqiK,SAAL;AACH;AACJ;AACJ;;;aACD,uBAAcvuI,IAAd,EAAoB;AAChB,YAAI,KAAKytI,WAAL,CAAiB8D,aAAjB,EAAJ,EAAsC;AAClC,cAAM3lB,OAAO,GAAG5rH,IAAI,CAACi9B,OAAL,KAAiBgnB,uEAAjC;AACA,cAAMwb,MAAM,GAAGz/D,IAAI,CAACi9B,OAAL,KAAiBgnB,wEAAhC;AACA,cAAM/2G,QAAQ,GAAG4/L,eAAe,CAAC9sI,IAAI,CAACi9B,OAAN,CAAhC;;AACA,cAAI2uF,OAAJ,EAAa;AACT,iBAAK6hB,WAAL,CAAiBzC,SAAjB,CAA2BhrI,IAA3B;AACH,WAFD,MAGK,IAAIy/D,MAAJ,EAAY;AACb,iBAAKguE,WAAL,CAAiBzC,SAAjB,CAA2BhrI,IAA3B;AACA,iBAAKvf,EAAL,CAAQ/5C,aAAR;AACH,WAHI,MAIA,IAAIwG,QAAJ,EAAc;AACf,mBAAO,KAAP;AACH;AACJ;;AACD,aAAKygM,WAAL,CAAiB50L,IAAjB,CAAsBinD,IAAtB;AACA,eAAO,IAAP;AACH;;;aACD,yBAAgBA,IAAhB,EAAsB;AAClB,aAAK4tI,cAAL,GAAsB5tI,IAAI,CAACkzE,QAA3B;AACA,YAAMqzD,YAAY,GAAG,KAAKuJ,aAA1B;;AACA,YAAI,KAAKl+F,IAAL,IAAc,KAAKA,IAAL,CAAU81F,SAAV,IACd1nI,IAAI,CAACkzE,QAAL,IAAiB,KAAKthC,IAAL,CAAUo8F,UADb,IAEd,KAAKoB,QAFS,IAGd,CAAC,KAAKA,QAAL,CAAcoC,WAAd,CAA0BjL,YAA1B,CAHa,IAG8BA,YAAY,GAAG,CAAC,CAHhE,EAGoE;AAChE,eAAK8G,oBAAL,CAA0BhuM,QAA1B,CAAmC;AAAEgnM,YAAAA,GAAG,EAAEE;AAAP,WAAnC;AACH;;AACD,YAAI,KAAK30F,IAAL,CAAU41F,cAAV,IAA4BxnI,IAAI,CAACwmI,QAAL,IAAiB,KAAK50F,IAAL,CAAUojF,OAAV,CAAkBqb,iBAAlB,CAAoCr7L,MAArF,EAA6F;AACzF,cAAM0+H,MAAI,GAAG,KAAKw8D,UAAlB;;AACA,uCAAuB,KAAKj4K,KAAL,CAAW2uK,SAAX,CAAqBlzD,MAArB,CAAvB;AAAA,cAAQl5F,KAAR,0BAAQA,KAAR;AAAA,cAAeC,GAAf,0BAAeA,GAAf;;AACA,cAAI,CAACi5F,MAAL,EAAW;AACP,iBAAKm7D,WAAL,GAAmB,IAAnB;AACH;;AACD,cAAK,CAACn7D,MAAD,IAAS,KAAKo6D,IAAL,KAAc;AAAE;AAA1B,aAA6Cp6D,MAAI,IAAI,CAAC,KAAKu8D,cAAL,CAAoBK,UAApB,CAA+B91J,KAA/B,EAAsCC,GAAtC,CAA1D,EAAuG;AACnG,iBAAK4yJ,oBAAL,CAA0BhuM,QAA1B,CAAmC;AAAE41L,cAAAA,MAAM,EAAEj1H,IAAI,CAACwmI,QAAL,IAAiB,KAAKQ,QAAL,CAAcE,iBAAd,GAAkC,CAAlC,GAAsC,CAAvD;AAAV,aAAnC;AACH;AACJ;AACJ;;;aACD,oBAAWlnI,IAAX,EAAiB;AACb,YAAI89D,SAAS,CAAC99D,IAAI,CAACn3D,MAAN,CAAb,EAA4B;AACxB,eAAKilM,IAAL,GAAY;AAAE;AAAd;AACH,SAFD,MAGK;AACD;AACA;AACA,eAAKA,IAAL,GAAY;AAAE;AAAd;AACH;;AACD,aAAKY,kBAAL;AACA,aAAKX,MAAL,CAAYqC,QAAZ;AACH;;;aACD,wBAAe;AACX,aAAKtC,IAAL,GAAY;AAAE;AAAd;AACA,aAAKY,kBAAL;AACA,aAAKX,MAAL,CAAYqC,QAAZ;AACH;;;aACD,mBAAUpwI,IAAV,EAAgB;AACZ,YAAI,KAAK8tI,IAAL,KAAc;AAAE;AAApB,UAAkC;AAC9B,eAAKwD,eAAL,CAAqBtxI,IAArB;AACH,SAFD,MAGK,IAAI,KAAK8tI,IAAL,KAAc;AAAE;AAApB,UAAmC;AACpC,eAAK2D,gBAAL,CAAsBzxI,IAAtB;AACH;AACJ;;;aACD,oBAAW;AACP;AACA;AACA,YAAI,KAAK+tI,MAAL,CAAYr6D,IAAZ,CAAiB60D,UAAjB,CAA4BsD,WAA5B,EAAJ,EAA+C;AAC3C;AACA;AACA;AACH;;AACD,aAAK0C,SAAL;AACA,aAAKR,MAAL,CAAYj3H,KAAZ;AACH;;;;;;AAEL82C,EAAAA,iBAAiB,CAACjkF,IAAlB;AAAA,qBAA+GikF,iBAA/G,EAnxDuGruH,uDAmxDvG,CAAkJA,kDAAlJ,GAnxDuGA,uDAmxDvG,CAAwK8lM,gBAAxK,GAnxDuG9lM,uDAmxDvG,CAAqMypM,mBAArM,GAnxDuGzpM,uDAmxDvG,CAAqO0pM,oBAArO,GAnxDuG1pM,uDAmxDvG,CAAsQgqM,aAAtQ,GAnxDuGhqM,uDAmxDvG,CAAgSuqM,cAAhS,GAnxDuGvqM,uDAmxDvG,CAA2T4qM,SAA3T,GAnxDuG5qM,uDAmxDvG,CAAiVgrM,WAAjV,GAnxDuGhrM,uDAmxDvG,CAAyWA,6DAAzW,GAnxDuGA,uDAmxDvG,CAA0YkE,8EAA1Y,GAnxDuGlE,uDAmxDvG,CAA6amtH,kBAA7a;AAAA;;AACAkB,EAAAA,iBAAiB,CAAC9jF,KAAlB,kBApxDuGvqC,iEAoxDvG;AAAA,WAAmHquH,iBAAnH;AAAA,aAAmHA,iBAAnH;AAAA;SA7eMA;;;AA8eN;AAAA;AAAA;AAMA;AACA;AACA;;;IACMkqB;MAAAA;AACF,8BAAY3F,SAAZ,EAAuBu/D,uBAAvB,EAAgD5iF,iBAAhD,EAAmE;AAAA;;AAC/D,WAAKqjB,SAAL,GAAiBA,SAAjB;AACA,WAAKu/D,uBAAL,GAA+BA,uBAA/B;AACA,WAAK5iF,iBAAL,GAAyBA,iBAAzB;AACA,WAAK3gH,OAAL,GAAe,IAAIgE,wDAAJ,EAAf;AACA,WAAKw/L,uBAAL,GAA+B,CAA/B;AACA,WAAKC,gBAAL,GAAwB,EAAxB;AACA,WAAKC,gBAAL,GAAwB,KAAxB;AACA,WAAKt1L,MAAL,GAAc,KAAd;AACA,WAAKu1L,QAAL,GAAgB,KAAhB;AACA,WAAK/qC,gBAAL;AACH;;;;WACD,eAAoB;AAChB,YAAMgrC,YAAY,GAAG,KAAKpgF,QAAL,IAAiB,OAAO,KAAKA,QAAZ,KAAyB,QAA1C,IAAsD,KAAKA,QAAL,CAAcogF,YAAzF;;AACA,YAAI,CAAC,KAAKpgF,QAAN,IAAkBogF,YAAtB,EAAoC;AAChC,iBAAO,KAAP;AACH;;AACD,YAAMC,kBAAkB,GAAG,KAAKrgF,QAAL,CAAcsgF,UAAzC;AACA,YAAMC,eAAe,GAAG,OAAQF,kBAAR,KAAgC,QAAhC,IACpBzsF,SAAS,CAACysF,kBAAD,CADW,IAEpBA,kBAAkB,CAAClE,IAAnB,KAA4B,UAFR,IAGpBkE,kBAAkB,CAAC1uM,OAAnB,KAA+B,KAHX,IAIpB,CAAC0uM,kBAAkB,CAACD,YAJA,IAKpBC,kBAAkB,CAACn1E,IALvB;AAMA,eAAO,KAAKtgH,MAAL,IAAe21L,eAAtB;AACH;;;aACD,cAAKvgF,QAAL,EAAe;AACX,aAAKA,QAAL,GAAgBA,QAAhB;AACA,aAAKigF,gBAAL,GAAwB,EAAxB;;AACA,YAAIjgF,QAAQ,CAACsgF,UAAT,IAAuBtgF,QAAQ,CAACsgF,UAAT,CAAoB3uM,OAApB,KAAgC,KAA3D,EAAkE;AAC9D,cAAMghM,SAAQ,GAAG,KAAK6N,WAAL,EAAjB;;AACA,eAAKC,eAAL,GAAuB,IAAvB;;AACA,cAAIr4L,IAAI,GAAGuqL,SAAQ,CAAChoL,IAAT,EAAX;;AACA,iBAAO,CAACvC,IAAI,CAACs4L,IAAb,EAAmB;AACf,gBAAIt4L,IAAI,CAAClK,KAAL,IAAckK,IAAI,CAAClK,KAAL,CAAW5H,IAAX,KAAoB,MAAtC,EAA8C;AAC1C,kBAAMqqM,OAAO,GAAG;AACZnlF,gBAAAA,QAAQ,EAAEpzG,IAAI,CAAClK,KAAL,CAAWpS,IADT;AAEZ09B,gBAAAA,KAAK,EAAEphB,IAAI,CAAClK,KAAL,CAAWsrB;AAFN,eAAhB;;AAIA,kBAAIw2F,QAAQ,CAAC4gF,WAAT,CAAqBD,OAArB,CAAJ,EAAmC;AAC/B,qBAAKV,gBAAL,CAAsB73L,IAAI,CAAClK,KAAL,CAAWsrB,KAAjC,IAA0Cm3K,OAA1C;AACH,eAFD,MAGK;AACD,qBAAKF,eAAL,GAAuBhlL,SAAvB;AACH;AACJ;;AACDrT,YAAAA,IAAI,GAAGuqL,SAAQ,CAAChoL,IAAT,EAAP;AACH;;AACD,cAAI,KAAKs1L,gBAAL,CAAsB58L,MAAtB,KAAiC,CAArC,EAAwC;AACpC,iBAAKo9L,eAAL,GAAuB,KAAvB;AACH;AACJ;AACJ;;;aACD,oBAAWj3K,KAAX,EAAkB;AACd,YAAI,KAAKw2F,QAAL,IAAiB,KAAKp1G,MAA1B,EAAkC;AAC9B,iBAAO,KAAKrO,OAAL,CAAa5K,OAAb,IAAwBiiH,SAAS,CAAC,KAAKqsF,gBAAL,CAAsBz2K,KAAtB,CAAD,CAAxC;AACH;AACJ;;;aACD,qBAAYphB,IAAZ,EAAkB7a,KAAlB,EAAyB;AACrB,YAAI,KAAK4yM,QAAT,EAAmB;AACf,eAAKA,QAAL,GAAgB,KAAhB;AACA;AACH;;AACD,YAAI1hC,EAAJ;AACA,YAAMt8B,OAAO,GAAG50I,KAAK,CAAC40I,OAAN,IAAiB50I,KAAK,CAAC60I,OAAvC;;AACA,YAAI,KAAK7lI,OAAL,CAAa4/L,IAAb,KAAsB,QAAtB,IAAkCh6D,OAAlC,IAA6C,KAAKpI,UAAL,CAAgB3xH,IAAI,CAACohB,KAArB,CAAjD,EAA8E;AAC1Ei1I,UAAAA,EAAE,GAAG,KAAK58J,MAAL,CAAYuG,IAAZ,CAAL;AACH,SAFD,MAGK,IAAI,KAAK7L,OAAL,CAAa4/L,IAAb,KAAsB,UAA1B,EAAsC;AACvC,cAAIh6D,OAAO,IAAI,CAAC50I,KAAK,CAACokD,QAAtB,EAAgC;AAC5B8sH,YAAAA,EAAE,GAAG,KAAK58J,MAAL,CAAYuG,IAAZ,CAAL;AACH,WAFD,MAGK,IAAI7a,KAAK,CAACokD,QAAV,EAAoB;AACrB8sH,YAAAA,EAAE,GAAG,KAAKoiC,QAAL,CAAcz4L,IAAd,EAAoB+5H,OAApB,CAAL;AACH;AACJ;;AACD,YAAI,CAACvuB,SAAS,CAAC6qD,EAAD,CAAd,EAAoB;AAChBA,UAAAA,EAAE,GAAG,KAAKr7I,MAAL,CAAYhb,IAAZ,CAAL;AACA,eAAK63L,gBAAL,CAAsB73L,IAAI,CAACohB,KAA3B,IAAoC;AAChCgyF,YAAAA,QAAQ,EAAEpzG,IAAI,CAACtc,IADiB;AAEhC09B,YAAAA,KAAK,EAAEphB,IAAI,CAACohB;AAFoB,WAApC;AAIH;;AACD,YAAI,CAACi1I,EAAE,CAACqiC,YAAH,CAAgBz9L,MAAjB,IAA2B,CAACo7J,EAAE,CAACsiC,cAAH,CAAkB19L,MAAlD,EAA0D;AACtD;AACH;;AACDo7J,QAAAA,EAAE,CAACt8B,OAAH,GAAaA,OAAb;AACAs8B,QAAAA,EAAE,CAAC9sH,QAAH,GAAcpkD,KAAK,CAACokD,QAApB;AACA,aAAKn1C,OAAL,CAAa4K,IAAb,CAAkBq3J,EAAlB;AACH;;;aACD,gBAAOr2J,IAAP,EAAa;AACT,YAAI04L,YAAY,GAAG,EAAnB;AACA,YAAIC,cAAc,GAAG,EAArB;AACA,aAAKf,uBAAL,GAA+B53L,IAAI,CAACohB,KAApC;AACA,YAAMm3K,OAAO,GAAG;AAAEnlF,UAAAA,QAAQ,EAAEpzG,IAAI,CAACtc,IAAjB;AAAuB09B,UAAAA,KAAK,EAAEphB,IAAI,CAACohB;AAAnC,SAAhB;;AACA,YAAI,KAAKuwG,UAAL,CAAgB3xH,IAAI,CAACohB,KAArB,CAAJ,EAAiC;AAC7Bu3K,UAAAA,cAAc,CAAC59L,IAAf,CAAoBw9L,OAApB;AACH,SAFD,MAGK;AACDG,UAAAA,YAAY,CAAC39L,IAAb,CAAkBw9L,OAAlB;AACH;;AACD,eAAO;AACHI,UAAAA,cAAc,EAAEA,cADb;AAEHD,UAAAA,YAAY,EAAEA;AAFX,SAAP;AAIH;;;aACD,uBAAct3K,KAAd,EAAqB;AACjB,YAAMmpK,QAAQ,GAAG,KAAK6N,WAAL,EAAjB;;AACA,YAAI,KAAKN,gBAAL,IAAyB,KAAKnmE,UAAL,CAAgBvwG,KAAhB,CAA7B,EAAqD;AACjD,eAAK02K,gBAAL,GAAwB,KAAxB;AACH;;AACD,YAAI93L,IAAI,GAAGuqL,QAAQ,CAAChoL,IAAT,EAAX;;AACA,eAAO,CAACvC,IAAI,CAACs4L,IAAb,EAAmB;AACf,cAAIt4L,IAAI,CAAClK,KAAL,IAAckK,IAAI,CAAClK,KAAL,CAAW5H,IAAX,KAAoB,MAAlC,IAA4C8R,IAAI,CAAClK,KAAL,CAAWsrB,KAAX,KAAqBA,KAArE,EAA4E;AACxE,gBAAMw3K,YAAY,GAAG;AACjBl1M,cAAAA,IAAI,EAAEsc,IAAI,CAAClK,KAAL,CAAWpS,IADA;AAEjB09B,cAAAA,KAAK,EAAEphB,IAAI,CAAClK,KAAL,CAAWsrB;AAFD,aAArB;;AAIA,gBAAI,KAAKuwG,UAAL,CAAgBvwG,KAAhB,KAA0B,KAAKjtB,OAAL,CAAa4/L,IAAb,KAAsB,UAApD,EAAgE;AAC5D,qBAAO,KAAKt6L,MAAL,CAAYm/L,YAAZ,CAAP;AACH,aAFD,MAGK;AACD,qBAAO,KAAK59K,MAAL,CAAY49K,YAAZ,CAAP;AACH;AACJ;;AACD54L,UAAAA,IAAI,GAAGuqL,QAAQ,CAAChoL,IAAT,EAAP;AACH;AACJ;;;aACD,gBAAOvC,IAAP,EAAa;AACT,YAAI24L,cAAc,GAAG,EAArB;AACA,YAAID,YAAY,GAAG,EAAnB;AACA,aAAKd,uBAAL,GAA+B53L,IAAI,CAACohB,KAApC;;AACA,YAAI,CAAC,KAAKuwG,UAAL,CAAgB3xH,IAAI,CAACohB,KAArB,CAAL,EAAkC;AAC9Bs3K,UAAAA,YAAY,CAAC39L,IAAb,CAAkB;AAAEq4G,YAAAA,QAAQ,EAAEpzG,IAAI,CAACtc,IAAjB;AAAuB09B,YAAAA,KAAK,EAAEphB,IAAI,CAACohB;AAAnC,WAAlB;AACH;;AACD,aAAKy2K,gBAAL,CAAsBrsM,OAAtB,CAA8B,UAAC8gM,GAAD,EAAS;AACnC,cAAIA,GAAG,CAAClrK,KAAJ,KAAcphB,IAAI,CAACohB,KAAvB,EAA8B;AAC1Bu3K,YAAAA,cAAc,CAAC59L,IAAf,CAAoBuxL,GAApB;AACH;AACJ,SAJD;AAKA,eAAO;AACHqM,UAAAA,cAAc,EAAEA,cADb;AAEHD,UAAAA,YAAY,EAAEA;AAFX,SAAP;AAIH,QACD;;;;aACA,kBAASG,WAAT,EAAsB;AAClB,YAAMtO,QAAQ,GAAG,KAAK6N,WAAL,EAAjB;AACA,YAAIp4L,IAAI,GAAGuqL,QAAQ,CAAChoL,IAAT,EAAX;;AACA,eAAO,CAACvC,IAAI,CAACs4L,IAAb,EAAmB;AACf,cAAIt4L,IAAI,CAAClK,KAAL,IAAckK,IAAI,CAAClK,KAAL,CAAW5H,IAAX,KAAoB,MAAlC,IAA4C8R,IAAI,CAAClK,KAAL,CAAWpS,IAAX,KAAoBm1M,WAApE,EAAiF;AAC7E,gBAAMN,OAAO,GAAG;AACZnlF,cAAAA,QAAQ,EAAEpzG,IAAI,CAAClK,KAAL,CAAWpS,IADT;AAEZ09B,cAAAA,KAAK,EAAEphB,IAAI,CAAClK,KAAL,CAAWsrB;AAFN,aAAhB;;AAIA,gBAAI,KAAKuwG,UAAL,CAAgB4mE,OAAO,CAACn3K,KAAxB,CAAJ,EAAoC;AAChC,kBAAIi1I,EAAE,GAAG;AACLt8B,gBAAAA,OAAO,EAAE,KADJ;AAEL4+D,gBAAAA,cAAc,EAAE,CAACJ,OAAD,CAFX;AAGLG,gBAAAA,YAAY,EAAE;AAHT,eAAT;AAKA,mBAAKtkM,OAAL,CAAa4K,IAAb,CAAkBq3J,EAAlB;AACH;AACJ;;AACDr2J,UAAAA,IAAI,GAAGuqL,QAAQ,CAAChoL,IAAT,EAAP;AACH;AACJ;;;aACD,kBAASvC,IAAT,EAAe+5H,OAAf,EAAwB;AACpB,YAAI2+D,YAAY,GAAG,EAAnB;AACA,YAAIC,cAAc,GAAG,EAArB;AACA,YAAMl4J,KAAK,GAAGtS,IAAI,CAACD,GAAL,CAAS,KAAK0pK,uBAAd,EAAuC53L,IAAI,CAACohB,KAA5C,CAAd;AACA,YAAMsf,GAAG,GAAGvS,IAAI,CAACF,GAAL,CAAS,KAAK2pK,uBAAd,EAAuC53L,IAAI,CAACohB,KAA5C,CAAZ;AACA,YAAMmpK,QAAQ,GAAG,KAAK6N,WAAL,EAAjB;AACA,YAAI71L,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAX;;AACA,eAAO,CAACA,IAAI,CAAC+1L,IAAb,EAAmB;AACf,cAAI/1L,IAAI,CAACzM,KAAL,IAAcyM,IAAI,CAACzM,KAAL,CAAW5H,IAAX,KAAoB,MAAtC,EAA8C;AAC1C,gBAAMutH,GAAG,GAAGl5G,IAAI,CAACzM,KAAL,CAAWsrB,KAAvB;AACA,gBAAMm3K,OAAO,GAAG;AAAEnlF,cAAAA,QAAQ,EAAE7wG,IAAI,CAACzM,KAAL,CAAWpS,IAAvB;AAA6B09B,cAAAA,KAAK,EAAEq6F;AAApC,aAAhB;;AACA,gBAAI,CAACA,GAAG,GAAGh7E,KAAN,IAAeg7E,GAAG,GAAG/6E,GAAtB,KAA8B,KAAKixF,UAAL,CAAgBlW,GAAhB,CAA9B,IAAsD,CAACse,OAA3D,EAAoE;AAChE4+D,cAAAA,cAAc,CAAC59L,IAAf,CAAoBw9L,OAApB;AACH;;AACD,gBAAK98E,GAAG,IAAIh7E,KAAP,IAAgBg7E,GAAG,IAAI/6E,GAAxB,IAAgC,CAAC,KAAKixF,UAAL,CAAgBlW,GAAhB,CAArC,EAA2D;AACvDi9E,cAAAA,YAAY,CAAC39L,IAAb,CAAkBw9L,OAAlB;AACH;AACJ;;AACDh2L,UAAAA,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAP;AACH;;AACD,eAAO;AACHo2L,UAAAA,cAAc,EAAEA,cADb;AAEHD,UAAAA,YAAY,EAAEA;AAFX,SAAP;AAIH;;;aACD,mBAAUZ,gBAAV,EAA4B;AACxB,aAAKA,gBAAL,GAAwBA,gBAAxB;AACA,YAAIY,YAAY,GAAG,EAAnB;AACA,YAAIC,cAAc,GAAG,EAArB;AACA,YAAMpO,QAAQ,GAAG,KAAK6N,WAAL,EAAjB;AACA,YAAI71L,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAX;;AACA,eAAO,CAACA,IAAI,CAAC+1L,IAAb,EAAmB;AACf,cAAI/1L,IAAI,CAACzM,KAAL,IAAcyM,IAAI,CAACzM,KAAL,CAAW5H,IAAX,KAAoB,MAAtC,EAA8C;AAC1C,gBAAMutH,GAAG,GAAGl5G,IAAI,CAACzM,KAAL,CAAWsrB,KAAvB;AACA,gBAAMm3K,OAAO,GAAG;AAAEnlF,cAAAA,QAAQ,EAAE7wG,IAAI,CAACzM,KAAL,CAAWpS,IAAvB;AAA6B09B,cAAAA,KAAK,EAAEq6F;AAApC,aAAhB;;AACA,gBAAI,KAAKkW,UAAL,CAAgBlW,GAAhB,KAAwB,CAACq8E,gBAA7B,EAA+C;AAC3Ca,cAAAA,cAAc,CAAC59L,IAAf,CAAoBw9L,OAApB;AACH;;AACD,gBAAI,CAAC,KAAK5mE,UAAL,CAAgBlW,GAAhB,CAAD,IAAyBq8E,gBAA7B,EAA+C;AAC3CY,cAAAA,YAAY,CAAC39L,IAAb,CAAkBw9L,OAAlB;AACH;AACJ;;AACDh2L,UAAAA,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAP;AACH;;AACD,YAAI,CAACm2L,YAAY,CAACz9L,MAAd,IAAwB,CAAC09L,cAAc,CAAC19L,MAA5C,EAAoD;AAChD;AACH;;AACD,YAAIo7J,EAAE,GAAG;AACLt8B,UAAAA,OAAO,EAAE,IADJ;AAEL4+D,UAAAA,cAAc,EAAEA,cAFX;AAGLD,UAAAA,YAAY,EAAEA,YAHT;AAILnvJ,UAAAA,QAAQ,EAAE;AAJL,SAAT;AAMA,aAAKn1C,OAAL,CAAa4K,IAAb,CAAkBq3J,EAAlB;AACH;;;aACD,qBAAY6Q,UAAZ,EAAwB4xB,QAAxB,EAAkC;AAC9B,YAAIJ,YAAY,GAAG,EAAnB;AACA,YAAIC,cAAc,GAAG,EAArB;AACA,YAAMl4J,KAAK,GAAGtS,IAAI,CAACD,GAAL,CAASg5I,UAAT,EAAqB4xB,QAArB,CAAd;AACA,YAAMp4J,GAAG,GAAGvS,IAAI,CAACF,GAAL,CAASi5I,UAAT,EAAqB4xB,QAArB,CAAZ;AACA,YAAMvO,QAAQ,GAAG,KAAK6N,WAAL,EAAjB;AACA,YAAI71L,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAX;;AACA,eAAO,CAACA,IAAI,CAAC+1L,IAAb,EAAmB;AACf,cAAI/1L,IAAI,CAACzM,KAAL,IAAcyM,IAAI,CAACzM,KAAL,CAAW5H,IAAX,KAAoB,MAAtC,EAA8C;AAC1C,gBAAMutH,GAAG,GAAGl5G,IAAI,CAACzM,KAAL,CAAWsrB,KAAvB;AACA,gBAAMm3K,OAAO,GAAG;AAAEnlF,cAAAA,QAAQ,EAAE7wG,IAAI,CAACzM,KAAL,CAAWpS,IAAvB;AAA6B09B,cAAAA,KAAK,EAAEq6F;AAApC,aAAhB;;AACA,gBAAI,CAACA,GAAG,GAAGh7E,KAAN,IAAeg7E,GAAG,GAAG/6E,GAAtB,KAA8B,KAAKixF,UAAL,CAAgBlW,GAAhB,CAAlC,EAAwD;AACpDk9E,cAAAA,cAAc,CAAC59L,IAAf,CAAoBw9L,OAApB;AACH;;AACD,gBAAK98E,GAAG,IAAIh7E,KAAP,IAAgBg7E,GAAG,IAAI/6E,GAAxB,IAAgC,CAAC,KAAKixF,UAAL,CAAgBlW,GAAhB,CAArC,EAA2D;AACvDi9E,cAAAA,YAAY,CAAC39L,IAAb,CAAkBw9L,OAAlB;AACH;AACJ;;AACDh2L,UAAAA,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAP;AACH;;AACD,eAAO;AACHo2L,UAAAA,cAAc,EAAEA,cADb;AAEHD,UAAAA,YAAY,EAAEA;AAFX,SAAP;AAIH;;;WACD,eAAqB;AACjB,eAAO,KAAKL,eAAZ;AACH;;;WACD,eAAe;AACX,eAAO,KAAKR,gBAAL,CAAsBvjM,GAAtB,CAA0B,UAAC0L,IAAD,EAAU;AACvC,iBAAOA,IAAI,CAACohB,KAAZ;AACH,SAFM,EAEJz8B,MAFI,CAEG,UAACqc,CAAD;AAAA,iBAAO,OAAOA,CAAP,KAAa,QAApB;AAAA,SAFH,CAAP;AAGH;;;WACD,eAAc;AACV,YAAM+3L,cAAc,GAAG;AACnBf,UAAAA,YAAY,EAAE,KADK;AAEnBzuM,UAAAA,OAAO,EAAE,IAFU;AAGnBwqM,UAAAA,IAAI,EAAE;AAHa,SAAvB;;AAKA,YAAI,CAACvoF,SAAS,CAAC,KAAKoM,QAAN,CAAd,EAA+B;AAC3B,iBAAOmhF,cAAP;AACH;;AACD,YAAI,OAAO,KAAKnhF,QAAL,CAAcsgF,UAArB,KAAoC,SAAxC,EAAmD;AAC/C,iBAAO;AACHF,YAAAA,YAAY,EAAE,KADX;AAEHzuM,YAAAA,OAAO,EAAE,KAAKquH,QAAL,CAAcsgF,UAFpB;AAGHnE,YAAAA,IAAI,EAAE;AAHH,WAAP;AAKH,SAND,MAOK;AACD,iBAAO1xL,MAAM,CAACC,MAAP,CAAcy2L,cAAd,EAA8B,KAAKnhF,QAAL,CAAcsgF,UAA5C,CAAP;AACH;AACJ;;;aACD,uBAAc;AACV,aAAKc,mBAAL;AACH;;;aACD,sBAAa;AACT,eAAO;AACH53K,UAAAA,KAAK,EAAE,KAAK63K,kBAAL,CAAwB9/D,QAD5B;AAEH/lB,UAAAA,QAAQ,EAAE,KAAK6lF,kBAAL,CAAwB7lF;AAF/B,SAAP;AAIH;;;aACD,4BAAmB;AAAA;;AACf,YAAI,CAAC,KAAK8lF,qBAAV,EAAiC;AAC7B,eAAKA,qBAAL,GAA6B,KAAK9gE,SAAL,CAAeL,SAAf,CAAyB3yI,SAAzB,CAAmC,UAAC6gE,IAAD,EAAU;AACtE,gBAAI,OAAI,CAAC9xD,OAAL,CAAa5K,OAAb,IAAwB,CAAC,OAAI,CAAC4K,OAAL,CAAa6jM,YAAtC,IAAsD/xI,IAAI,CAAC/3D,IAAL,KAAc,aAAxE,EAAuF;AACnF,kBAAI,OAAI,CAACsU,MAAT,EAAiB;AACb,uBAAI,CAACqlB,WAAL,CAAiB;AAAEzG,kBAAAA,KAAK,EAAE6kC,IAAI,CAACkzE,QAAd;AAAwBz1I,kBAAAA,IAAI,EAAEuiE,IAAI,CAACmtD;AAAnC,iBAAjB,EAAgEntD,IAAI,CAAC00D,aAArE;AACH;AACJ;AACJ,WAN4B,CAA7B;AAOH;;AACD,YAAI,CAAC,KAAKw+E,qBAAV,EAAiC;AAC7B,eAAKA,qBAAL,GAA6B,KAAK/gE,SAAL,CAAemzD,aAAf,CAA6BnmM,SAA7B,CAAuC,UAAC6gE,IAAD,EAAU;AAC1E,mBAAI,CAACgzI,kBAAL,GAA0BhzI,IAA1B;;AACA,gBAAK,OAAI,CAAC9xD,OAAL,CAAa5K,OAAb,KAAyB,CAAC,OAAI,CAAC4K,OAAL,CAAa4/L,IAAd,IAAsB,OAAI,CAAC5/L,OAAL,CAAa4/L,IAAb,KAAsB,UAArE,KACD,CAAC,OAAI,CAAC5/L,OAAL,CAAa6jM,YADb,IAC6B/xI,IAAI,CAAC00D,aAAL,CAAmBpxE,QADrD,EACgE;AAC5D,kBAAI,OAAI,CAAC/mC,MAAT,EAAiB;AACbyjD,gBAAAA,IAAI,CAAC00D,aAAL,CAAmBthH,cAAnB;;AACA,uBAAI,CAAC07G,iBAAL,CAAuBqkF,kBAAvB,CAA0CnzI,IAAI,CAAC00D,aAAL,CAAmB7rH,MAA7D;AACH;AACJ;AACJ,WAT4B,CAA7B;AAUH;;AACD,YAAI,KAAK6oM,uBAAL,IAAgC,CAAC,KAAK0B,uBAA1C,EAAmE;AAC/D,eAAKA,uBAAL,GAA+B,KAAK1B,uBAAL,CAA6BvjM,OAA7B,CAAqChP,SAArC,CAA+C,UAAC6gE,IAAD,EAAU;AACpF,gBAAI,OAAI,CAACzjD,MAAT,EAAiB;AACb,kBAAIgpG,SAAS,CAACvlD,IAAI,CAACs2C,MAAN,CAAT,IAA0Bt2C,IAAI,CAACs2C,MAAL,KAAgB,QAA9C,EAAwD;AACpD,uBAAI,CAAC+8F,QAAL,CAAcrzI,IAAI,CAACjmD,IAAnB;AACH;AACJ;AACJ,WAN8B,CAA/B;AAOH;AACJ;;;aACD,uBAAc;AACV,YAAMu5L,QAAQ,GAAG,KAAK3hF,QAAL,CAAc4d,IAAd,CAAmB+jE,QAAnB,EAAjB;;AACA,YAAI,CAACA,QAAL,EAAe;AACX;AACH;;AACD,eAAOA,QAAQ,CAAChP,QAAD,CAAR,EAAP;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAK2O,qBAAT,EAAgC;AAC5B,eAAKA,qBAAL,CAA2B3zM,WAA3B;AACA,eAAK2zM,qBAAL,GAA6B,IAA7B;AACH;;AACD,YAAI,KAAKC,qBAAT,EAAgC;AAC5B,eAAKA,qBAAL,CAA2B5zM,WAA3B;AACA,eAAK4zM,qBAAL,GAA6B,IAA7B;AACH;;AACD,YAAI,KAAKE,uBAAT,EAAkC;AAC9B,eAAKA,uBAAL,CAA6B9zM,WAA7B;AACA,eAAK8zM,uBAAL,GAA+B,IAA/B;AACH;AACJ;;;;;;AAELt7D,EAAAA,gBAAgB,CAACnuG,IAAjB;AAAA,qBAA8GmuG,gBAA9G,EAjnEuGv4I,uDAinEvG,CAAgJ8lM,gBAAhJ,GAjnEuG9lM,uDAinEvG,CAA6KqmM,uBAA7K,GAjnEuGrmM,uDAinEvG,CAAiNquH,iBAAjN;AAAA;;AACAkqB,EAAAA,gBAAgB,CAAChuG,KAAjB,kBAlnEuGvqC,iEAknEvG;AAAA,WAAkHu4I,gBAAlH;AAAA,aAAkHA,gBAAlH;AAAA;SApVMA;;;AAqVN;AAAA;AAAA;AAIA;AACA;AACA;;;IACMy7D;MAAAA;AACF,kCAAYphE,SAAZ,EAAuBu/D,uBAAvB,EAAgD5iF,iBAAhD,EAAmE;AAAA;;AAC/D,WAAKqjB,SAAL,GAAiBA,SAAjB;AACA,WAAKu/D,uBAAL,GAA+BA,uBAA/B;AACA,WAAK5iF,iBAAL,GAAyBA,iBAAzB;AACA,WAAK3gH,OAAL,GAAe,IAAIgE,wDAAJ,EAAf;AACA,WAAKqhM,YAAL,GAAoB,IAAIrhM,wDAAJ,EAApB;AACA,WAAKy/L,gBAAL,GAAwB,EAAxB;AACA,WAAKr1L,MAAL,GAAc,KAAd;AACA,WAAKu1L,QAAL,GAAgB,KAAhB;AACA,WAAK2B,kBAAL,GAA0B,KAA1B;AACA,WAAKC,iBAAL,GAAyB;AAAEC,QAAAA,OAAO,EAAE,CAAX;AAAcC,QAAAA,SAAS,EAAE;AAAzB,OAAzB;AACA,WAAKC,yBAAL,GAAiC,CAAjC;AACA,WAAKC,yBAAL,GAAiC,CAAjC;AACA,WAAK/sC,gBAAL;AACH;;;;WACD,eAAoB;AAChB,YAAMgrC,YAAY,GAAG,KAAKpgF,QAAL,IAAiB,OAAO,KAAKA,QAAZ,KAAyB,QAA1C,IAAsD,KAAKA,QAAL,CAAcogF,YAAzF;;AACA,YAAI,CAAC,KAAKpgF,QAAN,IAAkBogF,YAAtB,EAAoC;AAChC,iBAAO,KAAP;AACH;;AACD,YAAMC,kBAAkB,GAAG,KAAKrgF,QAAL,CAAcsgF,UAAzC;AACA,YAAMC,eAAe,GAAG,OAAQF,kBAAR,KAAgC,QAAhC,IACpBzsF,SAAS,CAACysF,kBAAD,CADW,IAEpBA,kBAAkB,CAAClE,IAAnB,KAA4B,UAFR,IAGpBkE,kBAAkB,CAACt+D,IAHC,IAIpBs+D,kBAAkB,CAAC1uM,OAAnB,KAA+B,KAJX,IAKpB0uM,kBAAkB,CAACn1E,IALvB;AAMA,eAAO,KAAKtgH,MAAL,IAAe21L,eAAtB;AACH;;;aACD,cAAKvgF,QAAL,EAAe;AAAA;;AACX,aAAKA,QAAL,GAAgBA,QAAhB;AACA,aAAKigF,gBAAL,GAAwB,EAAxB;;AACA,YAAIjgF,QAAQ,CAACsgF,UAAT,IAAuBtgF,QAAQ,CAACsgF,UAAT,CAAoB3uM,OAApB,KAAgC,KAA3D,EAAkE;AAC9D,cAAMghM,UAAQ,GAAG,KAAK6N,WAAL,EAAjB;;AACA,cAAIp4L,IAAI,GAAGuqL,UAAQ,CAAChoL,IAAT,EAAX;;AACA,iBAAO,CAACvC,IAAI,CAACs4L,IAAb,EAAmB;AACf,gBAAIt4L,IAAI,CAAClK,KAAL,IAAckK,IAAI,CAAClK,KAAL,CAAW5H,IAAX,KAAoB,MAAtC,EAA8C;AAAA;AAC1C,oBAAMqqM,OAAO,GAAG;AACZnlF,kBAAAA,QAAQ,EAAEpzG,IAAI,CAAClK,KAAL,CAAWpS,IADT;AAEZ09B,kBAAAA,KAAK,EAAEphB,IAAI,CAAClK,KAAL,CAAWsrB;AAFN,iBAAhB;AAIAw2F,gBAAAA,QAAQ,CAACqjE,OAAT,CAAiBzvL,OAAjB,CAAyB,UAAAwuM,GAAG,EAAI;AAC5B,sBAAMC,gBAAgB,GAAGriF,QAAQ,CAACsiF,YAAT,CAAsB3B,OAAtB,EAA+ByB,GAA/B,EAAoCA,GAAG,CAACG,SAAxC,CAAzB;;AACA,sBAAIF,gBAAgB,CAACl9K,QAArB,EAA+B;AAC3B,2BAAI,CAAC86K,gBAAL,CAAsB98L,IAAtB,CAA2Bk/L,gBAAgB,CAACj6L,IAA5C;AACH;AACJ,iBALD;AAL0C;AAW7C;;AACDA,YAAAA,IAAI,GAAGuqL,UAAQ,CAAChoL,IAAT,EAAP;AACH;AACJ;AACJ;;;aACD,wBAAevC,IAAf,EAAqBg6L,GAArB,EAA0B;AACtB,YAAI,KAAKpiF,QAAL,IAAiB,KAAKp1G,MAA1B,EAAkC;AAC9B,cAAMy3L,gBAAgB,GAAG,KAAKriF,QAAL,CAAcsiF,YAAd,CAA2B;AAAE9mF,YAAAA,QAAQ,EAAEpzG,IAAI,CAACtc,IAAjB;AAAuB09B,YAAAA,KAAK,EAAEphB,IAAI,CAACohB;AAAnC,WAA3B,EAAuE44K,GAAvE,EAA4EA,GAAG,CAACG,SAAhF,CAAzB;AACA,iBAAO,KAAKhmM,OAAL,CAAa5K,OAAb,IAAwB0wM,gBAAgB,CAACl9K,QAAhD;AACH;;AACD,eAAO,KAAP;AACH;;;aACD,qBAAY/c,IAAZ,EAAkB7a,KAAlB,EAAyB;AACrB,YAAI,KAAK4yM,QAAT,EAAmB;AACf,eAAKA,QAAL,GAAgB,KAAhB;AACA;AACH;;AACD,YAAI1hC,EAAJ;AACA,YAAMt8B,OAAO,GAAG50I,KAAK,CAAC40I,OAAN,IAAiB50I,KAAK,CAAC60I,OAAvC;;AACA,YAAI,KAAK7lI,OAAL,CAAa4/L,IAAb,KAAsB,QAAtB,IAAkCh6D,OAAlC,IAA6C,KAAKqgE,cAAL,CAAoBp6L,IAApB,EAA0BA,IAAI,CAACk7K,MAA/B,CAAjD,EAAyF;AACrF7kB,UAAAA,EAAE,GAAG,KAAK58J,MAAL,CAAYuG,IAAZ,CAAL;AACH,SAFD,MAGK,IAAI,KAAK7L,OAAL,CAAa4/L,IAAb,KAAsB,UAA1B,EAAsC;AACvC,cAAIh6D,OAAO,IAAI,CAAC50I,KAAK,CAACokD,QAAtB,EAAgC;AAC5B8sH,YAAAA,EAAE,GAAG,KAAK58J,MAAL,CAAYuG,IAAZ,CAAL;AACH,WAFD,MAGK,IAAI7a,KAAK,CAACokD,QAAV,EAAoB;AACrB,gBAAM8wJ,aAAa,GAAGlsK,IAAI,CAACD,GAAL,CAAS,KAAK4rK,yBAAd,EAAyC95L,IAAI,CAACohB,KAA9C,CAAtB;AACA,gBAAMk5K,aAAa,GAAGnsK,IAAI,CAACD,GAAL,CAAS,KAAK6rK,yBAAd,EAAyC/5L,IAAI,CAACk7K,MAAL,CAAYif,SAArD,CAAtB;AACA,gBAAMI,WAAW,GAAGpsK,IAAI,CAACF,GAAL,CAAS,KAAK6rK,yBAAd,EAAyC95L,IAAI,CAACohB,KAA9C,CAApB;AACA,gBAAMo5K,WAAW,GAAGrsK,IAAI,CAACF,GAAL,CAAS,KAAK8rK,yBAAd,EAAyC/5L,IAAI,CAACk7K,MAAL,CAAYif,SAArD,CAApB;AACA9jC,YAAAA,EAAE,GAAG,KAAKokC,WAAL,CAAiBJ,aAAjB,EAAgCC,aAAhC,EAA+CC,WAA/C,EAA4DC,WAA5D,CAAL;AACH;AACJ;;AACD,YAAI,CAAChvF,SAAS,CAAC6qD,EAAD,CAAd,EAAoB;AAChBA,UAAAA,EAAE,GAAG,KAAKr7I,MAAL,CAAYhb,IAAZ,CAAL;AACA,eAAK63L,gBAAL,GAAwB,CAAC,KAAK8B,iBAAN,CAAxB;AACH;;AACD,YAAI,CAACtjC,EAAE,CAACqkC,aAAH,CAAiBz/L,MAAlB,IAA4B,CAACo7J,EAAE,CAACskC,eAAH,CAAmB1/L,MAApD,EAA4D;AACxD;AACH;;AACDo7J,QAAAA,EAAE,CAACt8B,OAAH,GAAaA,OAAb;AACAs8B,QAAAA,EAAE,CAAC9sH,QAAH,GAAcpkD,KAAK,CAACokD,QAApB;AACA,aAAKn1C,OAAL,CAAa4K,IAAb,CAAkBq3J,EAAlB;AACH;;;aACD,gBAAOr2J,IAAP,EAAa;AACT,YAAI06L,aAAa,GAAG,EAApB;AACA,YAAIC,eAAe,GAAG,EAAtB;AACA,aAAKhB,iBAAL,GACI,KAAK/hF,QAAL,CAAcsiF,YAAd,CAA2B;AAAE9mF,UAAAA,QAAQ,EAAEpzG,IAAI,CAACtc,IAAjB;AAAuB09B,UAAAA,KAAK,EAAEphB,IAAI,CAACohB;AAAnC,SAA3B,EAAuEphB,IAAI,CAACk7K,MAA5E,EAAoFl7K,IAAI,CAACk7K,MAAL,CAAYif,SAAhG,EAA2Gn6L,IAD/G;AAEA,aAAK85L,yBAAL,GAAiC95L,IAAI,CAACohB,KAAtC;AACA,aAAK24K,yBAAL,GAAiC/5L,IAAI,CAACk7K,MAAL,CAAYif,SAA7C;;AACA,YAAI,KAAKC,cAAL,CAAoBp6L,IAApB,EAA0BA,IAAI,CAACk7K,MAA/B,CAAJ,EAA4C;AACxCyf,UAAAA,eAAe,CAAC5/L,IAAhB,CAAqB,KAAK4+L,iBAA1B;AACH,SAFD,MAGK;AACDe,UAAAA,aAAa,CAAC3/L,IAAd,CAAmB,KAAK4+L,iBAAxB;AACH;;AACD,eAAO;AACHgB,UAAAA,eAAe,EAAfA,eADG;AAEHD,UAAAA,aAAa,EAAbA;AAFG,SAAP;AAIH;;;aACD,gBAAO16L,IAAP,EAAa;AAAA;;AACT,YAAM06L,aAAa,GAAG,EAAtB;AACA,YAAMC,eAAe,GAAG,EAAxB;AACA,aAAKhB,iBAAL,GACI,KAAK/hF,QAAL,CAAcsiF,YAAd,CAA2B;AAAE9mF,UAAAA,QAAQ,EAAEpzG,IAAI,CAACtc,IAAjB;AAAuB09B,UAAAA,KAAK,EAAEphB,IAAI,CAACohB;AAAnC,SAA3B,EAAuEphB,IAAI,CAACk7K,MAA5E,EAAoFl7K,IAAI,CAACk7K,MAAL,CAAYif,SAAhG,EAA2Gn6L,IAD/G;AAEA,aAAK85L,yBAAL,GAAiC95L,IAAI,CAACohB,KAAtC;AACA,aAAK24K,yBAAL,GAAiC/5L,IAAI,CAACk7K,MAAL,CAAYif,SAA7C;;AACA,YAAI,CAAC,KAAKC,cAAL,CAAoBp6L,IAApB,EAA0BA,IAAI,CAACk7K,MAA/B,CAAL,EAA6C;AACzCwf,UAAAA,aAAa,CAAC3/L,IAAd,CAAmB,KAAK4+L,iBAAxB;AACH;;AACD,aAAK9B,gBAAL,CAAsBrsM,OAAtB,CAA8B,UAACovM,YAAD,EAAkB;AAC5C,cAAIA,YAAY,CAAChB,OAAb,KAAyB,OAAI,CAACD,iBAAL,CAAuBC,OAAhD,IAA2DgB,YAAY,CAACf,SAAb,KAA2B,OAAI,CAACF,iBAAL,CAAuBE,SAAjH,EAA4H;AACxHc,YAAAA,eAAe,CAAC5/L,IAAhB,CAAqB6/L,YAArB;AACH;AACJ,SAJD;AAKA,eAAO;AACHD,UAAAA,eAAe,EAAfA,eADG;AAEHD,UAAAA,aAAa,EAAbA;AAFG,SAAP;AAIH,QACD;;;;aACA,kBAAS7B,WAAT,EAAsB;AAAA;;AAClB,YAAMtO,QAAQ,GAAG,KAAK6N,WAAL,EAAjB;AACA,YAAIp4L,IAAI,GAAGuqL,QAAQ,CAAChoL,IAAT,EAAX;AACA,YAAIg2L,OAAJ;;AACA,eAAO,CAACv4L,IAAI,CAACs4L,IAAb,EAAmB;AACf,cAAIt4L,IAAI,CAAClK,KAAL,IAAckK,IAAI,CAAClK,KAAL,CAAW5H,IAAX,KAAoB,MAAlC,IAA4C8R,IAAI,CAAClK,KAAL,CAAWpS,IAAX,KAAoBm1M,WAApE,EAAiF;AAC7EN,YAAAA,OAAO,GAAG;AACNnlF,cAAAA,QAAQ,EAAEpzG,IAAI,CAAClK,KAAL,CAAWpS,IADf;AAEN09B,cAAAA,KAAK,EAAEphB,IAAI,CAAClK,KAAL,CAAWsrB;AAFZ,aAAV;AAIA;AACH;;AACDphB,UAAAA,IAAI,GAAGuqL,QAAQ,CAAChoL,IAAT,EAAP;AACH;;AACD,YAAIg2L,OAAJ,EAAa;AACT,cAAMsC,aAAa,GAAG,KAAKhD,gBAAL,CAAsBlzM,MAAtB,CAA6B,UAAAi2M,YAAY,EAAI;AAC/D,gBAAME,SAAS,GAAG,OAAI,CAACljF,QAAL,CAAcsiF,YAAd,CAA2B3B,OAA3B,EAAoC,IAApC,EAA0C,IAA1C,EAAgDv4L,IAAlE;;AACA,mBAAO46L,YAAY,CAAChB,OAAb,KAAyBkB,SAAS,CAAClB,OAA1C;AACH,WAHqB,CAAtB;;AAIA,cAAIiB,aAAa,CAAC5/L,MAAlB,EAA0B;AACtB,gBAAIo7J,EAAE,GAAG;AACLt8B,cAAAA,OAAO,EAAE,KADJ;AAEL4gE,cAAAA,eAAe,EAAEE,aAFZ;AAGLH,cAAAA,aAAa,EAAE;AAHV,aAAT;AAKA,iBAAKtmM,OAAL,CAAa4K,IAAb,CAAkBq3J,EAAlB;AACH;AACJ;AACJ;;;aACD,qBAAYgkC,aAAZ,EAA2BC,aAA3B,EAA0CC,WAA1C,EAAuDC,WAAvD,EAAoE;AAAA;;AAChE,YAAME,aAAa,GAAG,EAAtB;AACA,YAAMC,eAAe,GAAG,EAAxB;AACA,YAAMI,iBAAiB,GAAG5sK,IAAI,CAACD,GAAL,CAASmsK,aAAT,EAAwBE,WAAxB,CAA1B;AACA,YAAMS,iBAAiB,GAAG7sK,IAAI,CAACD,GAAL,CAASosK,aAAT,EAAwBE,WAAxB,CAA1B;AACA,YAAMS,eAAe,GAAG9sK,IAAI,CAACF,GAAL,CAASosK,aAAT,EAAwBE,WAAxB,CAAxB;AACA,YAAMW,eAAe,GAAG/sK,IAAI,CAACF,GAAL,CAASqsK,aAAT,EAAwBE,WAAxB,CAAxB;AACA,YAAMjQ,QAAQ,GAAG,KAAK6N,WAAL,EAAjB;AACA,YAAI71L,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAX;;AACA,eAAO,CAACA,IAAI,CAAC+1L,IAAb,EAAmB;AACf,cAAI/1L,IAAI,CAACzM,KAAL,IAAcyM,IAAI,CAACzM,KAAL,CAAW5H,IAAX,KAAoB,MAAtC,EAA8C;AAAA;AAC1C,kBAAMutH,GAAG,GAAGl5G,IAAI,CAACzM,KAAL,CAAWsrB,KAAvB;AACA,kBAAM19B,IAAI,GAAG6e,IAAI,CAACzM,KAAL,CAAWpS,IAAxB;AACA,kBAAM60M,OAAO,GAAG;AACZnlF,gBAAAA,QAAQ,EAAE1vH,IADE;AAEZ09B,gBAAAA,KAAK,EAAEq6F;AAFK,eAAhB;;AAIA,qBAAI,CAAC7D,QAAL,CAAcqjE,OAAd,CAAsBzvL,OAAtB,CAA8B,UAAAwuM,GAAG,EAAI;AACjC,4CAAiB,OAAI,CAACpiF,QAAL,CAAcsiF,YAAd,CAA2B3B,OAA3B,EAAoCyB,GAApC,EAAyCA,GAAG,CAACG,SAA7C,CAAjB;AAAA,oBAAQn6L,IAAR,yBAAQA,IAAR;;AACA,oBAAM+c,QAAQ,GAAG,OAAI,CAACq9K,cAAL,CAAoB73L,IAAI,CAACzM,KAAzB,EAAgCkkM,GAAhC,CAAjB;;AACA,oBAAMmB,YAAY,GAAGJ,iBAAiB,IAAIt/E,GAArB,IAA4BA,GAAG,IAAIw/E,eAAxD;AACA,oBAAMG,YAAY,GAAGJ,iBAAiB,IAAIhB,GAAG,CAACG,SAAzB,IAAsCH,GAAG,CAACG,SAAJ,IAAiBe,eAA5E;AACA,oBAAMG,iBAAiB,GAAGF,YAAY,IAAIC,YAA1C;;AACA,oBAAI,CAACC,iBAAD,IAAsBt+K,QAA1B,EAAoC;AAChC49K,kBAAAA,eAAe,CAAC5/L,IAAhB,CAAqBiF,IAArB;AACH;;AACD,oBAAIq7L,iBAAiB,IAAI,CAACt+K,QAA1B,EAAoC;AAChC29K,kBAAAA,aAAa,CAAC3/L,IAAd,CAAmBiF,IAAnB;AACH;AACJ,eAZD;AAP0C;AAoB7C;;AACDuC,UAAAA,IAAI,GAAGgoL,QAAQ,CAAChoL,IAAT,EAAP;AACH;;AACD,eAAO;AACHo4L,UAAAA,eAAe,EAAfA,eADG;AAEHD,UAAAA,aAAa,EAAbA;AAFG,SAAP;AAIH;;;WACD,eAAc;AACV,YAAM3B,cAAc,GAAG;AACnBf,UAAAA,YAAY,EAAE,KADK;AAEnBzuM,UAAAA,OAAO,EAAE,IAFU;AAGnBwqM,UAAAA,IAAI,EAAE;AAHa,SAAvB;;AAKA,YAAI,CAACvoF,SAAS,CAAC,KAAKoM,QAAN,CAAd,EAA+B;AAC3B,iBAAOmhF,cAAP;AACH;;AACD,YAAI,OAAO,KAAKnhF,QAAL,CAAcsgF,UAArB,KAAoC,SAAxC,EAAmD;AAC/C,iBAAO;AACHF,YAAAA,YAAY,EAAE,KADX;AAEHzuM,YAAAA,OAAO,EAAE,KAAKquH,QAAL,CAAcsgF,UAFpB;AAGHnE,YAAAA,IAAI,EAAE;AAHH,WAAP;AAKH,SAND,MAOK;AACD,iBAAO1xL,MAAM,CAACC,MAAP,CAAcy2L,cAAd,EAA8B,KAAKnhF,QAAL,CAAcsgF,UAA5C,CAAP;AACH;AACJ;;;aACD,uBAAc;AACV,aAAKc,mBAAL;AACH;;;aACD,4BAAmB;AAAA;;AACf,YAAI,CAAC,KAAKE,qBAAV,EAAiC;AAC7B,eAAKA,qBAAL,GAA6B,KAAK9gE,SAAL,CAAeL,SAAf,CAAyB3yI,SAAzB,CAAmC,UAAC6gE,IAAD,EAAU;AACtE,gBAAI,OAAI,CAAC9xD,OAAL,CAAa5K,OAAb,IAAwB,CAAC,OAAI,CAAC4K,OAAL,CAAa6jM,YAAtC,IAAsD/xI,IAAI,CAAC/3D,IAAL,KAAc,aAAxE,EAAuF;AACnF,kBAAI,OAAI,CAACsU,MAAT,EAAiB;AACb,uBAAI,CAACqlB,WAAL,CAAiB;AAAEzG,kBAAAA,KAAK,EAAE6kC,IAAI,CAACkzE,QAAd;AAAwBz1I,kBAAAA,IAAI,EAAEuiE,IAAI,CAACmtD,QAAnC;AAA6C8nE,kBAAAA,MAAM,EAAEj1H,IAAI,CAACi1H;AAA1D,iBAAjB,EAAqFj1H,IAAI,CAAC00D,aAA1F;AACH;AACJ;AACJ,WAN4B,CAA7B;AAOH;;AACD,YAAI,CAAC,KAAKw+E,qBAAV,EAAiC;AAC7B,eAAKA,qBAAL,GAA6B,KAAK/gE,SAAL,CAAemzD,aAAf,CAA6BnmM,SAA7B,CAAuC,UAAC6gE,IAAD,EAAU;AAC1E,mBAAI,CAACgzI,kBAAL,GAA0BhzI,IAA1B;;AACA,gBAAI,OAAI,CAAC9xD,OAAL,CAAa5K,OAAb,KAAyB,CAAC,OAAI,CAAC4K,OAAL,CAAa4/L,IAAd,IAAsB,OAAI,CAAC5/L,OAAL,CAAa4/L,IAAb,KAAsB,UAArE,KACA,CAAC,OAAI,CAAC5/L,OAAL,CAAa6jM,YADd,IAC8B/xI,IAAI,CAAC00D,aAAL,CAAmBpxE,QADrD,EAC+D;AAC3D,kBAAI,OAAI,CAAC/mC,MAAT,EAAiB;AACbyjD,gBAAAA,IAAI,CAAC00D,aAAL,CAAmBthH,cAAnB;;AACA,uBAAI,CAAC07G,iBAAL,CAAuBqkF,kBAAvB,CAA0CnzI,IAAI,CAAC00D,aAAL,CAAmB7rH,MAA7D;AACH;AACJ;AACJ,WAT4B,CAA7B;AAUH;;AACD,YAAI,KAAK6oM,uBAAL,IAAgC,CAAC,KAAK0B,uBAA1C,EAAmE;AAC/D,eAAKA,uBAAL,GAA+B,KAAK1B,uBAAL,CAA6BvjM,OAA7B,CAAqChP,SAArC,CAA+C,UAAC6gE,IAAD,EAAU;AACpF,gBAAI,OAAI,CAACzjD,MAAT,EAAiB;AACb,kBAAIgpG,SAAS,CAACvlD,IAAI,CAACs2C,MAAN,CAAT,IAA0Bt2C,IAAI,CAACs2C,MAAL,KAAgB,QAA9C,EAAwD;AACpD,uBAAI,CAAC+8F,QAAL,CAAcrzI,IAAI,CAACjmD,IAAnB;AACH;AACJ;AACJ,WAN8B,CAA/B;AAOH;AACJ;;;aACD,uBAAc;AACV,YAAMu5L,QAAQ,GAAG,KAAK3hF,QAAL,CAAc4d,IAAd,CAAmB+jE,QAAnB,EAAjB;;AACA,YAAI,CAACA,QAAL,EAAe;AACX;AACH;;AACD,eAAOA,QAAQ,CAAChP,QAAD,CAAR,EAAP;AACH;;;aACD,+BAAsB;AAClB,YAAI,KAAK2O,qBAAT,EAAgC;AAC5B,eAAKA,qBAAL,CAA2B3zM,WAA3B;AACA,eAAK2zM,qBAAL,GAA6B,IAA7B;AACH;;AACD,YAAI,KAAKC,qBAAT,EAAgC;AAC5B,eAAKA,qBAAL,CAA2B5zM,WAA3B;AACA,eAAK4zM,qBAAL,GAA6B,IAA7B;AACH;;AACD,YAAI,KAAKE,uBAAT,EAAkC;AAC9B,eAAKA,uBAAL,CAA6B9zM,WAA7B;AACA,eAAK8zM,uBAAL,GAA+B,IAA/B;AACH;AACJ;;;;;;AAELG,EAAAA,oBAAoB,CAAC5pK,IAArB;AAAA,qBAAkH4pK,oBAAlH,EA94EuGh0M,uDA84EvG,CAAwJ8lM,gBAAxJ,GA94EuG9lM,uDA84EvG,CAAqLqmM,uBAArL,GA94EuGrmM,uDA84EvG,CAAyNquH,iBAAzN;AAAA;;AACA2lF,EAAAA,oBAAoB,CAACzpK,KAArB,kBA/4EuGvqC,iEA+4EvG;AAAA,WAAsHg0M,oBAAtH;AAAA,aAAsHA,oBAAtH;AAAA;SArRMA;;;AAsRN;AAAA;AAAA;;AAIA,IAAM8B,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC1B,MAAMC,OAAO,GAAGlxM,QAAQ,CAACinB,aAAT,CAAuB,KAAvB,CAAhB;AACAiqL,EAAAA,OAAO,CAACzsK,SAAR,GAAoB,WAApB;AACA,MAAM0sK,YAAY,GAAGnxM,QAAQ,CAACinB,aAAT,CAAuB,KAAvB,CAArB;AACAkqL,EAAAA,YAAY,CAAC1sK,SAAb,GAAyB,iBAAzB;AACAysK,EAAAA,OAAO,CAAC/pL,WAAR,CAAoBgqL,YAApB;AACA,SAAOD,OAAP;AACH,CAPD;;AAQA,IAAME,cAAc,GAAG,CAAvB;AACA,IAAMC,qBAAqB,GAAG,CAA9B;AACA,IAAM73D,OAAO,GAAG;AACZ83D,EAAAA,OAAO,EAAE;AAAE79L,IAAAA,CAAC,EAAE29L,cAAL;AAAqBh/I,IAAAA,CAAC,EAAEg/I;AAAxB,GADG;AAEZG,EAAAA,QAAQ,EAAE;AAAE99L,IAAAA,CAAC,EAAE,CAAC29L,cAAN;AAAsBh/I,IAAAA,CAAC,EAAEg/I;AAAzB,GAFE;AAGZI,EAAAA,UAAU,EAAE;AAAE/9L,IAAAA,CAAC,EAAE29L,cAAL;AAAqBh/I,IAAAA,CAAC,EAAE,CAACg/I;AAAzB,GAHA;AAIZK,EAAAA,WAAW,EAAE;AAAEh+L,IAAAA,CAAC,EAAE,CAAC29L,cAAN;AAAsBh/I,IAAAA,CAAC,EAAE,CAACg/I;AAA1B;AAJD,CAAhB;AAMA;AACA;AACA;;IACMM;MAAAA;AACF,kCAAYl5E,SAAZ,EAAuBrR,SAAvB,EAAkCwqF,aAAlC,EAAiD5jE,SAAjD,EAA4D;AAAA;;AACxD,WAAKvV,SAAL,GAAiBA,SAAjB;AACA,WAAKrR,SAAL,GAAiBA,SAAjB;AACA,WAAKwqF,aAAL,GAAqBA,aAArB;AACA,WAAK5jE,SAAL,GAAiBA,SAAjB;AACA,WAAK6jE,gBAAL,GAAwB,KAAxB;AACH;;;;WACD,eAA0B;AACtB,eAAQ,KAAKD,aAAL,CAAmBE,aAAnB,IAAoC,KAAK1qF,SAAL,CAAe0qF,aAApD,GAAqE,MAArE,GAA8E,IAArF;AACH;;;WACD,eAAoB;AAChB,eAAQ,KAAKF,aAAL,CAAmBE,aAAnB,IAAoC,KAAK1qF,SAAL,CAAe0qF,aAA3D;AACH;;;aACD,oBAAW;AACP,aAAK/+E,aAAL,GAAsB,KAAK0F,SAAL,CAAeL,UAAf,CAA0Bp9H,SAA1B,CAAoC,KAAKq7C,KAAL,CAAWlxC,IAAX,CAAgB,IAAhB,CAApC,CAAtB;AACA,aAAK4tH,aAAL,CAAmBzlF,GAAnB,CAAuB,KAAKmrF,SAAL,CAAeJ,SAAf,CAAyBr9H,SAAzB,CAAmC,KAAK+2M,WAAL,CAAiB5sM,IAAjB,CAAsB,IAAtB,CAAnC,CAAvB;AACH;;;aACD,uBAAc;AACV,aAAK4tH,aAAL,CAAmB53H,WAAnB;AACA,aAAK62M,KAAL;AACH;;;aACD,eAAMn2I,IAAN,EAAY;AACR,YAAIA,IAAI,CAAC00D,aAAL,CAAmB7rH,MAAnB,CAA0BC,SAA1B,CAAoCC,QAApC,CAA6C,YAA7C,CAAJ,EAAgE;AAC5D,eAAKqtM,SAAL,GAAiB,IAAjB;AACA;AACH;;AACD,aAAKA,SAAL,GAAiBp2I,IAAjB;AACA,aAAKq2I,WAAL,GAAmB,IAAnB;AACH;;;aACD,qBAAYr2I,IAAZ,EAAkB;AACd,YAAI,CAAC,KAAKq2I,WAAV,EAAuB;AACnB,eAAKA,WAAL,GAAmB,KAAKN,aAAL,CAAmBx5L,MAAnB,GAA4B,KAAKw5L,aAAL,CAAmB/C,kBAA/C,GAAoE,KAAKznF,SAAL,CAAeynF,kBAAtG;AACH;;AACD,YAAMl2E,KAAK,GAAG,KAAKs5E,SAAnB;;AACA,YAAI,CAACt5E,KAAL,EAAY;AACR;AACH;;AACD,YAAI,CAAC,KAAKk5E,gBAAV,EAA4B;AACxB,cAAM73C,QAAQ,GAAGj2H,IAAI,CAACouK,IAAL,CAAUpuK,IAAI,CAACmhG,GAAL,CAAUrpE,IAAI,CAACwzG,KAAL,GAAa12C,KAAK,CAAC02C,KAA7B,EAAqC,CAArC,IAA0CtrI,IAAI,CAACmhG,GAAL,CAAUrpE,IAAI,CAACyzG,KAAL,GAAa32C,KAAK,CAAC22C,KAA7B,EAAqC,CAArC,CAApD,CAAjB;;AACA,cAAItV,QAAQ,GAAGs3C,qBAAf,EAAsC;AAClC,iBAAKO,gBAAL,GAAwB,IAAxB;AACA,iBAAKO,mBAAL,GAA2BvoM,4CAAK,CAAC,KAAKmkI,SAAL,CAAeozD,WAAf,CAA2BtmM,IAA3B,CAAgCkyB,qDAAI,CAAC,CAAD,CAApC,CAAD,EAA2C,KAAKyrG,SAAL,CAAeH,YAAf,CAA4Bx9H,IAA5B,CAAiCqyB,sDAAK,CAAC,CAAD,CAAtC,EAA2CH,qDAAI,CAAC,CAAD,CAA/C,CAA3C,CAAL,CACtBhyB,SADsB,CACZ,KAAKq3M,YAAL,CAAkBltM,IAAlB,CAAuB,IAAvB,CADY,CAA3B;AAEH,WAJD,MAKK;AACD;AACH;AACJ;;AACD,aAAKmtM,WAAL;AACA,YAAMxkM,OAAO,GAAG,KAAKykM,cAArB;AACA,YAAMC,eAAe,GAAG,KAAKC,kBAAL,CAAwB52I,IAAI,CAACwzG,KAA7B,EAAoCxzG,IAAI,CAACyzG,KAAzC,EAAgD32C,KAAK,CAAC02C,KAAtD,EAA6D12C,KAAK,CAAC22C,KAAnE,CAAxB;AACA,YAAI9qK,IAAI,GAAGu/B,IAAI,CAACD,GAAL,CAAS+3B,IAAI,CAACwzG,KAAd,EAAqB12C,KAAK,CAAC02C,KAA3B,CAAX;AACA,YAAI9qK,GAAG,GAAGw/B,IAAI,CAACD,GAAL,CAAS+3B,IAAI,CAACyzG,KAAd,EAAqB32C,KAAK,CAAC22C,KAA3B,CAAV;AACA,YAAMxjK,KAAK,GAAGi4B,IAAI,CAACguB,GAAL,CAAS8J,IAAI,CAACwzG,KAAL,GAAa12C,KAAK,CAAC02C,KAA5B,CAAd;AACA,YAAMhnK,MAAM,GAAG07B,IAAI,CAACguB,GAAL,CAAS8J,IAAI,CAACyzG,KAAL,GAAa32C,KAAK,CAAC22C,KAA5B,CAAf;;AACA,YAAIkjC,eAAJ,EAAqB;AACjBhuM,UAAAA,IAAI,IAAIi1I,OAAO,CAAC+4D,eAAD,CAAP,CAAyB9+L,CAAjC;AACAnP,UAAAA,GAAG,IAAIk1I,OAAO,CAAC+4D,eAAD,CAAP,CAAyBngJ,CAAhC;AACH;;AACDvkD,QAAAA,OAAO,CAAC7F,KAAR,CAAczD,IAAd,aAAwBA,IAAxB;AACAsJ,QAAAA,OAAO,CAAC7F,KAAR,CAAc1D,GAAd,aAAuBA,GAAvB;AACAuJ,QAAAA,OAAO,CAAC7F,KAAR,CAAc6D,KAAd,aAAyBA,KAAzB;AACAgC,QAAAA,OAAO,CAAC7F,KAAR,CAAcI,MAAd,aAA0BA,MAA1B;AACH;;;aACD,sBAAawzD,IAAb,EAAmB;AACf,YAAIA,IAAI,CAAC/3D,IAAL,KAAc,SAAd,IAA2B+3D,IAAI,CAAC/3D,IAAL,KAAc,UAA7C,EAAyD;AACrD,cAAI,KAAK8tM,aAAL,CAAmBx5L,MAAvB,EAA+B;AAC3B,iBAAKw5L,aAAL,CAAmBjE,QAAnB,GAA8B,IAA9B;AACA,iBAAKiE,aAAL,CAAmB5nM,OAAnB,CAA2B4K,IAA3B,CAAgC,KAAKg9L,aAAL,CAAmBvB,WAAnB,CAA+B,KAAK6B,WAAL,CAAiBnjE,QAAhD,EAA0D,KAAKmjE,WAAL,CAAiBphB,MAAjB,CAAwBif,SAAlF,EAA6Fl0I,IAAI,CAACkzE,QAAlG,EAA4GlzE,IAAI,CAACi1H,MAAL,CAAYif,SAAxH,CAAhC;AACH,WAHD,MAIK,IAAI,KAAK3oF,SAAL,CAAehvG,MAAnB,EAA2B;AAC5B,iBAAKgvG,SAAL,CAAeumF,QAAf,GAA0B,IAA1B;AACA,iBAAKvmF,SAAL,CAAep9G,OAAf,CAAuB4K,IAAvB,CAA4B,KAAKwyG,SAAL,CAAeipF,WAAf,CAA2B,KAAK6B,WAAL,CAAiBnjE,QAA5C,EAAsDlzE,IAAI,CAACkzE,QAA3D,CAA5B;AACH;AACJ;;AACD,aAAKijE,KAAL;AACH;;;aACD,iBAAQ;AACJ,YAAI,KAAKO,cAAT,EAAyB;AACrBtyM,UAAAA,QAAQ,CAACO,IAAT,CAAcm9D,WAAd,CAA0B,KAAK40I,cAA/B;AACA,eAAKA,cAAL,GAAsB,IAAtB;AACH;;AACD,YAAI,KAAKH,mBAAT,EAA8B;AAC1B,eAAKA,mBAAL,CAAyBj3M,WAAzB;AACH;;AACD,aAAKi3M,mBAAL,GAA2B,IAA3B;AACA,aAAKF,WAAL,GAAmB,IAAnB;AACA,aAAKD,SAAL,GAAiB,IAAjB;AACA,aAAKJ,gBAAL,GAAwB,KAAxB,CAXI,CAYJ;;AACA,aAAKD,aAAL,CAAmBx5L,MAAnB,GAA4B,KAAKw5L,aAAL,CAAmBjE,QAAnB,GAA8B,KAA1D,GAAkE,KAAKvmF,SAAL,CAAeumF,QAAf,GAA0B,KAA5F;AACH;;;aACD,uBAAc;AACV,YAAI,CAAC,KAAK4E,cAAV,EAA0B;AACtB,eAAKA,cAAL,GAAsBrB,eAAe,EAArC;AACAjxM,UAAAA,QAAQ,CAACO,IAAT,CAAc4mB,WAAd,CAA0B,KAAKmrL,cAA/B;AACH;AACJ;;;aACD,4BAAmBG,QAAnB,EAA6BC,QAA7B,EAAuCC,MAAvC,EAA+CC,MAA/C,EAAuD;AACnD,YAAMC,QAAQ,GAAGJ,QAAQ,GAAGE,MAA5B;AACA,YAAMG,SAAS,GAAGL,QAAQ,GAAGE,MAA7B;AACA,YAAMI,OAAO,GAAGL,QAAQ,GAAGE,MAA3B;AACA,YAAMI,UAAU,GAAGN,QAAQ,GAAGE,MAA9B;;AACA,YAAIC,QAAQ,IAAIE,OAAhB,EAAyB;AACrB,iBAAO,SAAP;AACH;;AACD,YAAIF,QAAQ,IAAIG,UAAhB,EAA4B;AACxB,iBAAO,YAAP;AACH;;AACD,YAAIF,SAAS,IAAIC,OAAjB,EAA0B;AACtB,iBAAO,UAAP;AACH;;AACD,YAAID,SAAS,IAAIE,UAAjB,EAA6B;AACzB,iBAAO,aAAP;AACH;;AACD,eAAO,IAAP;AACH;;;;;;AAELtB,EAAAA,oBAAoB,CAACnsK,IAArB;AAAA,qBAAkHmsK,oBAAlH,EA9hFuGv2M,gEA8hFvG,CAAwJ0iI,+EAAxJ,GA9hFuG1iI,gEA8hFvG,CAA4Lu4I,gBAA5L,GA9hFuGv4I,gEA8hFvG,CAAyNg0M,oBAAzN,GA9hFuGh0M,gEA8hFvG,CAA0P8lM,gBAA1P;AAAA;;AACAyQ,EAAAA,oBAAoB,CAAC3rK,IAArB,kBA/hFuG5qC,gEA+hFvG;AAAA,UAAsGu2M,oBAAtG;AAAA;AAAA;AAAA;AAAA;AA/hFuGv2M,QAAAA,0DA+hFvG;AA/hFuGA,QAAAA,0DA+hFvG;AAAA;AAAA;AAAA;SAxHMu2M;;;AAyHN;AAAA;AAAA;AAaA;AACA;AACA;;;IACMuB;;;;;AACF,iCAAYt1H,MAAZ,EAAqC;AAAA;;AAAA,QAAjBu1H,OAAiB,uEAAP,KAAO;;AAAA;;AACjC,iCAAMA,OAAN;AACA,YAAKv1H,MAAL,GAAcA,MAAd;AAFiC;AAGpC;;;;WACD,mBAAUw1H,eAAV,EAA2B57L,KAA3B,EAAkCu7E,QAAlC,EAA4C;AAAA;;AACxC,UAAIsgH,WAAJ;;AACA,UAAIC,OAAO,GAAG,iBAACjyM,CAAD;AAAA,eAAO,IAAP;AAAA,OAAd;;AACA,UAAIkyM,UAAU,GAAG;AAAA,eAAM,IAAN;AAAA,OAAjB;;AACA,UAAIH,eAAe,IAAI,OAAOA,eAAP,KAA2B,QAAlD,EAA4D;AACxDC,QAAAA,WAAW,GAAG,qBAAC3nM,KAAD,EAAW;AAAE,iBAAI,CAACkyE,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,mBAAMuiK,eAAe,CAACj7L,IAAhB,CAAqBzM,KAArB,CAAN;AAAA,WAAhB;AAAqD,SAAhF;;AACA,YAAI0nM,eAAe,CAAC57L,KAApB,EAA2B;AACvB87L,UAAAA,OAAO,GAAG,iBAACp4L,GAAD,EAAS;AAAE,mBAAI,CAAC0iE,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,qBAAMuiK,eAAe,CAAC57L,KAAhB,CAAsB0D,GAAtB,CAAN;AAAA,aAAhB;AAAoD,WAAzE;AACH;;AACD,YAAIk4L,eAAe,CAACrgH,QAApB,EAA8B;AAC1BwgH,UAAAA,UAAU,GAAG,sBAAM;AAAE,mBAAI,CAAC31H,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,qBAAMuiK,eAAe,CAACrgH,QAAhB,EAAN;AAAA,aAAhB;AAAoD,WAAzE;AACH;AACJ,OARD,MASK;AACDsgH,QAAAA,WAAW,GAAG,qBAAC3nM,KAAD,EAAW;AAAE,iBAAI,CAACkyE,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,mBAAMuiK,eAAe,CAAC1nM,KAAD,CAArB;AAAA,WAAhB;AAAgD,SAA3E;;AACA,YAAI8L,KAAJ,EAAW;AACP87L,UAAAA,OAAO,GAAG,iBAACp4L,GAAD,EAAS;AAAE,mBAAI,CAAC0iE,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,qBAAMr5B,KAAK,CAAC0D,GAAD,CAAX;AAAA,aAAhB;AAAoC,WAAzD;AACH;;AACD,YAAI63E,QAAJ,EAAc;AACVwgH,UAAAA,UAAU,GAAG,sBAAM;AAAE,mBAAI,CAAC31H,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,qBAAMkiD,QAAQ,EAAd;AAAA,aAAhB;AAAoC,WAAzD;AACH;AACJ;;AACD,kcAAuBsgH,WAAvB,EAAoCC,OAApC,EAA6CC,UAA7C;AACH;;;;EA5B+BvlM;AA+BpC;AACA;AACA;;;AACA,IAAM6yG,eAAe,GAAG;AACpB7sG,EAAAA,IAAI,EAAE,8BADc;AAEpB8sG,EAAAA,WAAW,EAAE,sBAFO;AAGpBC,EAAAA,YAAY,EAAE,CAAC,gBAAD,EAAmB,iBAAnB,CAHM;AAIpBC,EAAAA,WAAW,EAAE,UAJO;AAKpBC,EAAAA,OAAO,EAAE,EALW;AAMpBC,EAAAA,gBAAgB,EAAE;AANE,CAAxB;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM8yB;MAAAA,mOACF,+BAAY3lH,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAEL2lH,EAAAA,qBAAqB,CAACxuG,IAAtB;AAAA,qBAAmHwuG,qBAAnH,EA9oFuG54I,gEA8oFvG,CAA0JA,uDAA1J;AAAA;;AACA44I,EAAAA,qBAAqB,CAAChuG,IAAtB,kBA/oFuG5qC,gEA+oFvG;AAAA,UAAuG44I,qBAAvG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMwpD;MAAAA,0OACF,sCAAYnvK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELmvK,EAAAA,4BAA4B,CAACh4J,IAA7B;AAAA,qBAA0Hg4J,4BAA1H,EAltFuGpiM,gEAktFvG,CAAwKA,uDAAxK;AAAA;;AACAoiM,EAAAA,4BAA4B,CAACx3J,IAA7B,kBAntFuG5qC,gEAmtFvG;AAAA,UAA8GoiM,4BAA9G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,gPACF,4CAAYpvK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELovK,EAAAA,kCAAkC,CAACj4J,IAAnC;AAAA,qBAAgIi4J,kCAAhI,EAxvFuGriM,gEAwvFvG,CAAoLA,uDAApL;AAAA;;AACAqiM,EAAAA,kCAAkC,CAACz3J,IAAnC,kBAzvFuG5qC,gEAyvFvG;AAAA,UAAoHqiM,kCAApH;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM+V;MAAAA,mOACF,+BAAYnlL,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELmlL,EAAAA,qBAAqB,CAAChuK,IAAtB;AAAA,qBAAmHguK,qBAAnH,EAtxFuGp4M,gEAsxFvG,CAA0JA,uDAA1J;AAAA;;AACAo4M,EAAAA,qBAAqB,CAACxtK,IAAtB,kBAvxFuG5qC,gEAuxFvG;AAAA,UAAuGo4M,qBAAvG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM9V;MAAAA,0OACF,sCAAYrvK,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELqvK,EAAAA,4BAA4B,CAACl4J,IAA7B;AAAA,qBAA0Hk4J,4BAA1H,EAt1FuGtiM,gEAs1FvG,CAAwKA,uDAAxK;AAAA;;AACAsiM,EAAAA,4BAA4B,CAAC13J,IAA7B,kBAv1FuG5qC,gEAu1FvG;AAAA,UAA8GsiM,4BAA9G;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM7iB;MAAAA,qOACF,iCAAYxsJ,WAAZ,EAAyB;AAAA;;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAELwsJ,EAAAA,uBAAuB,CAACr1I,IAAxB;AAAA,qBAAqHq1I,uBAArH,EAv5FuGz/K,gEAu5FvG,CAA8JA,uDAA9J;AAAA;;AACAy/K,EAAAA,uBAAuB,CAAC70I,IAAxB,kBAx5FuG5qC,gEAw5FvG;AAAA,UAAyGy/K,uBAAzG;AAAA;AAAA;SANMA;;;AAON;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA,qOACF,iCAAYzsJ,WAAZ,EAAyB;AAAA;;A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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMo6D;MAAAA;;;;;AACF,6BAAY1sL,MAAZ,EAAoB8iM,SAApB,EAA+B;AAAA;;AAAA;;AAC3B,mCAAM9iM,MAAN,EAAc8iM,SAAd;AACA;AACR;AACA;AACA;;AACQ,cAAKmB,QAAL,GAAgB,IAAhB;AACA;AACR;AACA;AACA;;AACQ,cAAKC,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKC,MAAL,GAAc,MAAd;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAK76M,MAAL,GAAc,MAAd;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKumL,UAAL,GAAkB,IAAlB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,cAAKxjG,QAAL,GAAgB,IAAhB;AA5D2B;AA6D9B;;;;WACD,eAAkB;AACd,eAAO,KAAK9hF,QAAL,GAAgB,KAAKA,QAAL,CAAc6yB,WAA9B,GAA4CpF,SAAnD;AACH;;;WACD,eAA6B;AACzB,eAAO,KAAKizK,mBAAL,GAA2B,KAAKA,mBAAL,CAAyB7tK,WAApD,GAAkEpF,SAAzE;AACH;;;WACD,eAAmC;AAC/B,eAAO,KAAKkzK,yBAAL,GAAiC,KAAKA,yBAAL,CAA+B9tK,WAAhE,GAA8EpF,SAArF;AACH;;;WACD,eAA6B;AACzB,eAAO,KAAKgzK,mBAAL,GAA2B,KAAKA,mBAAL,CAAyB5tK,WAApD,GAAkEpF,SAAzE;AACH;;;WACD,eAAsB;AAClB,eAAO,KAAK09K,YAAL,GAAoB,KAAKA,YAAL,CAAkBt4K,WAAtC,GAAoDpF,SAA3D;AACH;;;WACD,eAA4B;AACxB,eAAO,KAAKosL,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBhnL,WAAlD,GAAgEpF,SAAvE;AACH;;;WACD,eAA4B;AACxB,eAAO,KAAKqsL,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBjnL,WAAlD,GAAgEpF,SAAvE;AACH;;;WACD,eAAmB;AACf,eAAO,KAAK1vB,KAAL,KAAe0vB,SAAf,GAA2B,KAAKs6G,KAAhC,GAAwC,KAAKhqI,KAApD;AACH;;;;IAtFyBwjM;;AAwF9BY,EAAAA,eAAe,CAACn4J,IAAhB;AAAA,qBAA6Gm4J,eAA7G,EA9gHuGviM,gEA8gHvG,CAA8I2hM,UAA9I,OA9gHuG3hM,gEA8gHvG,CAAiNs4M,SAAjN;AAAA;;AACA/V,EAAAA,eAAe,CAACz1J,IAAhB,kBA/gHuG9sC,gEA+gHvG;AAAA,UAAiGuiM,eAAjG;AAAA;AAAA;AAAA;AA/gHuGviM,QAAAA,6DA+gHvG,WAKqE44I,qBALrE;AA/gHuG54I,QAAAA,6DA+gHvG,WAKgLoiM,4BALhL;AA/gHuGpiM,QAAAA,6DA+gHvG,WAKwSqiM,kCALxS;AA/gHuGriM,QAAAA,6DA+gHvG,WAKgasiM,4BALha;AA/gHuGtiM,QAAAA,6DA+gHvG,WAK2gBo4M,qBAL3gB;AA/gHuGp4M,QAAAA,6DA+gHvG,WAKqnB25M,2BALrnB;AA/gHuG35M,QAAAA,6DA+gHvG,WAKquB45M,2BALruB;AAAA;;AAAA;AAAA;;AA/gHuG55M,QAAAA,6DA+gHvG,MA/gHuGA,0DA+gHvG;AA/gHuGA,QAAAA,6DA+gHvG,MA/gHuGA,0DA+gHvG;AA/gHuGA,QAAAA,6DA+gHvG,MA/gHuGA,0DA+gHvG;AA/gHuGA,QAAAA,6DA+gHvG,MA/gHuGA,0DA+gHvG;AA/gHuGA,QAAAA,6DA+gHvG,MA/gHuGA,0DA+gHvG;AA/gHuGA,QAAAA,6DA+gHvG,MA/gHuGA,0DA+gHvG;AA/gHuGA,QAAAA,6DA+gHvG,MA/gHuGA,0DA+gHvG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA/gHuGA,iEA+gHvG,CAA4U,CACpU;AACIoD,MAAAA,OAAO,EAAEu+L,UADb;AAEIvxJ,MAAAA,WAAW,EAAEngB,0DAAU,CAAC;AAAA,eAAMsyK,eAAN;AAAA,OAAD;AAF3B,KADoU,CAA5U,GA/gHuGviM,yEA+gHvG;AAAA;AAAA;AAAA;AAAA;AAAA;SAzFMuiM;;;AA+FN;AAAA;AAAA;AA2DA;AACA;AACA;;;AACA,SAAS4X,qBAAT,CAA+BzkB,MAA/B,EAAuC;AACnC,SAAOA,MAAM,CAAC6iB,YAAd;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM6B;MAAAA;;;;;AACF,iCAAYvkM,MAAZ,EAAoB8iM,SAApB,EAA+B;AAAA;;AAAA;;AAC3B,mCAAM9iM,MAAN,EAAc8iM,SAAd;AACA;AACR;AACA;;AACQ,cAAKJ,YAAL,GAAoB,IAApB;AACA,cAAKn4M,QAAL,GAAgB,IAAIkO,qDAAJ,EAAhB;AACA,cAAKi9L,YAAL,GAAoB,IAAIj9L,qDAAJ,EAApB;AACA;AACR;AACA;;AACQ,cAAK+rM,YAAL,GAAoB,IAAI/rM,qDAAJ,EAApB;AACA;AACR;AACA;;AACQ,cAAK8qM,gBAAL,GAAwB,KAAxB;AACA,cAAKkB,SAAL,GAAiB,IAAjB;;AACA,UAAIzkM,MAAM,IAAIA,MAAM,CAAC0iM,YAArB,EAAmC;AAC/B,cAAM,IAAIxzL,KAAJ,CAAU,uDAAV,CAAN;AACH;;AAnB0B;AAoB9B;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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Ky6F,UAAL,GAAkB,EAAlB;AAJ2D;AAK9D;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WAmBI,eAAgB;AACZ,eAAO,KAAKA,UAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;WAzBI,aAAc/B,SAAd,EAAyB;AAAA;;AACrB,YAAIgC,eAAe,GAAG,EAAtB;AACAhC,QAAAA,SAAS,CAACjiN,OAAV,CAAkB,UAAAwU,IAAI,EAAI;AACtB,cAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1ByvM,YAAAA,eAAe,CAAC10M,IAAhB,CAAqB;AACjBoD,cAAAA,IAAI,EAAE6B,IAAI,CAAC1S,QAAL,EADW;AAEjBwI,cAAAA,KAAK,EAAEkK;AAFU,aAArB;AAIH,WALD,MAMK;AACDyvM,YAAAA,eAAe,CAAC10M,IAAhB,CAAqBiF,IAArB;AACH;AACJ,SAVD;;AAWA,YAAI,KAAKkL,QAAL,IAAiB,CAACukM,eAAe,CAAC/uM,IAAhB,CAAqB,UAAAV,IAAI;AAAA,iBAAIA,IAAI,CAAClK,KAAL,KAAe,OAAI,CAACoV,QAAxB;AAAA,SAAzB,CAAtB,EAAkF;AAC9EukM,UAAAA,eAAe,IAAI;AAAEtxM,YAAAA,IAAI,EAAE,KAAK+M,QAAL,CAAc5d,QAAd,EAAR;AAAkCwI,YAAAA,KAAK,EAAE,KAAKoV;AAA9C,WAAJ,4MAAiEukM,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BA,YAApB;AACA,WAAKhtJ,MAAL,GAAcA,MAAd;AACA,WAAK0nE,iBAAL,GAAyBA,iBAAzB;AACA,WAAKtX,SAAL,GAAiBA,SAAjB;AACA,WAAK03F,qBAAL,GAA6BA,qBAA7B;AACA,WAAKv6K,iBAAL,GAAyBA,iBAAzB;AACA,WAAK0/K,oBAAL,GAA4BA,oBAA5B;AACA,WAAKzY,iBAAL,GAAyBA,iBAAzB;AACA,WAAKznG,iBAAL,GAAyBA,iBAAzB;AACA,WAAKwqG,WAAL,GAAmBA,WAAnB;AACA,WAAKjsB,oBAAL,GAA4BA,oBAA5B;AACA,WAAK3lF,YAAL,GAAoBA,YAApB;AACA,WAAK79G,GAAL,GAAWA,GAAX;AACA;AACR;AACA;AACA;;AACQ,WAAKpM,IAAL,GAAY,EAAZ;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKupE,UAAL,GAAkB,YAAlB;AACA;AACR;AACA;;AACQ,WAAKirI,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKkzB,OAAL,GAAene,cAAf;AACA;AACR;AACA;;AACQ,WAAKxf,cAAL,GAAsB,KAAtB;AACA;AACR;AACA;;AACQ,WAAKviB,UAAL,GAAkB,KAAlB;AACA;AACR;AACA;;AACQ,WAAKo0B,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK41B,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;;AACQ,WAAK31B,SAAL,GAAiB,KAAjB;AACA;AACR;AACA;AACA;;AACQ,WAAK41B,SAAL,GAAiB,KAAjB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKC,QAAL,GAAgB,KAAhB;A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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,uBAAc16C,MAAd,EAAsB;AAClB,aAAK40C,qBAAL,CAA2BzmB,OAA3B,CAAmCnuB,MAAnC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,0BAAuC;AAAA;;AAAA,YAAxBD,OAAwB,uEAAd,KAAKA,OAAS;AACnC,YAAI/tC,IAAJ;;AACA,YAAI+tC,OAAO,YAAYnnL,qDAAvB,EAAkC;AAC9Bo5I,UAAAA,IAAI,GAAG+tC,OAAO,CAACtgJ,OAAR,EAAP;AACH,SAFD,MAGK;AACDuyG,UAAAA,IAAI,GAAG+tC,OAAP;AACH;;AACD,sCAAK60C,qBAAL,EAA2BzmB,OAA3B,iOAAsCn8D,IAAtC;AACH;AACD;AACJ;AACA;;;;aACI,0BAAiB5xG,MAAjB,EAAyBn2C,KAAzB,EAAgC;AAC5B,YAAIm2C,MAAM,KAAK,MAAX,IAAqB,CAAC,KAAKqyJ,SAA/B,EAA0C;AACtC;AACH;;AACD,aAAKh5H,UAAL,CAAgB31D,IAAhB,CAAqB7Z,KAArB;AACH;AACD;AACJ;AACA;;;;aACI,8BAAqB;AAAA;;AACjB,YAAI,KAAK8nE,UAAL,KAAoB,MAAxB,EAAgC;AAC5B;AACH;;AACD,YAAIm9C,6EAAY,CAAC,KAAK6lH,YAAN,CAAhB,EAAqC;AACjC,eAAKjoJ,MAAL,CAAY/sC,GAAZ,CAAgB;AAAA,mBAAM,QAAI,CAACg1L,YAAL,CAAkBjxN,IAAlB,CAAuB;AAAE07G,cAAAA,MAAM,EAAE;AAAV,aAAvB,CAAN;AAAA,WAAhB;AACH;AACJ;AACD;AACJ;AACA;;;;aACI,0BAAiB6gH,iBAAjB,EAAoC;AAAA;;AAChC,YAAI,KAAKR,wBAAT,EAAmC;AAC/B,eAAKA,wBAAL,CAA8Bx1O,WAA9B;AACH;;AACD,aAAKyiF,MAAL,CAAY3tC,iBAAZ,CAA8B,YAAM;AAChC,kBAAI,CAAC0gM,wBAAL,GAAgC,QAAI,CAAC/yJ,MAAL,CAAYpgC,QAAZ,CAAqB1lC,YAArB,GAAoChd,IAApC,CAAyCkyB,qDAAI,CAAC,CAAD,CAA7C,EAAkDhyB,SAAlD,CAA4D,YAAM;AAC9F,gBAAMkwH,OAAO,GAAG,QAAI,CAACA,OAAL,CAAa79G,aAA7B;;AACA,gBAAI,CAAC,QAAI,CAAC+jO,YAAL,CAAkBlmH,OAAO,CAACxtE,aAAR,CAAsByzL,iBAAtB,CAAlB,CAAD,IAAgE,QAAI,CAAC5lI,QAAzE,EAAmF;AAC/E,sBAAI,CAAC6lI,YAAL,CAAkBlmH,OAAO,CAACxtE,aAAR,2BAAyCyzL,iBAAzC,EAAlB;AACH;;AACD,oBAAI,CAACR,wBAAL,GAAgC,IAAhC;AACH,WAN+B,CAAhC;AAOH,SARD;AASH;AACD;AACJ;AACA;AACA;AACA;;;;aACI,iBAAQ;AACJ,aAAKU,eAAL;AACA,eAAO,KAAK1mH,iBAAL,CAAuBg3E,SAAvB,EAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,mBAAU5yD,QAAV,EAAoBszD,QAApB,EAA8B;AAC1B,aAAKgvC,eAAL;AACA,eAAO,KAAK1mH,iBAAL,CAAuBg3E,SAAvB,CAAiC5yD,QAAjC,EAA2CszD,QAA3C,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,yBAA2B;AAAA,YAAbvzJ,IAAa,uEAAN,IAAM;AACvB,aAAKuiM,eAAL;AACA,eAAO,KAAK1mH,iBAAL,CAAuB2mH,aAAvB,CAAqCxiM,IAArC,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;aACI,yBAA2B;AAAA,YAAbA,IAAa,uEAAN,IAAM;AACvB,aAAKuiM,eAAL;AACA,eAAO,KAAK1mH,iBAAL,CAAuB4mH,aAAvB,CAAqCziM,IAArC,CAAP;AACH;AACD;AACJ;AACA;;;;aACI,kBAAS9zB,OAAT,EAAkB;AACd,aAAKkuL,oBAAL,CAA0BhuM,QAA1B,CAAmC8f,OAAnC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;aACI,uBAAck2B,MAAd,EAAsBsgM,SAAtB,EAA8D;AAAA,YAA7BznO,OAA6B,uEAAnB;AAAE4rC,UAAAA,MAAM,EAAE;AAAV,SAAmB;AAC1D,YAAMmkL,eAAe,GAAGtjB,WAAW,CAAC,KAAKi7B,kBAAL,CAAwBvgM,MAAM,CAACnhC,KAA/B,CAAD,CAAnC;AACA,YAAIrL,MAAM,GAAGo1N,eAAe,CAAC0X,SAAD,CAA5B;;AACA,YAAI,CAAC9sO,MAAL,EAAa;AACT;AACH;;AACD,YAAM02N,aAAa,GAAG12N,MAAM,CAAC6mG,QAAP,IAClB,CAACr6D,MAAM,CAACq6D,QADU,IAElB,KAAK22G,gBAAL,CAAsB1H,gBAAtB,CAAuC3pM,MAAvC,KAAkD,CAFtD;;AAGA,YAAIuqN,aAAJ,EAAmB;AACf;AACH;;A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AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA,6VAkDwB,eAlDxB;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA,kXAmF8B,eAnF9B;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA,uWAsF6B,eAtF7B;AAAA;;AAAA;;AAAA;AAAA;AACA;AACA;AACA;A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,gBAAxB;AACA,WAAK7tO,SAAL,GAAiBA,SAAjB;AACA,WAAK+3B,KAAL,GAAaA,KAAb;AACA;AACR;AACA;AACA;;AACQ,WAAK95D,OAAL,GAAe,IAAf;AACA;AACR;AACA;AACA;;AACQ,WAAK6mH,WAAL,GAAmB;AAAEN,QAAAA,UAAU,EAAE,MAAd;AAAsBC,QAAAA,QAAQ,EAAE;AAAhC,OAAnB;AACA;AACR;AACA;AACA;;AACQ,WAAKg1C,SAAL,GAAiB;AAAEj1C,QAAAA,UAAU,EAAE,KAAd;AAAqBC,QAAAA,QAAQ,EAAE;AAA/B,OAAjB;AACA;AACR;AACA;AACA;;AACQ,WAAKJ,UAAL,GAAkB;AAAEG,QAAAA,UAAU,EAAE,MAAd;AAAsBC,QAAAA,QAAQ,EAAE;AAAhC,OAAlB;AACA;AACR;AACA;;AACQ,WAAKqpJ,gBAAL,GAAwB,KAAxB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK/jJ,YAAL,GAAoB,OAApB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKhvE,MAAL,GAAc0uE,cAAd;AACA;AACR;AACA;AACA;;AACQ,WAAKskJ,mBAAL,GAA2B,IAAI9pQ,uDAAJ,EAA3B;AACA;AACR;AACA;;AACQ,WAAKpC,KAAL,GAAa,IAAIoC,uDAAJ,EAAb;AACA;AACR;AACA;;AACQ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AD,CAHqB;AAI5C,cAAQw4R,aAAa,CAACx4R,KAAD,CAJuB;AAK5C,cAAQ44R,aAAa,CAAC54R,KAAD,CALuB;AAM5C,cAAQy4R,iBAAiB,CAACz4R,KAAD;AANmB,MAO9CqO,GAP8C,CAAL;AAAA,GAA7B;AAAA,CAAd;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAMqnR,yBAAyB,GAAG,SAA5BA,yBAA4B,CAAC11R,KAAD;AAAA,SAAY62R,aAAa,CAAC/mR,MAAM,CAAC9B,IAAP,CAAYhO,KAAZ,EAC9D+B,GAD8D,CAC1D++M,KAAK,CAAC9gN,KAAD,CADqD,EAE9D5N,MAF8D,CAEvD6mH,6CAFuD,CAAD,CAAb,CAE7BvqG,IAF6B,CAExB,GAFwB,CAAZ;AAAA,CAAlC;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMinR,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAC31R,KAAD;AAAA,SAAY82R,QAAQ,CAAChnR,MAAM,CAAC9B,IAAP,CAAYhO,KAAZ,EACnD+B,GADmD,CAC/C++M,KAAK,CAAC9gN,KAAD,EAAQ,KAAR,CAD0C,EAEnD5N,MAFmD,CAE5C6mH,6CAF4C,CAAD,CAApB;AAAA,CAA5B;;;;;;;;;;;;;;;;;;;A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,OAAO;AAChG;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzNA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACMkmH;;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM+uS;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,UAAU,GAAG,GAAnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASr+Z,OAAT,CAAiBiM,IAAjB,EAAuBqyZ,WAAvB,EAAoC;AAChC,SAAO;AAAEvia,IAAAA,IAAI,EAAE;AAAE;AAAV;AAAyBkQ,IAAAA,IAAI,EAAJA,IAAzB;AAA+BqyZ,IAAAA,WAAW,EAAXA,WAA/B;AAA4Ct8Z,IAAAA,OAAO,EAAE;AAArD,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS/B,OAAT,CAAiBs+Z,OAAjB,EAAyC;AAAA,MAAfr7X,MAAe,uEAAN,IAAM;AACrC,SAAO;AAAEnnC,IAAAA,IAAI,EAAE;AAAE;AAAV;AAAyBmnC,IAAAA,MAAM,EAANA,MAAzB;AAAiCq7X,IAAAA,OAAO,EAAPA;AAAjC,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS/gZ,KAAT,CAAewpE,KAAf,EAAsC;AAAA,MAAhBhlF,OAAgB,uEAAN,IAAM;AAClC,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAE;AAAV;AAAuBirF,IAAAA,KAAK,EAALA,KAAvB;AAA8BhlF,IAAAA,OAAO,EAAPA;AAA9B,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS42G,QAAT,CAAkB5xB,KAAlB,EAAyC;AAAA,MAAhBhlF,OAAgB,uEAAN,IAAM;AACrC,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAE;AAAV;AAA0BirF,IAAAA,KAAK,EAALA,KAA1B;AAAiChlF,IAAAA,OAAO,EAAPA;AAAjC,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS9B,KAAT,CAAewtP,MAAf,EAAuB;AACnB,SAAO;AAAE3xP,IAAAA,IAAI,EAAE;AAAE;AAAV;AAAuBmnC,IAAAA,MAAM,EAAEwqN,MAA/B;AAAuC3wM,IAAAA,MAAM,EAAE;AAA/C,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS38C,KAAT,CAAe6L,IAAf,EAAqBi3B,MAArB,EAA6BlhC,OAA7B,EAAsC;AAClC,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAE;AAAV;AAAuBkQ,IAAAA,IAAI,EAAJA,IAAvB;AAA6Bi3B,IAAAA,MAAM,EAANA,MAA7B;AAAqClhC,IAAAA,OAAO,EAAPA;AAArC,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASq9J,SAAT,CAAmBr4E,KAAnB,EAA0B;AACtB,SAAO;AAAEjrF,IAAAA,IAAI,EAAE;AAAE;AAAV;AAA2BirF,IAAAA,KAAK,EAALA;AAA3B,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS7mF,UAAT,CAAoBq+Z,eAApB,EAAqCx3U,KAArC,EAA4D;AAAA,MAAhBhlF,OAAgB,uEAAN,IAAM;AACxD,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAE;AAAV;AAA4B28F,IAAAA,IAAI,EAAE8lU,eAAlC;AAAmD3wS,IAAAA,SAAS,EAAE7mC,KAA9D;AAAqEhlF,IAAAA,OAAO,EAAPA;AAArE,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6rH,SAAT,CAAmB7mC,KAAnB,EAA0C;AAAA,MAAhBhlF,OAAgB,uEAAN,IAAM;AACtC,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAE;AAAV;AAA2B8xH,IAAAA,SAAS,EAAE7mC,KAAtC;AAA6ChlF,IAAAA,OAAO,EAAPA;AAA7C,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASy8Z,YAAT,GAAsC;AAAA,MAAhBz8Z,OAAgB,uEAAN,IAAM;AAClC,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAE;AAAV;AAA8BiG,IAAAA,OAAO,EAAPA;AAA9B,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS08Z,YAAT,CAAsB7wS,SAAtB,EAAiD;AAAA,MAAhB7rH,OAAgB,uEAAN,IAAM;AAC7C,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAG;AAAX;AAA6B8xH,IAAAA,SAAS,EAATA,SAA7B;AAAwC7rH,IAAAA,OAAO,EAAPA;AAAxC,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS67F,KAAT,CAAevgE,QAAf,EAAyBuwF,SAAzB,EAAoD;AAAA,MAAhB7rH,OAAgB,uEAAN,IAAM;AAChD,SAAO;AAAEjG,IAAAA,IAAI,EAAE;AAAG;AAAX;AAAwBuhC,IAAAA,QAAQ,EAARA,QAAxB;AAAkCuwF,IAAAA,SAAS,EAATA,SAAlC;AAA6C7rH,IAAAA,OAAO,EAAPA;AAA7C,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS62G,OAAT,CAAiB0lT,OAAjB,EAA0B1wS,SAA1B,EAAqC;AACjC,SAAO;AAAE9xH,IAAAA,IAAI,EAAE;AAAG;AAAX;AAA0Bwia,IAAAA,OAAO,EAAPA,OAA1B;AAAmC1wS,IAAAA,SAAS,EAATA;AAAnC,GAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8wS,iBAAT,CAA2BznT,EAA3B,EAA+B;AAC3B91G,EAAAA,OAAO,CAACC,OAAR,CAAgB,IAAhB,EAAsBr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C;AACH,KAFD,MAGK;AACDA,MAAAA,aAAa,GAAGy5Z,gBAAhB;AACH;AACJ;;AACD,SAAOz5Z,aAAP;AACH;AACD;;;AACA,SAASknY,eAAT,CAAyBx3b,KAAzB,EAAgC;AAC5B;AACA;AACA,SAAQA,KAAK,CAAC44F,YAAN,GAAqB54F,KAAK,CAAC44F,YAAN,GAAqB,CAArB,CAArB,GAA+C54F,KAAK,CAAC2J,MAA7D;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;;AACA,SAAS0rc,kBAAT,GAA8B;AAC1B;AACA;AACA;AACA;AACA,SACA;AACC,WAAO2U,SAAP,KAAqB,WAArB,IAAoC,CAAC,CAACA,SAAvC,IACI;AACC,WAAOC,OAAP,KAAmB,WAAnB,IAAkC,CAAC,CAACA,OAFzC,IAGI;AACC,WAAOC,IAAP,KAAgB,WAAhB,IAA+B,CAAC,CAACA,IAJtC,IAKI;AACC,WAAOC,KAAP,KAAiB,WAAjB,IAAgC,CAAC,CAACA;AARvC;AASH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7XA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA,SAASC,oBAAT,GAAgC;AAC5B,QAAMhlc,KAAK,CAAC,iCAAD,CAAX;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASilc,+BAAT,GAA2C;AACvC,QAAMjlc,KAAK,CAAC,oCAAD,CAAX;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASklc,qCAAT,GAAiD;AAC7C,QAAMllc,KAAK,CAAC,6CAAD,CAAX;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASmlc,2BAAT,GAAuC;AACnC,QAAMnlc,KAAK,CAAC,kFACR,wCADO,CAAX;AAEH;AACD;AACA;AACA;AACA;;;AACA,SAASolc,0BAAT,GAAsC;AAClC,QAAMplc,KAAK,CAAC,sDAAD,CAAX;AACH;AACD;AA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eAjzFoGp7e,kEAizFpG;AAAA;SApCMo7e;;;AAqCN;AAAA;AAAA;AAAA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;;IACMQ;AACF,0BAAYhpd,SAAZ,EAAuBipd,OAAvB,EAAgCjgd,KAAhC,EAAuC4oD,KAAvC,EAA8C;AAAA;;AAC1C,SAAK5xD,SAAL,GAAiBA,SAAjB;AACA,SAAKipd,OAAL,GAAeA,OAAf;AACA,SAAKjgd,KAAL,GAAaA,KAAb;AACA,SAAK4oD,KAAL,GAAaA,KAAb;AACH;;;;SACD,eAAY;AACR,aAAO,KAAK5oD,KAAL,KAAe,CAAtB;AACH;;;SACD,eAAW;AACP,aAAO,KAAKA,KAAL,KAAe,KAAK4oD,KAAL,GAAa,CAAnC;AACH;;;SACD,eAAW;AACP,aAAO,KAAK5oD,KAAL,GAAa,CAAb,KAAmB,CAA1B;AACH;;;SACD,eAAU;AACN,aAAO,CAAC,KAAKy1G,IAAb;AACH;;;;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM7jG;MAAAA;AACF,qBAAY+jG,cAAZ,EAA4BC,SAA5B,EAAuCC,QAAvC,EAAiD;AAAA;;AAC7C,WAAKF,cAAL,GAAsBA,cAAtB;AACA,WAAKC,SAAL,GAAiBA,SAAjB;AACA,WAAKC,QAAL,GAAgBA,QAAhB;AAC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B;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM+kC;MAAAA;AACF,kBAAY8jG,cAAZ,EAA4Bt+G,WAA5B,EAAyC;AAAA;;AACrC,WAAKs+G,cAAL,GAAsBA,cAAtB;AACA,WAAKg/L,QAAL,GAAgB,IAAI6rK,WAAJ,EAAhB;AACA,WAAKC,gBAAL,GAAwB,IAAxB;AACA,WAAKC,gBAAL,GAAwB,IAAxB;AACA,WAAKC,YAAL,GAAoB,IAApB;AACA,WAAKC,YAAL,GAAoB,IAApB;AACA,WAAKH,gBAAL,GAAwBppd,WAAxB;AACH;AACD;AACJ;AACA;;;;;WACI,aAASg4L,SAAT,EAAoB;AAChB,aAAKslH,QAAL,CAAc39S,SAAd,GAA0B,KAAK29S,QAAL,CAAcksK,IAAd,GAAqBxxR,SAA/C;;AACA,aAAKyxR,WAAL;AACH;AACD;AACJ;AACA;;;;WACI,aAAaz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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM2tP;MAAAA;AACF,sBAAY/0N,MAAZ,EAAoBgjc,eAApB,EAAqC;AAAA;;AACjC,WAAKhjc,MAAL,GAAcA,MAAd;AACA,WAAKgjc,eAAL,GAAuBA,eAAvB;AACH;;;;aACD,mBAAUlwe,KAAV,EAA0D;AAAA,YAAzCigD,MAAyC,uEAAhC,YAAgC;AAAA,YAAlBsgb,QAAkB;AAAA,YAARrzb,MAAQ;;AACtD,YAAI9kC,EAAJ;;AACA,YAAIpI,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA3B,IAAiCA,KAAK,KAAKA,KAA/C,EACI,OAAO,IAAP;;AACJ,YAAI;AACA,iBAAO4gB,UAAU,CAAC5gB,KAAD,EAAQigD,MAAR,EAAgB/S,MAAM,IAAI,KAAKA,MAA/B,EAAuC,CAAC9kC,EAAE,GAAGm4d,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,KAAK,KAAK,CAAvC,GAA2CA,QAA3C,GAAsD,KAAK2P,eAAjE,MAAsF,IAAtF,IAA8F9ne,EAAE,KAAK,KAAK,CAA1G,GAA8GA,EAA9G,GAAmHmV,SAA1J,CAAjB;AACH,SAFD,CAGA,OAAOzR,KA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B,GAAyBD,OAAO,GAAGC,OAAV,GAAoB,CAAC,CAArB,GAAyB,CAAzD;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;AACF,yBAAY7jc,OAAZ,EAAqB;AAAA;;AACjB,WAAKA,OAAL,GAAeA,OAAf;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;;aACI,mBAAUvtC,KAAV,EAAiB8le,UAAjB,EAA6B54b,MAA7B,EAAqC;AACjC,YAAI,CAACmkc,OAAO,CAACrxe,KAAD,CAAZ,EACI,OAAO,IAAP;AACJktC,QAAAA,MAAM,GAAGA,MAAM,IAAI,KAAKK,OAAxB;;AACA,YAAI;AACA,cAAM6/H,GAAG,GAAGkkU,WAAW,CAACtxe,KAAD,CAAvB;AACA,iBAAO+lP,YAAY,CAAC34E,GAAD,EAAMlgI,MAAN,EAAc44b,UAAd,CAAnB;AACH,SAHD,CAIA,OAAOh6d,KAAP,EAAc;AACV,gBAAMije,wBAAwB,CAACqC,WAAD,EAActle,KAAK,CAACF,OAApB,CAA9B;AACH;AACJ;;;;;;AAELwle,EAAAA,WAAW,CAACt3c,IAAZ;AAAA,qBAAyGs3c,WAAzG,EA/nJoG1hf,+DA+nJpG,CAAsIswB,oDAAtI;AAAA;;AACAoxd,EAAAA,WAAW,CAAC72Y,KAAZ,kBAhoJoG7qG,0DAgoJpG;AAAA;AAAA,UAAuG0hf,WAAvG;AAAA;AAAA;SAzBMA;;;AA0BN;AAAA;AAAA;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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ACmva,KAAvB;;AACA;AACH;;AAxBT;AA0BH,SA3BD;AA4BA,aAAKQ,SAAL,GAAiB,KAAKD,OAAL,GAAe,IAAhC;AACH;AACJ;;;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;IACMM,6NACF,0BAAY7mc,YAAZ,EAA0B;AAAA;;AACtB,OAAKA,YAAL,GAAoBA,YAApB;AACH;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM8mc;AACF,yBAAc;AAAA;;AACV,SAAKz3e,GAAL,GAAW,IAAIk5D,GAAJ,EAAX;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACI,aAAI36C,KAAJ,EAAW/c,KAAX,EAAkB;AACd,WAAKxB,GAAL,CAASwU,GAAT,CAAa+J,KAAb,EAAoB/c,KAApB;AACA,aAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,aAAI+c,KAAJ,EAAW;AACP,UAAI,CAAC,KAAKve,GAAL,CAASiiI,GAAT,CAAa1jH,KAAb,CAAL,EAA0B;AACtB,aAAKve,GAAL,CAASwU,GAAT,CAAa+J,KAAb,EAAoBA,KAAK,CAACoyB,YAAN,EAApB;AACH;;AACD,aAAO,KAAK3wC,GAAL,CAASkN,GAAT,CAAaqR,KAAb,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,iBAAOA,KAAP,EAAc;AACV,WAAKve,GAAL,CAAS+W,MAAT,CAAgBwH,KAAhB;AACA,aAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,aAAIA,KAAJ,EAAW;AACP,aAAO,KAAKve,GAAL,CAASiiI,GAAT,CAAa1jH,KAAb,CAAP;AACH;AACD;AACJ;AACA;;;;WACI,gBAAO;AACH,aAAO,KAAKve,GAAL,CAASiM,IAAT,EAAP;AA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D2H,UAA7D,CAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMioN,SAAS,GAAG,EAAlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMgjN;;;;;;;;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,qBAAev/d,SAAf,EAA0B;AACtB,aAAO6+d,0BAA0B,CAAC7+d,SAAD,CAAjC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,0BAAwBA,SAAxB,EAAmCv0D,MAAnC,EAA2C;AACvC,UAAM+zhB,2BAA2B,GAAGD,kBAAkB,CAAC37hB,OAAnB,CAA2Bo8D,SAA3B,CAApC;AACA,aAAOu/d,kBAAkB,CAACE,qBAAnB,CAAyCD,2BAAzC,EAAsE/zhB,MAAtE,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,+BAA6Bu0D,SAA7B,EAAwCv0D,MAAxC,EAAgD;AAC5C,aAAO,IAAIi0hB,mBAAJ,CAAwB1/d,SAAxB,EAAmCv0D,MAAnC,CAAP;AACH;;;;;;IAECi0hB;MAAAA;AACF;AACJ;AACA;AACI,iCAAYC,UAAZ,EAAwBhyc,OAAxB,EAAiC;AAAA;;AAC7B;AACA,WAAKiyc,oBAAL,GAA4B,CAA5B;AACA,WAAKD,UAAL,GAA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIC,mEAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,qBAAT,CAA+B/uC,KAA/B,EAAsC3N,KAAtC,EAA6C28C,qBAA7C,EAAoE9ygB,KAApE,EAA2E+ygB,aAA3E,EAA0FC,cAA1F,EAA0G;AACtG1pd,EAAAA,SAAS,IAAIg0a,qBAAqB,CAAC2E,QAAQ,EAAT,CAAlC;AACA,MAAIgxC,SAAS,GAAGD,cAAc,GAAG78C,KAAK,CAACy6B,aAAT,GAAyBz6B,KAAK,CAAC06B,aAA7D;AACA,MAAIqiB,QAAQ,GAAGvlB,oBAAoB,CAACslB,SAAD,CAAnC;AACA,MAAIE,QAAQ,GAAGnlB,oBAAoB,CAACilB,SAAD,CAAnC;AACAnvC,EAAAA,KAAK,CAAC9je,K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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,kBAAS;AACL,WAAKA,MAAL,CAAYh/J,KAAZ,KAAsB,CAAC;AAAI;AAA3B;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,oBAAW;AACP,WAAKg/J,MAAL,CAAYh/J,KAAZ,KAAsB;AAAI;AAA1B;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,yBAAgB;AACZ+tL,MAAAA,qBAAqB,CAAC,KAAK/uB,MAAL,CAAYtT,KAAZ,CAAD,EAAqB,KAAKsT,MAA1B,EAAkC,KAAKlve,OAAvC,CAArB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;WACI,0BAAiB;AACb,UAAIyqD,SAAJ,EAAe;AACX2zc,QAAAA,sBAAsB,CAAC,KAAKlvB,MAAL,CAAYtT,KAAZ,CAAD,EAAqB,KAAKsT,MAA1B,EAAkC,KAAKlve,OAAvC,CAAtB;AACH;AACJ;;;WACD,oCAA2B;AACvB,UAAI,KAAK8kX,OAAT,EAAkB;AACd,YAAM+/F,YAAY,GAAGp6Z,SAAS,GAAG,+DAAH,GAAqE,EAAnG;AACA,cAAM,IAAIioa,YAAJ,CAAiB;AAAI;AAArB,UAAkD7N,YAAlD,CAAN;AACH;;AACD,WAAKynE,wBAAL,GAA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,CAA1B;AACA;AACA;AACA;AACA;;AACA,IAAM7iF,KAAK,gBAAG67e,iBAAiB,CAAC,OAAD,EAAU,UAACksD,mBAAD;AAAA,SAA0B;AAAEA,IAAAA,mBAAmB,EAAnBA;AAAF,GAA1B;AAAA,CAAV,CAA/B;AACA;AACA;AACA;AACA;;AACA,IAAM7niB,MAAM,gBAAG27e,iBAAiB,CAAC,QAAD,EAAW,UAACksD,mBAAD;AAAA,SAA0B;AAAEA,IAAAA,mBAAmB,EAAnBA;AAAF,GAA1B;AAAA,CAAX,CAAhC;AACA;AACA;AACA;AACA;;AACA,IAAMrwe,WAAW,gBAAGmkb,iBAAiB,CAAC,aAAD,EAAgB,UAACmsD,gBAAD;AAAA,SAAuB;AAAEA,IAAAA,gBAAgB,EAAhBA;AAAF,GAAvB;AAAA,CAAhB,CAArC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMpniB,YAAY,gBAAGi7e,iBAAiB,CAAC,cAAD,EAAiB,UAAClnf,SAAD,EAAYs8C,IAAZ;AAAA,SAAsB;AAAEt8C,IAAAA,SAAS,EAATA,SAAF;AAAas8C,IAAAA,IAAI,EAAJA;AAAb,GAAtB;AAAA,CAAjB,CAAtC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA,IAAM1wC,QAAQ,gBAAGo6e,aAAa,CAAC,UAAD,EAAa,UAACn/Z,QAAD;AAAA,SAAcA,QAAd;AAAA,CAAb,EAAqCn9E,SAArC,EAAgDA,SAAhD;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAACnlB,IAAD,EAAO2pG,IAAP;AAAA,SAAgBggd,eAAe,CAAC3pjB,IAAD,EAAO2pG,IAAP,CAA/B;AAAA,CAZ8B,CAA9B;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS9tC,IAAT,GAAuB,CACnB;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;;AACA,IAAMkzf,gBAAgB,GAAG,IAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,eAAe,gBAAG,IAAI9yiB,cAAJ,CAAmB,yBAAnB,CAAxB;AACA;AACA;AACA;AACA;AACA;;IACM+yiB;MAAAA;AACF,mCAAYC,QAAZ,EAAsB;AAAA;;AAAA;;AAClB,WAAKA,QAAL,GAAgBA,QAAhB;AACA,WAAK5pjB,OAAL,GAAeu2D,IAAf;AACA,WAAKt2D,MAAL,GAAcs2D,IAAd;AACA,WAAKquH,WAAL,GAAmB,KAAnB;AACA,WAAKkgB,IAAL,GAAY,KAAZ;AACA,WAAK+kX,WAAL,GAAmB,IAAI9pjB,OAAJ,CAAY,UAACqK,GAAD,EAAM0/iB,GAAN,EAAc;AACzC,eAAI,CAAC9pjB,OAAL,GAAeoK,GAAf;AACA,eAAI,CAACnK,MAAL,GAAc6pjB,GAAd;AACH,OAHkB,CAAnB;AAIH;AACD;;;;;aACA,2BAAkB;AAAA;;AACd,YAAI,KAAKllY,WAAT,EAAsB;AAClB;AACH;;AACD,YAAMmlY,iBAAiB,GAAG,EAA1B;;AACA,YAAMpge,QAAQ,GAAG,S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ije,gBAAgB,CAACuQ,OAAD,EAAU,CAAC;AACtEhwjB,IAAAA,IAAI,EAAE4mB,UADgE;AAEtEmxC,IAAAA,IAAI,EAAE,CAAC;AAAElkD,MAAAA,UAAU,EAAE;AAAd,KAAD;AAFgE,GAAD,CAAV,EAG3D,IAH2D,EAGrD,IAHqD,CAAnE;AAIH,CALD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASq8iB,eAAT,GAA2B;AACvB,MAAI,OAAOvphB,iBAAP,KAA6B,WAA7B,IAA4CA,iBAA5C,IACA,OAAOE,IAAP,KAAgB,WADhB,IAC+BA,IAAI,CAACsphB,MAAL,KAAgB,IADnD,EACyD;AACrD;AACA;AACA;AACA,WAAOtphB,IAAI,CAACsphB,MAAZ;AACH,GAND,MAOK;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAQ,OAAOpphB,SAAP,KAAqB,WAArB,IAAoCA,SAAS,CAAC+N,MAA/C,IAA0D85f,iBAAjE;AACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMhnhB,SAAS,gBAAG,IAAI1L,cAAJ,CAAmB,UAAnB,EAA+B;AAC7CrI,EAAAA,UAAU,EAAE,MADiC;AAE7C3O,EAAAA,OAAO,EAAE;AAAA,WAAM66b,MAAM,CAACn4a,SAAD,EAAY+/d,WAAW,CAACxge,QAAZ,GAAuBwge,WAAW,CAAClxT,QAA/C,CAAN,IAAkEy5X,eAAe,EAAvF;AAAA;AAFoC,CAA/B,CAAlB;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM/vF,qBAAqB,gBAAG,IAAIjkd,cAAJ,CAAmB,qBAAnB,EAA0C;AACpErI,EAAAA,UAAU,EAAE,MADwD;AAEpE3O,EAAAA,OAAO,EAAE;AAAA,WAAM2piB,iBAAN;AAAA;AAF2D,CAA1C,CAA9B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMuhB,YAAY,gBAAG,IAAIl0iB,cAAJ,CAAmB,cAAnB,CAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMm0iB,mBAAmB,gBAAG,IAAIn0iB,cAAJ,CAAmB,oBAAnB,CAA5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIo0iB,0BAA0B;AAA1BA,EAAAA,0BAA0B,GAA1BA,0BAA0B;AAE1BA,EAAAA,0BAA0B,CAACA,0BAA0B,CAAC,OAAD,CAA1B,GAAsC,CAAvC,CAA1B,GAAsE,OAAtE;AACAA,EAAAA,0BAA0B,CAACA,0BAA0B,CAAC,SAAD,CAA1B,GAAwC,CAAzC,CAA1B,GAAwE,SAAxE;AACAA,EAAAA,0BAA0B,CAACA,0BAA0B,CAAC,QAAD,CAA1B,GAAuC,CAAxC,CAA1B,GAAuE,QAAvE;AAJ0B,SAA1BA,0BAA0B;AAAA,IAA9B;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACMC,yOACF,sCAAYC,eAAZ,EAA6BC,kBAA7B,EAAiD;AAAA;;AAC7C,OAAKD,eAAL,GAAuBA,eAAvB;AACA,OAAKC,kBAAL,GAA0BA,kBAA1B;AACH;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC;MAAAA;;;;;;;;AACF;AACJ;AACA;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1F;AACA;AACA,QAAMC,8BAA8B,GAAGF,2BAA2B,CAACF,IAAI,CAACK,UAAL,CAAgB,kBAAhB,CAAD,CAAlE;;AACA,QAAID,8BAAJ,EAAoC;AAChCF,MAAAA,2BAA2B,GAAGE,8BAA9B;AACH;;AACD,QAAME,6BAA6B,GAAGH,0BAA0B,CAACH,IAAI,CAACK,UAAL,CAAgB,kBAAhB,CAAD,CAAhE;;AACA,QAAIC,6BAAJ,EAAmC;AAC/BH,MAAAA,0BAA0B,GAAGG,6BAA7B;AACH;AACJ;;AACD,SAAO;AAAEJ,IAAAA,2BAA2B,EAA3BA,2BAAF;AAA+BC,IAAAA,0BAA0B,EAA1BA;AAA/B,GAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM3piB;AACF,wBAAoI;AAAA,qCAAtH+piB,oBAAsH;AAAA,QAAtHA,oBAAsH,sCAA/F,KAA+F;AAAA,qCAAxFC,kCAAwF;AAAA,QAAxFA,kCAAwF,sCAAnD,KAAmD;AAAA,qCAA5CC,gCAA4C;AAAA,QAA5CA,gCAA4C,sCAAT,KAAS;;AAAA;;AAChI,SAAKC,oBAAL,GAA4B,KAA5B;AACA,SAAKC,oBAAL,GAA4B,KAA5B;AACA;AACR;AACA;;AACQ,SAAK1rX,QAAL,GAAgB,IAAhB;AACA;AACR;AACA;;AACQ,SAAK2rX,UAAL,GAAkB,IAAI3njB,YAAJ,CAAiB,KAAjB,CAAlB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAK4njB,gBAAL,GAAwB,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KAAd,CAA9C,CAHmC,CAGiC;;AACpE,WAAO,IAAI4uD,SAAJ,CAAc9qC,aAAd,EAA6BA,aAA7B,CAAP;AACH,GALD,MAMK,IAAIhqB,KAAK,CAACrpf,IAAN,IAAc;AAAE;AAAF,IAAmB;AAAG;AAAtB,IAA2C;AAAG;AAA5D,GAAJ,EAA4E;AAC7E;AACA;AACA,QAAMu6jB,iBAAiB,GAAGhrE,KAAK,CAACf,0BAAD,CAA/B,CAH6E,CAGhB;;AAC7D,WAAO,IAAI2vD,SAAJ,CAAcoc,iBAAd,EAAiChrE,KAAjC,CAAP;AACH;;AACD,SAAO,IAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMirE;;;;;;;;;;;;EAAgB1+jB;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM4yd;;;;;;;;;;;;EAAwB8rG;AAG9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIC,6BAA6B,GAAG,EAApC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;IACMC,+NACF,4BAAYxqjB,IAAZ,EAAkBgT,QAAlB,EAA4B;AAAA;;AACxB,OAAKhT,IAAL,GAAYA,IAAZ;AACA,OAAKgT,QAAL,GAAgBA,QAAhB;AACH;AAEL;AACA;AACA;;;AACA,SAASy3iB,gBAAT,CAA0BC,QAA1B,EAAoC;AAChC,SAAOA,QAAQ,CAACx0jB,GAAT,CAAa,UAAC8a,EAAD;AAAA,WAAQA,EAAE,CAAC3X,aAAX;AAAA,GAAb,CAAP;AACH;AACD;AACA;AACA;;;IACMsxjB;AACF,qBA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C3B;AACA,SAAOA,KAAK,IAAI,IAAT,IAAiB,OAAOA,KAAK,CAACmF,MAAb,KAAwB,QAAhD;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM4b,aAAa,gBAAG,IAAIzM,yDAAJ,CAAmB,cAAnB,CAAtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMotjB,mBAAmB,gBAAG,IAAIptjB,yDAAJ,CAAmB,mBAAnB,CAA5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMqtjB,YAAY,GAAG,oMAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMzojB;;;;;;;;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,iBAAWkf,IAAX,EAAgB;AACZ,aAAOywG,YAAY,CAACzwG,IAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,aAAWD,IAAX,EAAgB;AACZ,aAAO4wG,YAAY,CAAC5wG,IAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,kBAAgB14B,OAAhB,EAAyB;AACrB,aAAOmikB,iBAAiB,CAACnikB,OAAD,CAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,sBAAoBA,OAApB,EAA6B;AACzB,aAAOoikB,qBAAqB,CAACpikB,OAAD,CAA5B;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,eAAaA,OAAb,EAAsB;AAClB,aAAOqikB,cAAc,CAACrikB,OAAD,CAArB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,mBAAiBojX,UAAjB,EAA4B;AACxB,aAAOk/M,kBAAkB,CAACl/M,UAAD,CAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,mBAAiBm/M,UAAjB,EAA4B;AACxB,aAAOC,kBAAkB,CAACD,UAAD,CAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,iBAAehojB,QAAf,EAAwB;AACpB,aAAOkojB,gBAAgB,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CD;AACJ;AACA;AACA;AACA;;;;SACI,eAAqB;AACjB,aAAO,KAAKC,yBAAL,IAAkC,IAAzC;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WACI,4BAAmB1jiB,EAAnB,EAAuB;AACnB,WAAKujiB,mBAAL,CAAyB/+jB,IAAzB,CAA8Bw7B,EAA9B;AACH;AACD;AACJ;AACA;AACA;AACA;;;;WACI,qCAA4B;AACxB,WAAKujiB,mBAAL,CAAyBtukB,OAAzB,CAAiC,UAAA+qC,EAAE;AAAA,eAAIA,EAAE,EAAN;AAAA,OAAnC;;AACA,WAAKujiB,mBAAL,GAA2B,EAA3B;AACH;AACD;AACJ;AACA;AACA;;;;WACI,iBAAyB;AAAA,UAAnBhkkB,KAAmB,uEAAXud,SAAW;AACrB,UAAI,KAAK9d,OAAT,EACI,KAAKA,OAAL,CAAawnE,KAAb,CAAmBjnE,KAAnB;AACP;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,kBAASkoW,SAAT,EAAoBj7W,IAApB,EAA0B;AACtB,aAAO,KAAKwS,OAAL,GAAe,KAAKA,OAAL,CAAaukZ,QAAb,CAAsB97C,SAAtB,EAAiCj7W,IAAjC,CAAf,GAAwD,KAA/D;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,kBAASi7W,SAAT,EAAoBj7W,IAApB,EAA0B;AACtB,aAAO,KAAKwS,OAAL,GAAe,KAAKA,OAAL,CAAa2kkB,QAAb,CAAsBl8N,SAAtB,EAAiCj7W,IAAjC,CAAf,GAAwD,IAA/D;AACH;;;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMiS;;;;;AACF,uBAAc;AAAA;;AAAA;;AACV,iCAAS69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KAAgB25jB,QAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;SACI,eAAc;AACV,aAAO,KAAK35jB,MAAL,KAAgB25jB,QAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;;SACI,eAAY;AACR,aAAO,CAAC,KAAKnoU,QAAb;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;SACI,eAAgB;AACZ,aAAO,CAAC,KAAK71L,OAAb;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;;SACI,eAAe;AACX,aAAO,KAAKu/f,SAAL,GAAiB,KAAKA,SAAtB,GAAmC,KAAKplkB,MAAL,GAAc,KAAKA,MAAL,CAAYsvH,QAA1B,GAAqC,QAA/E;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,uBAAcutc,UAAd,EAA0B;AACtB,WAAKkB,cAAL,GAAsBlB,UAAtB;AACA,WAAK8B,oBAAL,GAA4B0F,iBAAiB,CAACxH,UAAD,CAA7C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,4BAAmBA,UAAnB,EAA+B;AAC3B,WAAKoB,mBAAL,GAA2BpB,UAA3B;AACA,WAAK+B,yBAAL,GAAiC2F,sBAAsB,CAAC1H,UAAD,CAAvD;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,uBAAcA,UAAd,EAA0B;AACtB,WAAKhnjB,aAAL,CAAmBuojB,cAAa,CAACvB,UAAD,EAAa,KAAKkB,cAAlB,CAAhC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,4BAAmBlB,UAAnB,EAA+B;AAC3B,WAAK4E,kBAAL,CAAwBrD,cAAa,CAACvB,UAAD,EAAa,KAAKoB,mBAAlB,CAArC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,0BAAiBpB,UAAjB,EAA6B;AACzB,WAAKhnjB,aAAL,CAAmB0ojB,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f,OAAL,IAAgB,KAAKA,OAAL,CAAa4nJ,KAAjD;AACA,aAAO,CAACu7V,QAAD,IAAa,CAAC,CAAC2B,WAAf,IAA8B,CAAC,KAAK9kf,OAAL,CAAa2kf,iBAAb,EAAtC;AACH;;;;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMz5Y;;;;;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,yBAA+D;AAAA;;AAAA,QAAnD25Y,SAAmD,uEAAvC,IAAuC;AAAA,QAAjC5C,eAAiC;AAAA,QAAhB3C,cAAgB;;AAAA;;AAC3D,gCAAM0C,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAAC9C,cAAD,EAAiB2C,eAAjB,CAA1D;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,WAAKv6hB,YAAL,GAAoB,IAApB;AACA;;AACA,WAAK8O,SAAL,GAAiB,EAAjB;AACA;;AACA,WAAKophB,cAAL,GAAsB,KAAtB;;AACA,WAAKmF,eAAL,CAAqBF,SAArB;;AACA,WAAKG,kBAAL,CAAwB/C,eAAxB;;AACA,WAAKgD,gBAAL;;AACA,WAAKrxjB,sBAAL,CAA4B;AACxBuvjB,MAAAA,QAAQ,EAAE,IADc;AAExB;AACA;AACA;AACA;AACA17hB,MAAAA,SAAS,EAAE,CA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,CAAJ,EAAmC;AAC/B,aAAKtskB,KAAL,GAAa,KAAKonkB,aAAL,GAAqBkF,SAAS,CAACtskB,KAA5C;AACAsskB,QAAAA,SAAS,CAACnljB,QAAV,GAAqB,KAAK02L,OAAL,CAAa;AAAE+sX,UAAAA,QAAQ,EAAE,IAAZ;AAAkB17hB,UAAAA,SAAS,EAAE;AAA7B,SAAb,CAArB,GACI,KAAK+yE,MAAL,CAAY;AAAE2od,UAAAA,QAAQ,EAAE,IAAZ;AAAkB17hB,UAAAA,SAAS,EAAE;AAA7B,SAAZ,CADJ;AAEH,OAJD,MAKK;AACD,aAAKlvC,KAAL,GAAa,KAAKonkB,aAAL,GAAqBkF,SAAlC;AACH;AACJ;;;;EA1MqBjC;AA4M1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMnjkB;;;;;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,qBAAYgU,QAAZ,EAAsBwujB,eAAtB,EAAuC3C,cAAvC,EAAuD;AAAA;;AAAA;;AACnD,gCAAM0C,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAAC9C,cAAD,EAAiB2C,eAAjB,CAA1D;AACA,WAAKxujB,QAAL,GAAgBA,QAAhB;;AACA,WAAKwxjB,gBAAL;;AACA,WAAKD,kBAAL,CAAwB/C,eAAxB;;AACA,WAAKoD,cAAL;;AACA,WAAKzxjB,sBAAL,CAA4B;AACxBuvjB,MAAAA,QAAQ,EAAE,IADc;AAExB;AACA;AACA;AACA17hB,MAAAA,SAAS,EAAE,CAAC,CAAC,OAAK63h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AAA,eApsI4G/+kB,gEAosI5G,CAA+L,CAAC8+kB,kBAAD,CAA/L,GApsI4G9+kB,wEAosI5G;AAAA;SAhBM++kB;;;AAiBN;AAAA;AAAA;AAAA;AA4BA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMG,oBAAoB,GAAG;AACzB97kB,EAAAA,OAAO,EAAEoM,SADgB;AAEzB4gC,EAAAA,WAAW,eAAEngB,yDAAU,CAAC;AAAA,WAAM6gK,OAAN;AAAA,GAAD;AAFE,CAA7B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAM/qE,eAAe,gBAAI;AAAA,SAAMh4G,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAN;AAAA,CAAD,EAAxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM8iL;MAAAA;;;;;AACF,qBAAYj7K,MAAZ,EAAoB68jB,UAApB,EAAgC0E,eAAhC,EAAiD3lX,cAAjD,EAAiEv7I,kBAAjE,EAAqF;AAAA;;AAAA;;AACjF;AACA,cAAKA,kBAAL,GAA0BA,kBAA1B;AACA,cAAKnmE,OAAL,GAAe,IAAIkzL,WAAJ,EAAf;AACA;;AACA,cAAKk8Y,WAAL,GAAmB,KAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,cAAK7ogB,MAAL,GAAc,IAAI1jE,uDAAJ,EAAd;AACA,cAAKmlF,OAAL,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vqC,gEAg4EhG;AAAA,WAAwGf,MAAxG;AAAA,aAAwGA,MAAxG;AAAA;SA93BMA;;;AA+3BN;AAAA;AAAA;AAAA;;AAGA,SAAS0yqB,gBAAT,CAA0BlW,QAA1B,EAAoC;AAChC,OAAK,IAAIrgnB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqgnB,QAAQ,CAAChmpB,MAA7B,EAAqC2lC,CAAC,EAAtC,EAA0C;AACtC,QAAM4hnB,GAAG,GAAGvB,QAAQ,CAACrgnB,CAAD,CAApB;;AACA,QAAI4hnB,GAAG,IAAI,IAAX,EAAiB;AACb,YAAM,IAAIj4oB,KAAJ,uCAAyCi4oB,GAAzC,+BAAiE5hnB,CAAjE,EAAN;AACH;AACJ;AACJ;;AACD,SAASu0nB,4BAAT,CAAsC75nB,MAAtC,EAA8C;AAC1C,SAAOA,MAAM,KAAK,YAAlB;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACM28nB;MAAAA;AACF,wBAAYnzqB,MAAZ,EAAoBgO,KAApB,EAA2BolqB,iBAA3B,EAA8C5tqB,QAA9C,EAAwD8kB,EAAxD,EAA4D;AAAA;;AACxD,WAAKtqB,MAAL,GAAcA,MAAd;AACA,WAAKgO,KAAL,GAAaA,KAAb;AACA,WAAKolqB,iBAAL,GAAyBA,iBAAzB;AACA,WAAK5tqB,QAAL,GAAgBA,QAAhB;AACA,WAAK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AA;AAAA;;AAkCA,SAASD,aAAT,CAAuBhpoB,CAAvB,EAA0B;AACtB,SAAOA,CAAC,KAAK,EAAN,IAAY,CAAC,CAACA,CAArB;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMopoB;MAAAA;AACF,8BAAY3zqB,MAAZ,EAAoBoT,OAApB,EAA6B5N,QAA7B,EAAuCC,GAAvC,EAA4CsQ,IAA5C,EAAkD69pB,YAAlD,EAAgE;AAAA;;AAAA;;AAC5D,WAAK5zqB,MAAL,GAAcA,MAAd;AACA,WAAKoT,OAAL,GAAeA,OAAf;AACA,WAAK5N,QAAL,GAAgBA,QAAhB;AACA,WAAKC,GAAL,GAAWA,GAAX;AACA,WAAKsQ,IAAL,GAAYA,IAAZ;AACA,WAAK69pB,YAAL,GAAoBA,YAApB;AACA,WAAK/mnB,OAAL,GAAe,EAAf;AACA,WAAKmmF,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAK6giB,uBAAL,GAA+B;AAAEC,QAAAA,KAAK,EAAE;AAAT,OAA/B;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACQ,WAAKC,cAAL,GAAsB,IAAIzgqB,uDAAJ,EAAtB;AACA,WAAK0gqB,wBAAL,GAAgCh0qB,MAAM,CAACG,MAAP,CAAcG,SAAd,CAAwB,UAACiqC,CAAD,EAAO;AAC3D,YAAIA,CAAC,YAAY3qC,aAAjB,EAAgC;AAC5B,iBAAI,CAACo3E,MAAL;AACH;AACJ,OAJ+B,CAAhC;AAKH;AACD;;;;;aACA,8BA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nC,MAAb;AACH;;AACD,cAAM,IAAIxiB,KAAJ,CAAUplB,KAAK,CAACyc,KAAhB,CAAN;AACH,OAL6D,CADvD,EAOF8E,SAPE,EAAP;AAQH;;;SACD,eAAgB;AACZ,aAAO,CAAC,CAAC,KAAK42pB,aAAd;AACH;;;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMkB;MAAAA;AACF,oBAAYP,EAAZ,EAAgB;AAAA;;AACZ,WAAKA,EAAL,GAAUA,EAAV;AACA,WAAKQ,mBAAL,GAA2B,IAAI/6pB,0CAAJ,EAA3B;;AACA,UAAI,CAACu6pB,EAAE,CAACziqB,SAAR,EAAmB;AACf,aAAKwiK,QAAL,GAAgBhnJ,wCAAhB;AACA,aAAK0npB,kBAAL,GAA0B1npB,wCAA1B;AACA,aAAKhyB,YAAL,GAAoBgyB,wCAApB;AACA;AACH;;AACD,WAAKgnJ,QAAL,GAAgB,KAAKiggB,EAAL,CAAQK,YAAR,CAAqB,MAArB,EAA6Bp5qB,IAA7B,CAAkCoP,mDAAG,CAAC,UAAAoN,OAAO;AAAA,eAAIA,OAAO,CAAChe,IAAZ;AAAA,OAAR,CAArC,CAAhB;AACA,WAAKg7qB,kBAAL,GACI,KAAKT,EAAL,CAAQK,YAAR,CAAqB,oBAArB,EAA2Cp5qB,IAA3C,CAAgDoP,mDAAG,CAAC,UAACoN,OAAD;AAAA,eAAaA,OAAO,CAAChe,IAArB;AAAA,OAAD,CAAnD,CADJ;AAEA,WAAKi7qB,W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A;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;ACjByE;AAC1D;AACf;;AAEA;AACA,kCAAkC,0EAA0B;AAC5D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACxDiD;AACoB;AACE;AACxD;AACf,kCAAkC,wEAAwB;AAC1D;AACA,gBAAgB,8DAAc;AAC9B;;AAEA;AACA,sBAAsB,8DAAc;AACpC;AACA,MAAM;AACN;AACA;;AAEA,WAAW,yEAAyB;AACpC;AACA;;;;;;;;;;;;;;;AClBe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACb+C;AAChC;AACf;AACA;AACA,IAAI;AACJ;AACA,iBAAiB,6DAAa;AAC9B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACnBe;AACf;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLiD;AAClC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,kBAAkB,8DAAc;AAChC;;;;;;;;;;;;;;;ACjBe;AACf;AACA;;;;;;;;;;;;;;;ACFe;AACf;AACA;AACA;;AAEA;AACA,gFAAgF;AAChF;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;;;;ACXe;AACf;AACA;;;;;;;;;;;;;;;ACFe;AACf;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4BAA4B,+BAA+B;AAC3D;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AC5Be;AACf;AACA;;;;;;;;;;;;;;;ACFe;AACf;AACA;;;;;;;;;;;;;;;;;ACFkC;AAC6B;AAChD;AACf,eAAe,sDAAO;AACtB;AACA,IAAI;AACJ;AACA;;AAEA,SAAS,qEAAqB;AAC9B;;;;;;;;;;;;;;;;;ACV+C;AACE;;AAEjD;AACA;AACA;AACA,IAAI;AACJ;AACA,iBAAiB,6DAAa;AAC9B;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR,QAAQ,8DAAc;AACtB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;AClDe;AACf;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACPiD;AACY;AACY;AACtB;AACpC;AACf,SAAS,8DAAc,SAAS,oEAAoB,YAAY,0EAA0B,YAAY,+DAAe;AACrH;;;;;;;;;;;;;;;;ACNiD;AAClC;AACf;AACA,aAAa,8DAAc;AAC3B;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACRe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;ACViD;AACE;AACsB;AACtB;AACpC;AACf,SAAS,8DAAc,SAAS,+DAAe,SAAS,0EAA0B,SAAS,+DAAe;AAC1G;;;;;;;;;;;;;;;;;;;ACNuD;AACJ;AACsB;AAClB;AACxC;AACf,SAAS,iEAAiB,SAAS,+DAAe,SAAS,0EAA0B,SAAS,iEAAiB;AAC/G;;;;;;;;;;;;;;;ACNe;AACf;;AAEA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;;;;;;;;;;;;;;;ACRqD;AACtC;AACf;AACA,oCAAoC,gEAAgB;AACpD;AACA;AACA;AACA,sFAAsF,gEAAgB;AACtG;;;;;;;;;;;;;;;;;;;ACRiD;AACA;AACI;AACd;AACxB;AACf;;AAEA;AACA,2BAA2B,gEAAgB;;AAE3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,yDAAS,mBAAmB,8DAAc;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,WAAW,8DAAc;AACzB;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,gBAAgB,sCAAsC,kBAAkB;AACjF,wBAAwB;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEO;AACP;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEO;AACP,kCAAkC;AAClC;;AAEO;AACP,uBAAuB,uFAAuF;AAC9G;AACA;AACA,yGAAyG;AACzG;AACA,sCAAsC,QAAQ;AAC9C;AACA,gEAAgE;AAChE;AACA,8CAA8C,yFAAyF;AACvI,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA,4CAA4C,yEAAyE;AACrH;;AAEO;AACP;AACA;;AAEO;AACP,0BAA0B,+DAA+D,iBAAiB;AAC1G;AACA,kCAAkC,MAAM,+BAA+B,YAAY;AACnF,iCAAiC,MAAM,mCAAmC,YAAY;AACtF,8BAA8B;AAC9B;AACA,GAAG;AACH;;AAEO;AACP,YAAY,6BAA6B,0BAA0B,cAAc,qBAAqB;AACtG,2IAA2I,cAAc;AACzJ,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iCAAiC,SAAS;AAC1C,iCAAiC,WAAW,UAAU;AACtD,wCAAwC,cAAc;AACtD;AACA,4GAA4G,OAAO;AACnH,+EAA+E,iBAAiB;AAChG,uDAAuD,gBAAgB,QAAQ;AAC/E,6CAA6C,gBAAgB,gBAAgB;AAC7E;AACA,gCAAgC;AAChC;AACA;AACA,QAAQ,YAAY,aAAa,SAAS,UAAU;AACpD,kCAAkC,SAAS;AAC3C;AACA;;AAEO;AACP;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACO;AACP,2BAA2B,sBAAsB;AACjD;AACA;AACA;;AAEA;AACO;AACP,gDAAgD,QAAQ;AACxD,uCAAuC,QAAQ;AAC/C,uDAAuD,QAAQ;AAC/D;AACA;AACA;;AAEO;AACP,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,wMAAwM,cAAc;AACtN,4BAA4B,sBAAsB;AAClD,wBAAwB,YAAY,sBAAsB,qCAAqC,2CAA2C,MAAM;AAChJ,0BAA0B,MAAM,iBAAiB,YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,qDAAqD,cAAc;AACnE;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM,oBAAoB,YAAY;AAC5E,qBAAqB,8CAA8C;AACnE;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,SAAS,gBAAgB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,+DAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/layouts/content/content-layout.component.ts","./src/app/layouts/content/content-layout.component.html","./src/app/layouts/full/full-layout.component.ts","./src/app/layouts/full/full-layout.component.html","./src/app/loader/loader.component.ts","./src/app/loader/loader.component.html","./src/app/material/material.ts","./src/app/shared/animations/custom-animations.ts","./src/app/shared/auth/auth-guard.service.ts","./src/app/shared/auth/auth.service.ts","./src/app/shared/components/autocomplete/autocomplete-content.directive.ts","./src/app/shared/components/autocomplete/autocomplete.component.ts","./src/app/shared/components/autocomplete/autocomplete.directive.ts","./src/app/shared/components/autocomplete/autocomplete.module.ts","./src/app/shared/components/autocomplete/option/option.component.ts","./src/app/shared/customizer/customizer.component.ts","./src/app/shared/customizer/customizer.component.html","./src/app/shared/directives/equalvalidation.directive.ts","./src/app/shared/directives/sidebar-anchor-toggle.directive.ts","./src/app/shared/directives/sidebar-dropdown.directive.ts","./src/app/shared/directives/sidebar-link.directive.ts","./src/app/shared/directives/sidebar.directive.ts","./src/app/shared/directives/toggle-fullscreen.directive.ts","./src/app/shared/directives/topmenu-anchor-toggle.directive.ts","./src/app/shared/directives/topmenu-dropdown.directive.ts","./src/app/shared/directives/topmenu-link.directive.ts","./src/app/shared/directives/topmenu.directive.ts","./src/app/shared/footer/footer.component.ts","./src/app/shared/footer/footer.component.html","./src/app/shared/horizontal-menu/horizontal-menu.component.ts","./src/app/shared/horizontal-menu/horizontal-menu.component.html","./src/app/shared/horizontal-menu/navigation-routes.config.ts","./src/app/shared/navbar/navbar.component.ts","./src/app/shared/navbar/navbar.component.html","./src/app/shared/notification-sidebar/notification-sidebar.component.ts","./src/app/shared/notification-sidebar/notification-sidebar.component.html","./src/app/shared/pipes/filename.pipe.ts","./src/app/shared/pipes/filter.pipe.ts","./src/app/shared/pipes/pipe.module.ts","./src/app/shared/pipes/search.pipe.ts","./src/app/shared/pipes/short-name.pipe.ts","./src/app/shared/services/comman/auth.service.ts","./src/app/shared/services/config.service.ts","./src/app/shared/services/customizer.service.ts","./src/app/shared/services/encryption.service.ts","./src/app/shared/services/error.interceptor.ts","./src/app/shared/services/layout.service.ts","./src/app/shared/services/loader/loader.interceptor.ts","./src/app/shared/services/loader/loader.service.ts","./src/app/shared/services/patient.service.ts","./src/app/shared/services/token-interceptor.service.ts","./src/app/shared/services/web-socket.service.ts","./src/app/shared/services/window.service.ts","./src/app/shared/services/worldline/worldline.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/utilities/encrypetdRoutes.ts","./src/app/shared/vertical-menu/Invoice/DigiSparsh-sidebar-routes.config.ts","./src/app/shared/vertical-menu/Invoice/aggregator-sidebar-routes.config.ts","./src/app/shared/vertical-menu/Invoice/distributor-sidebar-routes-config.ts","./src/app/shared/vertical-menu/Invoice/hospital-sidebar-routes-config.ts","./src/app/shared/vertical-menu/Invoice/lender-sidebar-routes.config.ts","./src/app/shared/vertical-menu/Invoice/pharmacy-sidebar-routes.config.ts","./src/app/shared/vertical-menu/Invoice/supplier-sidebar-route.ts","./src/app/shared/vertical-menu/patient/business-partner-routes.config.ts","./src/app/shared/vertical-menu/patient/patient-sidebar-routes.config.ts","./src/app/shared/vertical-menu/vertical-menu.component.ts","./src/app/shared/vertical-menu/vertical-menu.component.html","./src/app/store/reducers/index.ts","./src/app/worldLine/worldline-customer-pay/worldline-customer-pay.component.ts","./src/app/worldLine/worldline-customer-pay/worldline-customer-pay.component.html","./src/environments/environment.ts","./src/main.ts","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.js","./node_modules/@ng-select/ng-select/fesm2015/ng-select-ng-select.js","./node_modules/@ngx-translate/core/fesm2015/ngx-translate-core.js","./node_modules/@ngx-translate/http-loader/fesm2015/ngx-translate-http-loader.js","./node_modules/@progress/jszip-esm/dist/jszip-esm2015.js","./node_modules/@progress/kendo-angular-buttons/fesm2015/kendo-angular-buttons.js","./node_modules/@progress/kendo-angular-common/fesm2015/kendo-angular-common.js","./node_modules/@progress/kendo-angular-dateinputs/fesm2015/kendo-angular-dateinputs.js","./node_modules/@progress/kendo-angular-dialog/fesm2015/kendo-angular-dialog.js","./node_modules/@progress/kendo-angular-dropdowns/fesm2015/kendo-angular-dropdowns.js","./node_modules/@progress/kendo-angular-excel-export/fesm2015/kendo-angular-excel-export.js","./node_modules/@progress/kendo-angular-grid/fesm2015/kendo-angular-grid.js","./node_modules/@progress/kendo-angular-inputs/fesm2015/kendo-angular-inputs.js","./node_modules/@progress/kendo-angular-intl/fesm2015/kendo-angular-intl.js","./node_modules/@progress/kendo-angular-l10n/fesm2015/kendo-angular-l10n.js","./node_modules/@progress/kendo-angular-label/fesm2015/kendo-angular-label.js","./node_modules/@progress/kendo-angular-pdf-export/fesm2015/kendo-angular-pdf-export.js","./node_modules/@progress/kendo-angular-popup/fesm2015/kendo-angular-popup.js","./node_modules/@progress/kendo-angular-treeview/fesm2015/kendo-angular-treeview.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/field-list.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/getter.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/setter.js","./node_modules/@progress/kendo-common/dist/es2015/main.js","./node_modules/@progress/kendo-common/dist/es2015/support.js","./node_modules/@progress/kendo-common/dist/es2015/util.js","./node_modules/@progress/kendo-data-query/dist/es2015/accessor.js","./node_modules/@progress/kendo-data-query/dist/es2015/array.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filter-serialization.common.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-descriptor.interface.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-expression.factory.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-no-eval.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/funcs.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/aggregate.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/group.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/main.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/deserialization.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/odata-filtering.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/odata.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort-array.operator.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort.js","./node_modules/@progress/kendo-data-query/dist/es2015/transducers.js","./node_modules/@progress/kendo-data-query/dist/es2015/utils.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-days.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-weeks.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/adjust-dst.js","./node_modules/@progress/kendo-date-math/dist/es2015/clone-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/constants.js","./node_modules/@progress/kendo-date-math/dist/es2015/create-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/day.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/direction.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/get-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/is-equal.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/normalize-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/prev-day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/week-in-year.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/class.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/named-colors.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/parse-color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/save-as.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/support.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/template.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/has-observers.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/options-store.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/calculate-curve-at.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close-or-less.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/complex-number.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/curve-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/ellipse-extreme-angles.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/has-roots-in-range.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/is-out-of-end-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersection.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/solve-cubic-equation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/to-cubic-polynomial.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/segment.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/size.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/to-matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transform.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transformation.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient-stop.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/linear-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/radial-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/stops-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/html/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/measurable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/paintable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/traversable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-accessors.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-geometry.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-options.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-points.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/parse-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/shape-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/deflate.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/drawing.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/ttf.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/utils.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/element.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/geometry-elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/group.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/image.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/path.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/text.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-clippend-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/lru-cache.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/measure-text.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/text-metrics.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/util.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/append.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/arabic-to-roman.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/create-promise.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/defined.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/definition-id.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/deg.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-base64.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-utf.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/is-transparent.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/last.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/limit-value.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/merge-sort.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/rad.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/round.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/value-or-default.js","./node_modules/@progress/kendo-file-saver/dist/es2015/base64.js","./node_modules/@progress/kendo-file-saver/dist/es2015/main.js","./node_modules/@progress/kendo-file-saver/dist/es2015/save-as.js","./node_modules/@progress/kendo-licensing/dist/index-esm.js","./node_modules/@progress/kendo-ooxml/dist/es2015/excel-exporter.js","./node_modules/@progress/kendo-ooxml/dist/es2015/main.js","./node_modules/@progress/kendo-ooxml/dist/es2015/ooxml.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/create-zip.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/getter.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/map.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/time.js","./node_modules/@progress/kendo-popup-common/dist/es2015/add-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align-element.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align-point.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align.js","./node_modules/@progress/kendo-popup-common/dist/es2015/apply-location-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/bounding-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/collision.js","./node_modules/@progress/kendo-popup-common/dist/es2015/document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/dom-utils.js","./node_modules/@progress/kendo-popup-common/dist/es2015/element-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/is-body-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/main.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/owner-document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parents.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-element.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-with-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/remove-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/restrict-to-view.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scrollbar-width.js","./node_modules/@progress/kendo-popup-common/dist/es2015/sibling-container.js","./node_modules/@progress/kendo-popup-common/dist/es2015/siblings.js","./node_modules/@progress/kendo-popup-common/dist/es2015/utils.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window-viewport.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window.js","./node_modules/@progress/kendo-popup-common/dist/es2015/z-index.js","./node_modules/@progress/pako-esm/dist/pako-esm2015.js","./node_modules/@telerik/kendo-draggable/dist/es2015/main.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-field-name.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/info.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-dates.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-numbers.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/number-symbols.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/parse-range-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/set-data.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/pad.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/round.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/parse-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/split-date-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/time-utils.js","./node_modules/@telerik/kendo-intl/dist/es2015/error-details.js","./node_modules/@telerik/kendo-intl/dist/es2015/errors.js","./node_modules/@telerik/kendo-intl/dist/es2015/format.js","./node_modules/@telerik/kendo-intl/dist/es2015/main.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/group-integer.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/is-currency-style.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/parse-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/standard-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/utils.js","./node_modules/crypto-ts/esm2015/crypto-ts.js","./node_modules/ng-click-outside/lib_esmodule/click-outside.directive.js","./node_modules/ng-click-outside/lib_esmodule/click-outside.module.js","./node_modules/ng-click-outside/lib_esmodule/index.js","./node_modules/ngx-device-detector/fesm2015/ngx-device-detector.js","./node_modules/ngx-perfect-scrollbar/fesm2015/ngx-perfect-scrollbar.js","./node_modules/ngx-spinner/fesm2015/ngx-spinner.js","./node_modules/ngx-take-until-destroy/fesm2015/ngx-take-until-destroy.js","./node_modules/ngx-toastr/fesm2015/ngx-toastr.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/bufferCount.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/rxjs/_esm2015/internal/operators/partition.js","./node_modules/rxjs/_esm2015/internal/operators/publish.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/skipWhile.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/switchMapTo.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/not.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/screenfull/dist/screenfull.js","./node_modules/ngx-device-detector/node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/cdk/fesm2015/a11y.mjs","./node_modules/@angular/cdk/fesm2015/accordion.mjs","./node_modules/@angular/cdk/fesm2015/bidi.mjs","./node_modules/@angular/cdk/fesm2015/cdk.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/@angular/cdk/fesm2015/collections.mjs","./node_modules/@angular/cdk/fesm2015/keycodes.mjs","./node_modules/@angular/cdk/fesm2015/layout.mjs","./node_modules/@angular/cdk/fesm2015/observers.mjs","./node_modules/@angular/cdk/fesm2015/overlay.mjs","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/portal.mjs","./node_modules/@angular/cdk/fesm2015/scrolling.mjs","./node_modules/@angular/cdk/fesm2015/stepper.mjs","./node_modules/@angular/cdk/fesm2015/table.mjs","./node_modules/@angular/cdk/fesm2015/text-field.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/material/fesm2015/autocomplete.mjs","./node_modules/@angular/material/fesm2015/button-toggle.mjs","./node_modules/@angular/material/fesm2015/button.mjs","./node_modules/@angular/material/fesm2015/card.mjs","./node_modules/@angular/material/fesm2015/checkbox.mjs","./node_modules/@angular/material/fesm2015/chips.mjs","./node_modules/@angular/material/fesm2015/core.mjs","./node_modules/@angular/material/fesm2015/datepicker.mjs","./node_modules/@angular/material/fesm2015/dialog.mjs","./node_modules/@angular/material/fesm2015/divider.mjs","./node_modules/@angular/material/fesm2015/expansion.mjs","./node_modules/@angular/material/fesm2015/form-field.mjs","./node_modules/@angular/material/fesm2015/grid-list.mjs","./node_modules/@angular/material/fesm2015/icon.mjs","./node_modules/@angular/material/fesm2015/input.mjs","./node_modules/@angular/material/fesm2015/list.mjs","./node_modules/@angular/material/fesm2015/menu.mjs","./node_modules/@angular/material/fesm2015/paginator.mjs","./node_modules/@angular/material/fesm2015/progress-bar.mjs","./node_modules/@angular/material/fesm2015/progress-spinner.mjs","./node_modules/@angular/material/fesm2015/radio.mjs","./node_modules/@angular/material/fesm2015/select.mjs","./node_modules/@angular/material/fesm2015/sidenav.mjs","./node_modules/@angular/material/fesm2015/slide-toggle.mjs","./node_modules/@angular/material/fesm2015/slider.mjs","./node_modules/@angular/material/fesm2015/snack-bar.mjs","./node_modules/@angular/material/fesm2015/sort.mjs","./node_modules/@angular/material/fesm2015/stepper.mjs","./node_modules/@angular/material/fesm2015/table.mjs","./node_modules/@angular/material/fesm2015/tabs.mjs","./node_modules/@angular/material/fesm2015/toolbar.mjs","./node_modules/@angular/material/fesm2015/tooltip.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/@angular/service-worker/fesm2015/service-worker.mjs","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/construct.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/createClass.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/createSuper.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/get.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/inherits.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/set.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/superPropBase.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/toArray.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["import { AuthGuard } from 'app/shared/auth/auth-guard.service';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes, PreloadAllModules } from '@angular/router';\r\n\r\nimport { FullLayoutComponent } from \"./layouts/full/full-layout.component\";\r\nimport { ContentLayoutComponent } from \"./layouts/content/content-layout.component\";\r\n\r\nimport { Full_ROUTES } from \"./shared/routes/full-layout.routes\";\r\nimport { CONTENT_ROUTES } from \"./shared/routes/content-layout.routes\";\r\n\r\n// import { AuthGuard } from './shared/auth/auth-guard.service';\r\n\r\nconst appRoutes: Routes = [\r\n // {\r\n // path: '',\r\n // redirectTo: 'pages/login',\r\n // pathMatch: 'full',\r\n // },\r\n // { path: '', redirectTo: 'form', pathMatch: 'prefix' },\r\n // { path: 'form', loadChildren: () => import('./page/page.module').then(m => m.PageModule)},\r\n\r\n // { path: '', component: FullLayoutComponent, data: { title: 'full Views' }, children: Full_ROUTES },\r\n\r\n {\r\n path: '',\r\n redirectTo: 'Select',\r\n pathMatch: 'full',\r\n },\r\n // { path: '', component: FullLayoutComponent, data: { title: 'full Views' }, children: Full_ROUTES },\r\n // { path: '', component: ContentLayoutComponent, data: { title: 'content Views' }, children: CONTENT_ROUTES },\r\n { path: 'Select', loadChildren: () => import('./selectproduct/selectproduct.module').then(m => m.SelectproductModule) },\r\n\r\n{ path: 'Merchant', loadChildren: () => import('./page1/page.module').then(m => m.PageModule) },\r\n{ path: 'Aabha-Login', loadChildren: () => import('./abha/abha.module').then(m => m.AbhaModule) },\r\n{ path: 'Tatkaal-Payment', loadChildren: () => import('./worldLine/worldline.module').then(m => m.WorldlineModule) },\r\n\r\n// { path: ':product', component: FullLayoutComponent, data: { title: 'full Views' }, children: Full_ROUTES },\r\n // { path: 'Invoice', component: FullLayoutComponent, data: { title: 'full Views' },\r\n // children: [\r\n // { path: '', loadChildren: () => import('./invoice/invoice.module').then(m => m.InvoiceModule) ,canActivate:[AuthGuard],canLoad:[AuthGuard] }\r\n \r\n // ],canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n\r\n // { path: 'Supplier', component: FullLayoutComponent, data: { title: 'full Views' },\r\n // children: [\r\n // { path: '', loadChildren: () => import('./supplier/supplier.module').then(m => m.SupplierModule),canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n // ],canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n\r\n { path: 'Admin', component: FullLayoutComponent, data: { title: 'full Views' },\r\n children: [\r\n { path: '', loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule),canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n ],canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n\r\n //Path For Distributor Module Start\r\n { path: 'Distributor', component: FullLayoutComponent, data: { title: 'full Views' },\r\n children: [\r\n { path: '', loadChildren: () => import('./distributor/distributor.module').then(m => m.DistributorModule) ,canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n ] ,canActivate:[AuthGuard],canLoad:[AuthGuard]},\r\n //Path For Distributor Module End\r\n\r\n { path: 'Hospital', component: FullLayoutComponent, data: { title: 'full Views' },\r\n children: [\r\n { path: '', loadChildren: () => import('./hospital/hospital.module').then(m => m.HospitalModule) ,canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n ] ,canActivate:[AuthGuard],canLoad:[AuthGuard]},\r\n\r\n { path: 'Aggregator', component: FullLayoutComponent, data: { title: 'full Views' },\r\n children: [\r\n { path: '', loadChildren: () => import('./aggregator/aggregator.module').then(m => m.AggregatorModule),canActivate:[AuthGuard],canLoad:[AuthGuard]},\r\n ],canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n\r\n { path: 'Lender', component: FullLayoutComponent, data: { title: 'full Views' },\r\n children: [\r\n { path: '', loadChildren: () => import('./lender/lender.module').then(m => m.LenderModule),canActivate:[AuthGuard],canLoad:[AuthGuard]},\r\n ] ,canActivate:[AuthGuard],canLoad:[AuthGuard]},\r\n\r\n { path: 'Vendor', component: FullLayoutComponent, data: { title: 'full Views' },\r\n children: [\r\n { path: '', loadChildren: () => import('./vendor/vendor.module').then(m => m.VendorModule) ,canActivate:[AuthGuard],canLoad:[AuthGuard] },\r\n ] ,canActivate:[AuthGuard],canLoad:[AuthGuard]},\r\n\r\n {\r\n path: '**',\r\n redirectTo: 'pages/error'\r\n }\r\n];\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(appRoutes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class AppRoutingModule {\r\n}\r\n","import { Component, ViewContainerRef, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html'\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n private config: {version: string};\r\n subscription: Subscription;\r\n\r\n constructor(private router: Router,private httpClient: HttpClient) {\r\n }\r\n\r\n ngOnInit() {\r\n // this.config = require('../assets/data/config.json');\r\n // const headers = new HttpHeaders()\r\n // .set('Cache-Control', 'no-cache')\r\n // .set('Pragma', 'no-cache');\r\n // this.httpClient.get<{version: string}>('../assets/data/config.json',{headers})\r\n // .subscribe(config => {\r\n // if (config.version !== this.config.version) {\r\n // this.httpClient\r\n // .get(\"\", { headers, responseType: \"text\" })\r\n // .subscribe(() => location.reload());\r\n // }\r\n // });\r\n this.subscription = this.router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd)\r\n )\r\n .subscribe(() => window.scrollTo(0, 0));\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n\r\n}","","import { NgModule } from \"@angular/core\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { HelloComponent } from './store/reducers/index';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\n// import { AgmCoreModule } from \"@agm/core\";\r\nimport { DeviceDetectorModule } from 'ngx-device-detector';\r\nimport { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { TranslateModule, TranslateLoader } from \"@ngx-translate/core\";\r\nimport { TranslateHttpLoader } from \"@ngx-translate/http-loader\";\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { LoaderInterceptor } from \"./shared/services/loader/loader.interceptor\";\r\n\r\nimport {\r\n PerfectScrollbarModule,\r\n PERFECT_SCROLLBAR_CONFIG,\r\n PerfectScrollbarConfigInterface\r\n} from 'ngx-perfect-scrollbar';\r\n\r\nimport { AppRoutingModule } from \"./app-routing.module\";\r\nimport { SharedModule } from \"./shared/shared.module\";\r\nimport { AppComponent } from \"./app.component\";\r\nimport { ContentLayoutComponent } from \"./layouts/content/content-layout.component\";\r\nimport { FullLayoutComponent } from \"./layouts/full/full-layout.component\";\r\nimport { TokenInterceptorService } from \"./shared/services/token-interceptor.service\"\r\nimport { ErrorInterceptor } from \"./shared/services/error.interceptor\"\r\n\r\nimport { WINDOW_PROVIDERS } from './shared/services/window.service';\r\n\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { LoaderComponent } from './loader/loader.component';\r\nimport { LoaderService } from \"./shared/services/loader/loader.service\";\r\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\r\nimport { AuthService } from \"./shared/auth/auth.service\";\r\nimport { AuthGuard } from \"./shared/auth/auth-guard.service\";\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\nimport { environment } from '../environments/environment';\r\nimport {NgbDropdownModule} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GridModule } from '@progress/kendo-angular-grid';\r\nimport { WorldlineCustomerPayComponent } from './worldLine/worldline-customer-pay/worldline-customer-pay.component';\r\n\r\n\r\n// import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\n\r\n\r\nvar firebaseConfig = {\r\n apiKey: \"YOUR_API_KEY\", //YOUR_API_KEY\r\n authDomain: \"YOUR_AUTH_DOMAIN\", //YOUR_AUTH_DOMAIN\r\n databaseURL: \"YOUR_DATABASE_URL\", //YOUR_DATABASE_URL\r\n projectId: \"YOUR_PROJECT_ID\", //YOUR_PROJECT_ID\r\n storageBucket: \"YOUR_STORAGE_BUCKET\", //YOUR_STORAGE_BUCKET\r\n messagingSenderId: \"YOUR_MESSAGING_SENDER_ID\", //YOUR_MESSAGING_SENDER_ID\r\n appId: \"YOUR_APP_ID\", //YOUR_APP_ID\r\n measurementId: \"YOUR_MEASUREMENT_ID\" //YOUR_MEASUREMENT_ID\r\n};\r\n\r\n\r\nconst DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {\r\n suppressScrollX: true,\r\n wheelPropagation: false\r\n};\r\n\r\nexport function createTranslateLoader(http: HttpClient) {\r\n return new TranslateHttpLoader(http, \"./assets/i18n/\", \".json\");\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HelloComponent, \r\n FullLayoutComponent, \r\n ContentLayoutComponent,\r\n LoaderComponent,\r\n WorldlineCustomerPayComponent],\r\n imports: [\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AppRoutingModule,\r\n CommonModule,\r\n SharedModule,\r\n HttpClientModule,\r\n NgbDropdownModule,\r\n NgbModule,\r\n NgxSpinnerModule,\r\n DeviceDetectorModule.forRoot(),\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: createTranslateLoader,\r\n deps: [HttpClient]\r\n }\r\n }),\r\n // AgmCoreModule.forRoot({\r\n // apiKey: \"YOUR_GOOGLE_MAP_API_KEY\"\r\n // }),\r\n PerfectScrollbarModule,\r\n ToastrModule.forRoot({\r\n timeOut: 2500,\r\n positionClass: 'toast-top-right',\r\n preventDuplicates: true\r\n }),\r\n ButtonsModule,\r\n ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),\r\n GridModule,\r\n \r\n ],\r\n providers: [\r\n AuthService,\r\n AuthGuard,\r\n LoaderService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: TokenInterceptorService,\r\n multi: true\r\n },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n { provide: PERFECT_SCROLLBAR_CONFIG, useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG },\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true},\r\n WINDOW_PROVIDERS\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {}\r\n","import { Component, OnInit, ElementRef, Inject, Renderer2, ViewChild, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { ConfigService } from 'app/shared/services/config.service';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { CustomizerService } from 'app/shared/services/customizer.service';\r\n\r\n@Component({\r\n selector: 'app-content-layout',\r\n templateUrl: './content-layout.component.html',\r\n styleUrls: ['./content-layout.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class ContentLayoutComponent implements OnInit, OnDestroy {\r\n public config: any = {};\r\n layoutSub: Subscription;\r\n @ViewChild('content-wrapper') wrapper: ElementRef;\r\n\r\n\r\n constructor(private configService: ConfigService,\r\n @Inject(DOCUMENT) private document: Document,\r\n private renderer: Renderer2, private cdr: ChangeDetectorRef,\r\n private customizerService: CustomizerService\r\n ) {\r\n this.config = this.configService.templateConf;\r\n this.renderer.addClass(this.document.body, \"auth-page\");\r\n }\r\n\r\n ngOnInit() {\r\n this.layoutSub = this.configService.templateConf$.subscribe((templateConf) => {\r\n if (templateConf) {\r\n this.config = templateConf;\r\n }\r\n this.loadLayout();\r\n this.cdr.markForCheck();\r\n\r\n })\r\n }\r\n\r\n loadLayout() {\r\n\r\n this.removeTransparentBGClasses();\r\n\r\n if (this.config.layout.variant === \"Light\") {\r\n this.renderer.removeClass(this.document.body, \"layout-dark\");\r\n this.renderer.removeClass(this.document.body, \"layout-transparent\");\r\n }\r\n else if (this.config.layout.variant === \"Dark\") {\r\n this.renderer.removeClass(this.document.body, \"layout-transparent\");\r\n this.renderer.addClass(this.document.body, \"layout-dark\");\r\n }\r\n else if (this.config.layout.variant === \"Transparent\") {\r\n this.renderer.addClass(this.document.body, \"layout-dark\");\r\n this.renderer.addClass(this.document.body, \"layout-transparent\");\r\n this.renderer.addClass(this.document.body, this.config.layout.sidebar.backgroundColor);\r\n }\r\n\r\n\r\n this.renderer.removeClass(this.document.body, \"menu-expanded\");\r\n this.renderer.removeClass(this.document.body, \"navbar-static\");\r\n this.renderer.removeClass(this.document.body, \"menu-open\");\r\n this.renderer.addClass(this.document.body, \"blank-page\");\r\n\r\n\r\n }\r\n\r\n removeTransparentBGClasses() {\r\n this.customizerService.transparent_colors.forEach(_ => {\r\n this.renderer.removeClass(this.document.body, _.class);\r\n });\r\n\r\n this.customizerService.transparent_colors_with_shade.forEach(_ => {\r\n this.renderer.removeClass(this.document.body, _.class);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.renderer.removeClass(this.document.body, \"auth-page\");\r\n if (this.layoutSub) {\r\n this.layoutSub.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {\r\n Component,\r\n OnInit,\r\n Inject,\r\n Renderer2,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n HostListener\r\n} from \"@angular/core\";\r\nimport { ConfigService } from \"app/shared/services/config.service\";\r\nimport { DOCUMENT } from \"@angular/common\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { CustomizerService } from 'app/shared/services/customizer.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { LayoutService } from 'app/shared/services/layout.service';\r\nimport { WINDOW } from 'app/shared/services/window.service';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: \"app-full-layout\",\r\n templateUrl: \"./full-layout.component.html\",\r\n styleUrls: [\"./full-layout.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FullLayoutComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n hideSidebar: boolean = true;\r\n overlayContent = false;\r\n configSub: Subscription;\r\n layoutSub: Subscription;\r\n bgImage: string;\r\n bgColor: string;\r\n isSmallScreen = false;\r\n menuPosition = 'Side';\r\n displayOverlayMenu = false; // Vertical Side menu for screenSize < 1200\r\n public config: any = {};\r\n public innerWidth: any;\r\n isMenuCollapsedOnHover = false;\r\n isNavbarSeachTextEmpty = true;\r\n isScrollTopVisible = false;\r\n resizeTimeout;\r\n hidden;\r\n\r\n constructor(\r\n private configService: ConfigService,\r\n private layoutService: LayoutService,\r\n private router: Router,\r\n private customizerService: CustomizerService,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Inject(WINDOW) private window: Window,\r\n private renderer: Renderer2,\r\n private cdr: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService\r\n ) {\r\n\r\n this.config = this.configService.templateConf;\r\n this.innerWidth = window.innerWidth;\r\n\r\n // On toggle sidebar menu\r\n this.layoutSub = layoutService.toggleSidebar$.subscribe(\r\n isShow => {\r\n this.hideSidebar = !isShow;\r\n if(this.hideSidebar) {\r\n this.overlayContent = false;\r\n } else {\r\n this.overlayContent = true;\r\n }\r\n this.toggleSidebar();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n \r\n this.configSub = this.configService.templateConf$.subscribe((templateConf) => {\r\n if (templateConf) {\r\n this.config = templateConf;\r\n }\r\n //load layout\r\n this.loadLayout();\r\n this.cdr.markForCheck();\r\n setInterval(() => {\r\n this.cdr.detectChanges();\r\n }, 1000);\r\n });\r\nif(sessionStorage.getItem('Option')==\"Patient\"||sessionStorage.getItem('Option')==\"Merchant\"){\r\n this.hidden=true;\r\n}else{\r\n this.hidden=false;\r\n}\r\n //hide overlay class on router change\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((routeChange) => {\r\n if (this.config.layout.menuPosition === \"Side\" || this.displayOverlayMenu) { // Vertical Menu\r\n if (this.innerWidth < 1200) {\r\n this.layoutService.toggleSidebarSmallScreen(false);\r\n this.overlayContent = false;\r\n this.renderer.removeClass(this.document.body, \"overflow-hidden\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setMenuLayout();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Unsubcribe subscriptions\r\n if (this.configSub) {\r\n this.configSub.unsubscribe();\r\n }\r\n if (this.layoutSub) {\r\n this.layoutSub.unsubscribe();\r\n }\r\n }\r\n\r\n //adjust layout\r\n setMenuLayout() {\r\n this.overlayContent = false;\r\n this.renderer.removeClass(this.document.body, \"blank-page\");\r\n if (this.config.layout.menuPosition === \"Top\") { // Horizontal Menu\r\n if (this.innerWidth < 1200) { // Screen size < 1200\r\n this.displayOverlayMenu = true;\r\n this.hideSidebar = true;\r\n this.renderer.removeClass(this.document.body, \"horizontal-menu\");\r\n this.renderer.removeClass(this.document.body, \"menu-open\");\r\n\r\n this.renderer.addClass(this.document.body, \"horizontal-layout\");\r\n this.renderer.addClass(this.document.body, \"horizontal-menu-padding\");\r\n this.renderer.addClass(this.document.body, \"vertical-layout\");\r\n this.renderer.addClass(this.document.body, \"vertical-overlay-menu\");\r\n this.renderer.addClass(this.document.body, \"fixed-navbar\");\r\n this.renderer.addClass(this.document.body, \"menu-hide\");\r\n }\r\n else { // Screen size > 1200\r\n this.displayOverlayMenu = false;\r\n this.hideSidebar = false;\r\n this.renderer.setAttribute(this.document.body, \"data-menu\", \"horizontal-menu\");\r\n this.renderer.removeClass(this.document.body, \"vertical-layout\");\r\n this.renderer.removeClass(this.document.body, \"vertical-overlay-menu\");\r\n this.renderer.removeClass(this.document.body, \"fixed-navbar\");\r\n this.renderer.removeClass(this.document.body, \"menu-hide\");\r\n this.renderer.removeClass(this.document.body, \"vertical-menu\");\r\n this.renderer.addClass(this.document.body, \"horizontal-menu\");\r\n this.renderer.addClass(this.document.body, \"horizontal-layout\");\r\n this.renderer.addClass(this.document.body, \"horizontal-menu-padding\");\r\n }\r\n }\r\n else if (this.config.layout.menuPosition === \"Side\") { // Vertical Menu\r\n if (this.innerWidth < 1200) { // If Screen size < 1200\r\n this.displayOverlayMenu = true;\r\n this.renderer.removeClass(this.document.body, \"horizontal-layout\");\r\n this.renderer.removeClass(this.document.body, \"horizontal-menu\");\r\n this.renderer.removeClass(this.document.body, \"horizontal-menu-padding\");\r\n this.renderer.removeClass(this.document.body, \"menu-expanded\");\r\n this.renderer.removeClass(this.document.body, \"vertical-menu\");\r\n this.renderer.removeClass(this.document.body, \"menu-open\");\r\n this.renderer.removeClass(this.document.body, \"nav-collapsed\");\r\n\r\n this.renderer.addClass(this.document.body, \"vertical-layout\");\r\n this.renderer.addClass(this.document.body, \"menu-hide\");\r\n\r\n }\r\n else { // If Screen size > 1200\r\n this.displayOverlayMenu = false;\r\n\r\n this.renderer.removeClass(this.document.body, \"horizontal-layout\");\r\n this.renderer.removeClass(this.document.body, \"horizontal-menu\");\r\n this.renderer.removeClass(this.document.body, \"horizontal-menu-padding\");\r\n\r\n this.renderer.setAttribute(this.document.body, \"data-menu\", \"vertical-menu\");\r\n this.renderer.addClass(this.document.body, \"vertical-layout\");\r\n if (!this.config.layout.sidebar.collapsed) {\r\n this.renderer.addClass(this.document.body, \"menu-expanded\");\r\n this.renderer.addClass(this.document.body, \"menu-open\");\r\n }\r\n this.renderer.addClass(this.document.body, \"vertical-menu\");\r\n this.renderer.removeClass(this.document.body, \"menu-hide\");\r\n this.renderer.removeClass(this.document.body, \"vertical-overlay-menu\");\r\n }\r\n }\r\n }\r\n\r\n\r\n loadLayout() {\r\n\r\n //menu position \"SIDE\" or \"TOP\"\r\n if (this.config.layout.menuPosition && this.config.layout.menuPosition.toString().trim() != \"\") {\r\n this.menuPosition = this.config.layout.menuPosition;\r\n }\r\n\r\n //Hide/show sidebar menu background image\r\n if (!this.config.layout.sidebar.backgroundImage) {\r\n this.bgImage = \"\";\r\n } else {\r\n this.bgImage = this.config.layout.sidebar.backgroundImageURL;\r\n }\r\n\r\n //Set sidebar menu background color\r\n if (!this.config.layout.sidebar.backgroundColor) {\r\n this.bgColor = this.customizerService.light_dark_colors[7].code;\r\n } else {\r\n this.bgColor = this.config.layout.sidebar.backgroundColor;\r\n }\r\n\r\n //toggle side menu\r\n if (this.config.layout.menuPosition === \"Side\") {\r\n if (this.config.layout.sidebar.collapsed) {\r\n this.isMenuCollapsedOnHover = true;\r\n }\r\n else {\r\n this.isMenuCollapsedOnHover = true;\r\n }\r\n this.toggleSidebar();\r\n }\r\n\r\n this.removeTransparentBGClasses();\r\n\r\n // Layout variants\r\n if (this.config.layout.variant === \"Light\") {\r\n this.renderer.removeClass(this.document.body, \"layout-dark\");\r\n this.renderer.removeClass(this.document.body, \"layout-transparent\");\r\n }\r\n else if (this.config.layout.variant === \"Dark\") {\r\n this.renderer.removeClass(this.document.body, \"layout-transparent\");\r\n this.renderer.addClass(this.document.body, \"layout-dark\");\r\n }\r\n else if (this.config.layout.variant === \"Transparent\") {\r\n this.renderer.addClass(this.document.body, \"layout-dark\");\r\n this.renderer.addClass(this.document.body, \"layout-transparent\");\r\n this.renderer.addClass(this.document.body, this.bgColor);\r\n this.bgImage = \"\";\r\n }\r\n\r\n this.setMenuLayout();\r\n\r\n // For Sidebar width\r\n if (this.config.layout.sidebar.size === 'sidebar-sm') {\r\n this.renderer.removeClass(this.document.body, \"sidebar-lg\");\r\n this.renderer.addClass(this.document.body, \"sidebar-sm\");\r\n }\r\n else if (this.config.layout.sidebar.size === 'sidebar-lg') {\r\n this.renderer.removeClass(this.document.body, \"sidebar-sm\");\r\n this.renderer.addClass(this.document.body, \"sidebar-lg\");\r\n }\r\n else {\r\n this.renderer.removeClass(this.document.body, \"sidebar-sm\");\r\n this.renderer.removeClass(this.document.body, \"sidebar-lg\");\r\n }\r\n\r\n if (this.config.layout.menuPosition === \"Side\") {\r\n // vertical/Side menu expanded/collapse\r\n if (this.config.layout.sidebar.collapsed && !this.isSmallScreen) { // collapse side menu\r\n this.renderer.removeClass(this.document.body, \"menu-expanded\");\r\n this.renderer.addClass(this.document.body, \"nav-collapsed\");\r\n }\r\n else { // expand side menu\r\n this.renderer.removeClass(this.document.body, \"nav-collapsed\");\r\n this.renderer.addClass(this.document.body, \"menu-expanded\");\r\n }\r\n }\r\n\r\n //Navbar types\r\n if (this.config.layout.navbar.type === 'Static') {\r\n this.renderer.removeClass(this.document.body, \"navbar-sticky\");\r\n this.renderer.addClass(this.document.body, \"navbar-static\");\r\n }\r\n else if (this.config.layout.navbar.type === 'Fixed') {\r\n this.renderer.removeClass(this.document.body, \"navbar-static\");\r\n this.renderer.addClass(this.document.body, \"navbar-sticky\");\r\n }\r\n\r\n }\r\n\r\n toggleSidebar() {\r\n if (this.hideSidebar) { // on sidebar collapse\r\n this.renderer.removeClass(this.document.body, \"menu-expanded\");\r\n this.renderer.removeClass(this.document.body, \"vertical-menu\");\r\n this.renderer.removeClass(this.document.body, \"menu-open\");\r\n\r\n this.renderer.addClass(this.document.body, \"vertical-layout\");\r\n this.renderer.addClass(this.document.body, \"menu-hide\");\r\n\r\n if (this.config.layout.menuPosition === \"Top\") {\r\n this.renderer.addClass(this.document.body, \"vertical-overlay-menu\");\r\n }\r\n }\r\n else { // on sidebar expand\r\n this.renderer.addClass(this.document.body, \"vertical-layout\");\r\n this.renderer.addClass(this.document.body, \"menu-expanded\");\r\n this.renderer.addClass(this.document.body, \"vertical-menu\");\r\n if (this.config.layout.sidebar.collapsed) {\r\n this.renderer.removeClass(this.document.body, \"menu-open\");\r\n }\r\n else {\r\n this.renderer.addClass(this.document.body, \"menu-open\");\r\n }\r\n this.renderer.removeClass(this.document.body, \"menu-hide\");\r\n }\r\n this.isTouchDevice();\r\n }\r\n\r\n isTouchDevice() {\r\n\r\n const isMobile = this.deviceService.isMobile();\r\n const isTablet = this.deviceService.isTablet();\r\n\r\n if (isMobile || isTablet) {\r\n if(!this.hideSidebar){\r\n this.renderer.addClass(this.document.body, \"overflow-hidden\");\r\n } else {\r\n this.renderer.removeClass(this.document.body, \"overflow-hidden\");\r\n }\r\n }\r\n\r\n }\r\n\r\n hideCompactMenuOnSmallScreen() {\r\n if (this.innerWidth < 1200) {\r\n let conf = this.config;\r\n conf.layout.sidebar.collapsed = false;\r\n this.configService.applyTemplateConfigChange({ layout: conf.layout });\r\n }\r\n }\r\n\r\n //Remove transparent layout classes\r\n removeTransparentBGClasses() {\r\n this.customizerService.transparent_colors.forEach(_ => {\r\n this.renderer.removeClass(this.document.body, _.class);\r\n });\r\n\r\n this.customizerService.transparent_colors_with_shade.forEach(_ => {\r\n this.renderer.removeClass(this.document.body, _.class);\r\n });\r\n }\r\n\r\n sidebarMouseenter(e) {\r\n if (this.config.layout.sidebar.collapsed) {\r\n this.isMenuCollapsedOnHover = false;\r\n this.layoutService.overlaySidebartoggle(this.isMenuCollapsedOnHover);\r\n }\r\n }\r\n\r\n sidebarMouseleave(e) {\r\n if (this.config.layout.sidebar.collapsed) {\r\n this.isMenuCollapsedOnHover = true;\r\n this.layoutService.overlaySidebartoggle(this.isMenuCollapsedOnHover);\r\n }\r\n }\r\n\r\n //scroll to top on click\r\n scrollToTop() {\r\n window.scroll({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n onOutsideClick(e) {\r\n if (this.innerWidth < 1200) {\r\n if (\r\n !e.target.classList.contains(\"toggleSidebarNavbarButton\")\r\n ) {\r\n this.layoutService.toggleSidebarSmallScreen(false);\r\n }\r\n }\r\n }\r\n\r\n onWrapperClick() {\r\n this.isNavbarSeachTextEmpty = true;\r\n }\r\n\r\n checkNavbarSeachTextEmpty($event) {\r\n this.isNavbarSeachTextEmpty = $event;\r\n }\r\n\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n if (this.resizeTimeout) {\r\n clearTimeout(this.resizeTimeout);\r\n }\r\n this.resizeTimeout = setTimeout((() => {\r\n this.innerWidth = event.target.innerWidth;\r\n this.setMenuLayout();\r\n this.hideCompactMenuOnSmallScreen();\r\n }).bind(this), 500);\r\n }\r\n\r\n\r\n //Add/remove classes on page scroll\r\n @HostListener(\"window:scroll\", [])\r\n onWindowScroll() {\r\n let number = this.window.pageYOffset || this.document.documentElement.scrollTop || this.document.body.scrollTop || 0;\r\n if (number > 60) {\r\n this.renderer.addClass(this.document.body, \"navbar-scrolled\");\r\n } else {\r\n this.renderer.removeClass(this.document.body, \"navbar-scrolled\");\r\n }\r\n\r\n if (number > 400) {\r\n this.isScrollTopVisible = true;\r\n } else {\r\n this.isScrollTopVisible = false;\r\n }\r\n\r\n if (number > 20) {\r\n this.renderer.addClass(this.document.body, \"page-scrolled\");\r\n } else {\r\n this.renderer.removeClass(this.document.body, \"page-scrolled\");\r\n }\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { LoaderService } from 'app/shared/services/loader/loader.service';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n color = 'primary';\r\n mode = 'indeterminate';\r\n value = 50;\r\n \r\n isLoading: Subject = this.loaderService.isLoading;\r\n\r\n constructor(private loaderService: LoaderService){}\r\n \r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","\r\n

Loading...

\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatToolbarModule} from '@angular/material/toolbar';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatSidenavModule} from '@angular/material/sidenav';\r\nimport {MatListModule} from '@angular/material/list';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatSelectModule} from '@angular/material/select';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\r\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\r\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\r\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\r\nimport {MatCheckboxModule} from '@angular/material/checkbox';\r\nimport {MatChipsModule} from '@angular/material/chips';\r\nimport {MatDatepickerModule} from '@angular/material/datepicker';\r\nimport {MatDividerModule} from '@angular/material/divider';\r\nimport {MatExpansionModule} from '@angular/material/expansion';\r\nimport {MatGridListModule} from '@angular/material/grid-list';\r\nimport {MatMenuModule} from '@angular/material/menu';\r\nimport {MatPaginatorModule} from '@angular/material/paginator';\r\nimport {MatRadioModule} from '@angular/material/radio';\r\nimport {MatRippleModule} from '@angular/material/core';\r\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\r\nimport {MatSliderModule} from '@angular/material/slider';\r\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\r\nimport {MatSortModule} from '@angular/material/sort';\r\nimport {MatStepperModule} from '@angular/material/stepper';\r\nimport {MatTableModule} from '@angular/material/table';\r\nimport {MatTabsModule} from '@angular/material/tabs';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n MatCardModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatSidenavModule,\r\n MatListModule,\r\n MatSelectModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatProgressSpinnerModule,\r\n MatAutocompleteModule,\r\n MatButtonToggleModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatDatepickerModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatMenuModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSortModule,\r\n MatStepperModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatTooltipModule,\r\n\r\n ],\r\n exports:[\r\n MatCardModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatSidenavModule,\r\n MatListModule,\r\n MatCardModule,\r\n MatSelectModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatProgressSpinnerModule,\r\n MatAutocompleteModule,\r\n MatButtonToggleModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatDatepickerModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatMenuModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSortModule,\r\n MatStepperModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatTooltipModule,\r\n ]\r\n})\r\nexport class MaterialModule { }","import {\r\n\ttrigger,\r\n\tanimate,\r\n\tstyle,\r\n\ttransition,\r\n\tstate\r\n} from '@angular/animations';\r\n\r\n\r\nexport const customAnimations = [\t \r\n trigger('slideInOut', [\r\n state('1', style({ height: '*' })),\r\n state('0', style({ height: '0px' })),\r\n transition('1 <=> 0', animate(200))\r\n ])\r\n]","import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router, UrlTree, CanActivateChild, CanLoad, Route } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable()\r\n// export class AuthGuard implements CanActivate {\r\n// roleId: string;\r\n\r\n\r\n// constructor(private authService: AuthService, private router: Router) { }\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n// canActivate(route: ActivatedRouteSnapshot,\r\n// state: RouterStateSnapshot): boolean|UrlTree {\r\n//\r\n// console.log('canActivate on '+route.url);\r\n\r\n// if (!this.authService.loggedIn()) {\r\n \r\n// this.router.navigate(['/Select']);\r\n// return false;\r\n\r\n// //var urlTree = this.router.createUrlTree(['login']);\r\n// //return urlTree;\r\n// } \r\n\r\n// return true;\r\n// }\r\n\r\n// // canActivateChild(route: ActivatedRouteSnapshot,\r\n// // state: RouterStateSnapshot): boolean|UrlTree {\r\n\r\n\r\n \r\n// // if (!this.authService.isAdminUser()) {\r\n// // alert('You are not allowed to view this page');\r\n// // return false;\r\n// // }\r\n\r\n\r\n// // return true;\r\n// // }\r\n// }\r\nexport class AuthGuard implements CanActivate, CanActivateChild, CanLoad {\r\n constructor(\r\n private authService: AuthService,\r\n private router: Router\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n if (this.checkLogin(state.url)) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.canActivate(route, state)\r\n }\r\n\r\n canLoad(route: Route): boolean {\r\n const url = `/${route.path}`\r\n\r\n return this.checkLogin(url)\r\n }\r\n\r\n private checkLogin(url: string): boolean {\r\n if (this.authService.isAuthenticated()) {\r\n return true\r\n }\r\n\r\n this.authService.redirectUrl = url\r\n\r\n this.router.navigate([ '/Select' ])\r\n return false\r\n }\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\n\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AuthService {\r\n token: string;\r\n redirectUrl:any;\r\n\r\n constructor(private router: Router) {}\r\n\r\n // constructor(public _firebaseAuth: AngularFireAuth, public router: Router) {\r\n // this.user = _firebaseAuth.authState;\r\n // this.user.subscribe(\r\n // (user) => {\r\n // if (user) {\r\n // this.userDetails = user;\r\n // }\r\n // else {\r\n // this.userDetails = null;\r\n // }\r\n // }\r\n // );\r\n\r\n // }\r\n\r\n signupUser(email: string, password: string) {\r\n //your code for signing up the new user\r\n }\r\n \r\n loggedIn() {\r\n \r\n if (sessionStorage.getItem('token') == 'undefined' || sessionStorage.getItem('token') === '') {\r\n return !!sessionStorage.getItem('0')\r\n }\r\n return !!sessionStorage.getItem('token')\r\n }\r\n\r\n signinUser(email: string, password: string) {\r\n //your code for checking credentials and getting tokens for for signing in user\r\n // return this._firebaseAuth.signInWithEmailAndPassword(email, password)\r\n\r\n //uncomment above firebase auth code and remove this temp code\r\n return new Promise(function(resolve, reject) {\r\n setTimeout(function() {\r\n resolve(true);\r\n }, 1000);\r\n });\r\n\r\n }\r\n\r\n logout() {\r\n \r\n }\r\n\r\n\r\n isAuthenticated() {\r\n if( sessionStorage.getItem('token')){\r\n return true;\r\n }else{\r\n this.router.navigateByUrl('/Select');\r\n return false;\r\n }\r\n // here you can check if user is authenticated or not through his token\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appAutocompleteContent]'\r\n})\r\nexport class AutocompleteContentDirective {\r\n constructor( public tpl: TemplateRef ) {\r\n }\r\n}\r\n","import { Component, ContentChild, ContentChildren, QueryList, TemplateRef, ViewChild } from '@angular/core';\r\nimport { AutocompleteContentDirective } from './autocomplete-content.directive';\r\nimport { OptionComponent } from './option/option.component';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { merge } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-autocomplete',\r\n template: `\r\n \r\n
\r\n \r\n
\r\n
\r\n `,\r\n exportAs: 'appAutocomplete',\r\n styleUrls: ['./autocomplete.component.css']\r\n})\r\nexport class AutocompleteComponent {\r\n @ViewChild('root') rootTemplate: TemplateRef;\r\n\r\n @ContentChild(AutocompleteContentDirective)\r\n content: AutocompleteContentDirective;\r\n\r\n @ContentChildren(OptionComponent) options: QueryList;\r\n\r\n optionsClick() {\r\n return this.options.changes.pipe(\r\n switchMap(options => {\r\n const clicks$ = options.map(option => option.click$);\r\n return merge(...clicks$);\r\n })\r\n );\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, ViewContainerRef } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { ConnectionPositionPair, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { AutocompleteComponent } from './autocomplete.component';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { NgControl } from '@angular/forms';\r\nimport { untilDestroyed } from 'ngx-take-until-destroy';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\n\r\n@Directive({\r\n selector: '[appAutocomplete]'\r\n})\r\nexport class AutocompleteDirective implements OnInit {\r\n @Input() appAutocomplete: AutocompleteComponent;\r\n private overlayRef: OverlayRef;\r\n\r\n constructor(\r\n private host: ElementRef,\r\n private ngControl: NgControl,\r\n private vcr: ViewContainerRef,\r\n private overlay: Overlay,\r\n private router: Router,\r\n ) {\r\n }\r\n\r\n get control() {\r\n return this.ngControl.control;\r\n }\r\n\r\n ngOnInit() {\r\n fromEvent(this.origin, 'focus').pipe(\r\n untilDestroyed(this)\r\n ).subscribe(() => {\r\n this.openDropdown();\r\n\r\n this.appAutocomplete.optionsClick()\r\n .pipe(takeUntil(this.overlayRef.detachments()))\r\n .subscribe(( value: string ) => {\r\n this.control.setValue(value);\r\n this.close();\r\n });\r\n });\r\n\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((routeChange) => {\r\n this.close();\r\n });\r\n }\r\n\r\n openDropdown() {\r\n this.close();\r\n this.overlayRef = this.overlay.create({\r\n width: this.origin.offsetWidth,\r\n maxHeight: 40 * 3,\r\n backdropClass: '',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n positionStrategy: this.getOverlayPosition()\r\n });\r\n\r\n const template = new TemplatePortal(this.appAutocomplete.rootTemplate, this.vcr);\r\n this.overlayRef.attach(template);\r\n\r\n overlayClickOutside(this.overlayRef, this.origin).subscribe(() => this.close());\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n\r\n\r\n private close() {\r\n if(this.overlayRef) {\r\n this.overlayRef.detach();\r\n }\r\n\r\n this.overlayRef = null;\r\n }\r\n\r\n private getOverlayPosition() {\r\n const positions = [\r\n new ConnectionPositionPair(\r\n { originX: 'start', originY: 'bottom' },\r\n { overlayX: 'start', overlayY: 'top' }\r\n ),\r\n new ConnectionPositionPair(\r\n { originX: 'start', originY: 'top' },\r\n { overlayX: 'start', overlayY: 'bottom' }\r\n )\r\n ];\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.origin)\r\n .withPositions(positions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n }\r\n\r\n get origin() {\r\n return this.host.nativeElement;\r\n }\r\n}\r\n\r\nexport function overlayClickOutside( overlayRef: OverlayRef, origin: HTMLElement ) {\r\n return fromEvent(document, 'click')\r\n .pipe(\r\n filter(event => {\r\n const clickTarget = event.target as HTMLElement;\r\n const notOrigin = clickTarget !== origin; // the input\r\n const notOverlay = !!overlayRef && (overlayRef.overlayElement.contains(clickTarget) === false); // the autocomplete\r\n return notOrigin && notOverlay;\r\n }),\r\n takeUntil(overlayRef.detachments())\r\n )\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AutocompleteComponent } from './autocomplete.component';\r\nimport { AutocompleteDirective } from './autocomplete.directive';\r\nimport { AutocompleteContentDirective } from './autocomplete-content.directive';\r\nimport { OptionComponent } from './option/option.component';\r\n\r\nconst publicApi = [\r\n AutocompleteComponent,\r\n AutocompleteDirective,\r\n AutocompleteContentDirective,\r\n OptionComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [publicApi],\r\n exports: [publicApi]\r\n})\r\nexport class AutocompleteModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { fromEvent, Observable } from 'rxjs';\r\nimport { mapTo } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-option',\r\n template: `\r\n
\r\n \r\n
\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./option.component.scss']\r\n})\r\nexport class OptionComponent implements OnInit {\r\n @Input() value: string;\r\n @Input() url: string;\r\n click$: Observable;\r\n\r\n constructor( private host: ElementRef ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.click$ = fromEvent(this.element, 'click').pipe(mapTo(this.value));\r\n }\r\n\r\n get element() {\r\n return this.host.nativeElement;\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n OnDestroy,\r\n ViewChild,\r\n ElementRef,\r\n Renderer2\r\n} from \"@angular/core\";\r\nimport { ConfigService } from \"../services/config.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { CustomizerService } from '../services/customizer.service';\r\n\r\n@Component({\r\n selector: \"app-customizer\",\r\n templateUrl: \"./customizer.component.html\",\r\n styleUrls: [\"./customizer.component.scss\"]\r\n})\r\nexport class CustomizerComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"customizer\") customizer: ElementRef;\r\n\r\n size: string;\r\n isBgImageDisplay: boolean = true;\r\n isOpen = true;\r\n public config: any = {};\r\n layoutSub: Subscription;\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private configService: ConfigService,\r\n public customizerService: CustomizerService,\r\n ) {\r\n\r\n this.config = this.configService.templateConf;\r\n this.isOpen = !this.config.layout.customizer.hidden;\r\n\r\n if (this.config.layout.sidebar.size) {\r\n this.size = this.config.layout.sidebar.size;\r\n }\r\n }\r\n\r\n @Output() directionEvent = new EventEmitter();\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n\r\n changeSidebarWidth(value) {\r\n this.size = value;\r\n this.customizerService.changeSidebarWidth(value);\r\n }\r\n\r\n toggleCustomizer() {\r\n if (this.isOpen) {\r\n this.renderer.removeClass(this.customizer.nativeElement, \"open\");\r\n this.isOpen = false;\r\n } else {\r\n this.renderer.addClass(this.customizer.nativeElement, \"open\");\r\n this.isOpen = true;\r\n }\r\n }\r\n\r\n closeCustomizer() {\r\n this.renderer.removeClass(this.customizer.nativeElement, \"open\");\r\n this.isOpen = false;\r\n }\r\n\r\n bgImageDisplay(e) {\r\n if (e.target.checked) {\r\n this.isBgImageDisplay = true;\r\n } else {\r\n this.isBgImageDisplay = false;\r\n }\r\n //emit event to FUll Layout\r\n this.customizerService.bgImageDisplay(e);\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.layoutSub) {\r\n this.layoutSub.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

Theme Customizer

\r\n

Customize & Preview in Real Time

\r\n \r\n
\r\n
\r\n
Layout Options\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Navigation\r\n Options
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
Navbar\r\n 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
Sidebar\r\n Color Options
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
Background Colors\r\n with Shades
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Sidebar Bg\r\n Image
\r\n
\r\n
\r\n \"sidebar\r\n
\r\n
\r\n \r\n
\r\n
Background Colors
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
Sidebar Bg Image\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
Compact Menu\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n

Sidebar Width

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appEqualvalidation]'\r\n})\r\nexport class EqualvalidationDirective {\r\n\r\n constructor() { }\r\n\r\n\r\n @HostListener('paste', ['$event']) blockPaste(e: KeyboardEvent) {\r\n e.preventDefault();\r\n }\r\n\r\n @HostListener('copy', ['$event']) blockCopy(e: KeyboardEvent) {\r\n e.preventDefault();\r\n }\r\n\r\n @HostListener('cut', ['$event']) blockCut(e: KeyboardEvent) {\r\n e.preventDefault();\r\n }\r\n\r\n}\r\n","import { Directive, HostListener, Inject } from '@angular/core';\r\n\r\nimport { SidebarLinkDirective } from \"./sidebar-link.directive\";\r\n\r\n@Directive({\r\n selector: \"[appSidebarAnchorToggle]\"\r\n})\r\nexport class SidebarAnchorToggleDirective {\r\n protected navlink: SidebarLinkDirective;\r\n\r\n constructor(\r\n @Inject(SidebarLinkDirective) navlink: SidebarLinkDirective\r\n ) {\r\n this.navlink = navlink;\r\n }\r\n\r\n @HostListener(\"click\", [\"$event\"])\r\n onClick() {\r\n this.navlink.toggle();\r\n }\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { SidebarLinkDirective } from './sidebar-link.directive';\r\n\r\n@Directive({\r\n selector: '[appSidebarDropdown]'\r\n})\r\nexport class SidebarDropdownDirective implements OnInit {\r\n protected navlinks: Array = [];\r\n\r\n public ngOnInit(): any {\r\n //write your code here!\r\n }\r\n\r\n constructor( private router: Router) {\r\n }\r\n\r\n}\r\n","import {\r\n Directive, HostBinding, Inject, Input, OnInit, OnDestroy, Output, EventEmitter, AfterViewInit\r\n} from '@angular/core';\r\nimport { SidebarDirective } from \"./sidebar.directive\";\r\n\r\n@Directive({\r\n selector: \"[appSidebarlink]\"\r\n})\r\nexport class SidebarLinkDirective implements OnInit, OnDestroy {\r\n\r\n @Input()\r\n public parent: string;\r\n\r\n @Input()\r\n public level: number;\r\n\r\n @Input()\r\n public hasSub: boolean;\r\n\r\n @Input()\r\n public path: string;\r\n\r\n @HostBinding('class.open')\r\n @Input()\r\n get open(): boolean {\r\n return this._open;\r\n }\r\n set open(value: boolean) {\r\n this._open = value;\r\n }\r\n\r\n @HostBinding('class.sidebar-group-active')\r\n @Input()\r\n get sidebarGroupActive(): boolean {\r\n return this._sidebarGroupActive;\r\n }\r\n set sidebarGroupActive(value: boolean) {\r\n this._sidebarGroupActive = value;\r\n }\r\n\r\n @HostBinding('class.nav-collapsed-open')\r\n @Input()\r\n get navCollapsedOpen(): boolean {\r\n return this._navCollapsedOpen;\r\n }\r\n set navCollapsedOpen(value: boolean) {\r\n this._navCollapsedOpen = value;\r\n }\r\n\r\n protected _open: boolean;\r\n protected _sidebarGroupActive: boolean;\r\n protected _navCollapsedOpen: boolean;\r\n\r\n protected sideNav: SidebarDirective;\r\n\r\n public constructor(\r\n @Inject(SidebarDirective) sideNav: SidebarDirective) {\r\n this.sideNav = sideNav;\r\n }\r\n\r\n public ngOnInit(): any {\r\n this.sideNav.addLink(this);\r\n }\r\n\r\n public ngOnDestroy(): any {\r\n }\r\n\r\n //when side menu (vertical menu) item gets clicked\r\n public toggle(): any {\r\n this.open = !this.open;\r\n if(this.open) {\r\n this.sideNav.closeOtherLinks(this);\r\n }\r\n if (!this.open && this.level.toString() === \"1\" && this.hasSub) {\r\n this.sidebarGroupActive = false;\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, ChangeDetectorRef, OnInit, OnDestroy, HostBinding, Input, AfterViewInit } from '@angular/core';\r\nimport { SidebarLinkDirective } from './sidebar-link.directive';\r\nimport { Subscription } from 'rxjs';\r\nimport { ConfigService } from '../services/config.service';\r\nimport { LayoutService } from '../services/layout.service';\r\nimport { Router } from '@angular/router';\r\nimport { match } from 'assert';\r\n\r\n@Directive({ selector: '[appSidebar]' })\r\nexport class SidebarDirective implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n @HostBinding(\"class.expanded\")\r\n @Input()\r\n get navExpanded(): boolean {\r\n return this._navExpanded;\r\n }\r\n set navExpanded(value: boolean) {\r\n this._navExpanded = value;\r\n }\r\n\r\n protected navlinks: Array = [];\r\n layoutSub: Subscription;\r\n public config: any = {};\r\n mouseEnter = false;\r\n sidebarExpanded = true;\r\n protected _navExpanded: boolean;\r\n protected innerWidth: any;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private router: Router, private configService: ConfigService, private layoutService: LayoutService) {\r\n this.config = this.configService.templateConf;\r\n this.sidebarExpanded = !this.config.layout.sidebar.collapsed;\r\n }\r\n\r\n ngOnInit() {\r\n this.innerWidth = window.innerWidth;\r\n this.layoutSub = this.configService.templateConf$.subscribe((templateConf) => {\r\n if (templateConf) {\r\n this.config = templateConf;\r\n }\r\n this.loadLayout();\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.layoutSub) {\r\n this.layoutSub.unsubscribe();\r\n }\r\n }\r\n\r\n //load layout when changes in the config\r\n loadLayout() {\r\n this.sidebarExpanded = !this.config.layout.sidebar.collapsed;\r\n if (this.config.layout.sidebar.collapsed && !this.mouseEnter) {\r\n this.setSidebarGroupActiveCollapsed();\r\n this.navExpanded = false;\r\n }\r\n else {\r\n this.setSidebarGroupActive();\r\n this.navExpanded = true;\r\n }\r\n }\r\n\r\n //add menu links to the link list\r\n public addLink(link: SidebarLinkDirective): void {\r\n this.navlinks.push(link);\r\n }\r\n\r\n //close all other menu items other than active one\r\n public closeOtherLinks(openLink: SidebarLinkDirective): void {\r\n this.navlinks.forEach((link: SidebarLinkDirective) => {\r\n if (link != openLink && (openLink.level.toString() === \"1\" || link.level === openLink.level)) {\r\n link.open = false;\r\n link.sidebarGroupActive = false;\r\n }\r\n else if (link === openLink && (openLink.level.toString() === \"1\") && link.hasSub === true) {\r\n link.sidebarGroupActive = true;\r\n }\r\n else if (link === openLink && (openLink.level.toString() === \"1\") && link.hasSub === false) {\r\n link.sidebarGroupActive = false;\r\n link.open = false;\r\n }\r\n else if (link === openLink && openLink.level.toString() != \"1\" && link.hasSub === false) {\r\n link.open = false;\r\n link.sidebarGroupActive = false;\r\n return;\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n // call when sidebar toggle is collapsed but still in expand mode on mouse hover\r\n public setSidebarGroupActive(): void {\r\n if (this.navlinks.length > 0) {\r\n this.navlinks.forEach((link: SidebarLinkDirective) => {\r\n link.sidebarGroupActive = false;\r\n link.navCollapsedOpen = false;\r\n });\r\n let matched = this.navlinks.find(link => link.path === this.router.url);\r\n if (matched) {\r\n let parent = this.navlinks.find(link => link.parent === matched.parent && link.level.toString() === \"1\" && link.hasSub === true);\r\n if (parent) {\r\n parent.sidebarGroupActive = true;\r\n parent.navCollapsedOpen = false;\r\n parent.open = true;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n // call when sidebar toggle is collapsed and is in collapse mode on mouse out\r\n public setSidebarGroupActiveCollapsed(): void {\r\n this.closeOtherLinks(this.navlinks.find(link => link.path === this.router.url));\r\n if (this.navlinks.length > 0) {\r\n this.navlinks.forEach((link: SidebarLinkDirective) => {\r\n link.sidebarGroupActive = false;\r\n link.navCollapsedOpen = false;\r\n });\r\n let matched = this.navlinks.find(link => link.path === this.router.url);\r\n if (matched) {\r\n let parent = this.navlinks.find(link => link.parent === matched.parent && link.level.toString() === \"1\" && link.hasSub === true);\r\n if (parent) {\r\n parent.sidebarGroupActive = true;\r\n parent.navCollapsedOpen = true;\r\n parent.open = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // mouse enter event of side menu\r\n @HostListener(\"mouseenter\", [\"$event\"])\r\n onMouseOver(e: any) {\r\n this.mouseEnter = true;\r\n if (this.config.layout.sidebar.collapsed) {\r\n this.setSidebarGroupActive();\r\n this.navExpanded = true;\r\n }\r\n }\r\n\r\n // mouse leave event of side menu\r\n @HostListener(\"mouseleave\", [\"$event\"])\r\n onMouseOut(e: any) {\r\n this.mouseEnter = false;\r\n if (this.config.layout.sidebar.collapsed) {\r\n this.setSidebarGroupActiveCollapsed();\r\n this.navExpanded = false;\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\nimport * as screenfull from 'screenfull';\r\n\r\n@Directive({\r\n selector: '[appToggleFullscreen]'\r\n})\r\nexport class ToggleFullscreenDirective {\r\n\r\n @HostListener('click') onClick() {\r\n if (screenfull.isEnabled) {\r\n screenfull.toggle();\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, Inject } from '@angular/core';\r\n\r\nimport { TopMenuLinkDirective } from \"./topmenu-link.directive\";\r\n\r\n@Directive({\r\n selector: \"[appTopMenuAnchorToggle]\"\r\n})\r\nexport class TopMenuAnchorToggleDirective {\r\n protected navlink: TopMenuLinkDirective;\r\n\r\n constructor(\r\n @Inject(TopMenuLinkDirective) navlink: TopMenuLinkDirective\r\n ) {\r\n this.navlink = navlink;\r\n }\r\n\r\n // @HostListener(\"click\", [\"$event\"])\r\n // onClick() {\r\n // this.navlink.toggle();\r\n // }\r\n\r\n @HostListener(\"mouseenter\", [\"$event\"])\r\n onMouseOver(e: any) {\r\n this.navlink.openDropdown();\r\n\r\n }\r\n\r\n // @HostListener(\"mouseleave\", [\"$event\"])\r\n // onMouseOut(e: any) {\r\n // this.navlink.toggle();\r\n // }\r\n\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { TopMenuLinkDirective } from './topmenu-link.directive';\r\n\r\n@Directive({\r\n selector: '[appTopMenuDropdown]'\r\n})\r\nexport class TopMenuDropdownDirective implements OnInit {\r\n protected navlinks: Array = [];\r\n\r\n public ngOnInit(): any {\r\n //write your code here!\r\n }\r\n\r\n constructor( private router: Router) {\r\n }\r\n\r\n\r\n}\r\n","import {\r\n Directive, HostBinding, Inject, Input, OnInit, OnDestroy, Output, EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { TopMenuDirective } from \"./topmenu.directive\";\r\n\r\n\r\n@Directive({\r\n selector: \"[appTopMenulink]\"\r\n})\r\nexport class TopMenuLinkDirective implements OnInit, OnDestroy {\r\n\r\n @Input()\r\n public parent: string;\r\n\r\n @Input()\r\n public level: number;\r\n\r\n @HostBinding('class.show')\r\n @Input()\r\n get show(): boolean {\r\n return this._show;\r\n }\r\n set show(value: boolean) {\r\n this._show = value;\r\n if (value) {\r\n this.topNav.closeOtherLinks(this);\r\n }\r\n }\r\n\r\n protected _show: boolean;\r\n\r\n protected topNav: TopMenuDirective;\r\n\r\n public constructor(\r\n @Inject(TopMenuDirective) topNav: TopMenuDirective) {\r\n this.topNav = topNav;\r\n }\r\n\r\n public ngOnInit(): any {\r\n this.topNav.addLink(this);\r\n }\r\n\r\n public ngOnDestroy(): any {\r\n }\r\n\r\n // public toggle(): any {\r\n // this.show = !this.show;\r\n // }\r\n\r\n public openDropdown(): any {\r\n this.show = true;\r\n }\r\n\r\n\r\n}\r\n","import { Directive, HostListener, ChangeDetectorRef, OnInit, OnDestroy, HostBinding, Input } from '@angular/core';\r\nimport { TopMenuLinkDirective } from './topmenu-link.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({ selector: '[appTopMenu]' })\r\nexport class TopMenuDirective implements OnInit {\r\n\r\n protected navlinks: Array = [];\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public addLink(link: TopMenuLinkDirective): void {\r\n this.navlinks.push(link);\r\n }\r\n\r\n public closeOtherLinks(openLink: TopMenuLinkDirective): void {\r\n this.navlinks.forEach((link: TopMenuLinkDirective) => {\r\n if (link != openLink && (openLink.level.toString() === \"1\" || link.level === openLink.level)) {\r\n link.show = false;\r\n }\r\n });\r\n }\r\n\r\n @HostListener(\"mouseleave\", [\"$event\"])\r\n onMouseOut(e: any) {\r\n this.navlinks.forEach((link: TopMenuLinkDirective) => {\r\n link.show = false;\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { Component, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss']\r\n})\r\n\r\nexport class FooterComponent{\r\n //Variables\r\n currentDate : Date = new Date();\r\n}\r\n","\r\n
\r\n

\r\n Copyright © {{currentDate | date: 'yyyy'}} PIXINVENT\r\n , All rights reserved.\r\n

\r\n
\r\n\r\n","import { Component, OnInit, ChangeDetectorRef, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { HROUTES } from './navigation-routes.config';\r\nimport { LayoutService } from '../services/layout.service';\r\nimport { ConfigService } from '../services/config.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-horizontal-menu',\r\n templateUrl: './horizontal-menu.component.html',\r\n styleUrls: ['./horizontal-menu.component.scss']\r\n})\r\nexport class HorizontalMenuComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n public menuItems: any[];\r\n public config: any = {};\r\n level: number = 0;\r\n transparentBGClass = \"\";\r\n menuPosition = 'Side';\r\n\r\n layoutSub: Subscription;\r\n\r\n constructor(private layoutService: LayoutService,\r\n private configService: ConfigService,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router) {\r\n this.config = this.configService.templateConf;\r\n }\r\n\r\n ngOnInit() {\r\n this.menuItems = HROUTES;\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.layoutSub = this.configService.templateConf$.subscribe((templateConf) => {\r\n if (templateConf) {\r\n this.config = templateConf;\r\n }\r\n this.loadLayout();\r\n this.cdr.markForCheck();\r\n\r\n })\r\n }\r\n\r\n loadLayout() {\r\n\r\n if (this.config.layout.menuPosition && this.config.layout.menuPosition.toString().trim() != \"\") {\r\n this.menuPosition = this.config.layout.menuPosition;\r\n }\r\n\r\n\r\n if (this.config.layout.variant === \"Transparent\") {\r\n this.transparentBGClass = this.config.layout.sidebar.backgroundColor;\r\n }\r\n else {\r\n this.transparentBGClass = \"\";\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.layoutSub) {\r\n this.layoutSub.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n\r\n","import { RouteInfo } from '../vertical-menu/vertical-menu.metadata';\r\n\r\nexport const HROUTES: RouteInfo[] = [\r\n {\r\n path: '/page', title: 'Page', icon: 'ft-home', class: 'dropdown nav-item', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '', title: 'Menu Levels', icon: 'ft-align-left', class: 'dropdown nav-item has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n { path: '/YOUR-ROUTE-PATH', title: 'Second Level', icon: 'ft-arrow-right submenu-icon', class: 'dropdown-item', badge: '', badgeClass: '', isExternalLink: false, submenu: [] },\r\n {\r\n path: '', title: 'Second Level Child', icon: 'ft-arrow-right submenu-icon', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n { path: '/YOUR-ROUTE-PATH', title: 'Third Level 1.1', icon: 'ft-arrow-right submenu-icon', class: 'dropdown-item', badge: '', badgeClass: '', isExternalLink: false, submenu: [] },\r\n { path: '/YOUR-ROUTE-PATH', title: 'Third Level 1.2', icon: 'ft-arrow-right submenu-icon', class: 'dropdown-item', badge: '', badgeClass: '', isExternalLink: false, submenu: [] },\r\n ]\r\n },\r\n ]\r\n},\r\n];\r\n","import { filter, map, take } from 'rxjs/operators';\r\nimport { WebSocketService } from './../services/web-socket.service';\r\nimport { Component, Output, EventEmitter, OnInit, AfterViewInit, Pipe } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { LayoutService } from '../services/layout.service';\r\nimport { ConfigService } from '../services/config.service';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../services/comman/auth.service';\r\n\r\n@Component({\r\n selector: \"app-navbar\",\r\n templateUrl: \"./navbar.component.html\",\r\n styleUrls: [\"./navbar.component.scss\"]\r\n})\r\nexport class NavbarComponent implements OnInit, AfterViewInit {\r\n typeOfOrganization = sessionStorage.getItem('typeOfOrganization');\r\n actAs = sessionStorage.getItem('actAs');\r\n currentLang = \"en\";\r\n toggleClass = \"ft-maximize\";\r\n placement = \"bottom-right\";\r\n public isCollapsed = true;\r\n formGroup: FormGroup;\r\n @Output()\r\n toggleHideSidebar = new EventEmitter();\r\n\r\n public config: any = {};\r\n name : any;\r\n role : any;\r\n organizationName : any\r\n notifications:any=[];\r\n constructor(private auth:AuthService ,public translate: TranslateService, private layoutService: LayoutService, private configService: ConfigService, private router: Router,private WSservice:WebSocketService) {\r\n const browserLang: string = translate.getBrowserLang();\r\n translate.use(browserLang.match(/en|es|pt|de/) ? browserLang : \"en\");\r\n// this.WSservice.listen(\"update\").subscribe(res=>{\r\n// console.log(res)\r\n// if(res[\"success\"]){\r\n \r\n \r\n// this.getallnotification()\r\n// }\r\n// }\r\n// )\r\n// this.WSservice.listenAdmin(\"update\").subscribe(res=>{\r\n// console.log(res)\r\n// if(res[\"success\"]){\r\n \r\n \r\n// this.getallnotification()\r\n// }\r\n// }\r\n// )\r\n// this.WSservice.listenUser(\"update\").subscribe(res=>{\r\n// console.log(res)\r\n// if(res[\"success\"]){\r\n \r\n \r\n// this.getallnotification()\r\n// }\r\n// }\r\n// )\r\n\r\n }\r\n getallnotificationstart(){\r\n this.auth.getAllNotification().subscribe(res=>{\r\n console.log(res)\r\n if(sessionStorage.getItem('role')==\"Admin\"){\r\n\r\n this.notifications=res[\"data\"][\"create\"].filter(x=>x.role != \"Admin\")\r\n }else{\r\n this.notifications=res[\"data\"][\"create\"].filter(x=>{\r\nif(x.UserId==sessionStorage.getItem(\"userId\"))\r\n{\r\n return x\r\n}\r\n \r\n })\r\n }\r\n })\r\n}\r\ngetallnotification(){\r\n this.auth.getAllNotification().subscribe(res=>{\r\n console.log(res)\r\n if(sessionStorage.getItem('role')==\"Admin\"){\r\n\r\n this.notifications=res[\"data\"][\"create\"].filter(x=>x.role != \"Admin\")\r\n }else{\r\n this.notifications=res[\"data\"][\"create\"].filter(x=>{\r\nif(x.UserId==sessionStorage.getItem(\"userId\"))\r\n{\r\n return x\r\n}\r\n \r\n })\r\n\r\n }\r\n if(this.notifications.length!=0){\r\n\r\n this.auth.infoSuccess( this.notifications[0]?.text)\r\n }\r\n })\r\n}\r\n ngOnInit() {\r\n this.config = this.configService.templateConf;\r\n this.name = sessionStorage.name\r\n this.role = sessionStorage.role\r\n this.organizationName = sessionStorage.organizationName\r\n // this.getallnotificationstart()\r\n }\r\n\r\n logout() {\r\n sessionStorage.removeItem('token');\r\n sessionStorage.clear();\r\n \r\n this.router.navigate(['/Select']);\r\n // window.location.reload();\r\n // this.token = null;\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n if (this.config.layout.dir) {\r\n const dir = this.config.layout.dir;\r\n if (dir === \"rtl\") {\r\n this.placement = \"bottom-left\";\r\n } else if (dir === \"ltr\") {\r\n this.placement = \"bottom-right\";\r\n }\r\n }\r\n }\r\n\r\n\r\n ChangeLanguage(language: string) {\r\n this.translate.use(language);\r\n }\r\n\r\n ToggleClass() {\r\n if (this.toggleClass === \"ft-maximize\") {\r\n this.toggleClass = \"ft-minimize\";\r\n } else {\r\n this.toggleClass = \"ft-maximize\";\r\n }\r\n }\r\n\r\n toggleNotificationSidebar() {\r\n this.layoutService.emitChange(true);\r\n }\r\n\r\n toggleSidebar() {\r\n \r\n this.configService.templateConf.layout.sidebar.collapsed = false;\r\n const appSidebar = document.getElementsByClassName(\"app-sidebar\")[0];\r\n if (appSidebar.classList.contains(\"hide-sidebar\")) {\r\n // this.config.layout.sidebar.collapsed = false;\r\n \r\n this.layoutService.toggleSidebarSmallScreen(true);\r\n \r\n \r\n \r\n } else {\r\n this.toggleHideSidebar.emit(true);\r\n \r\n \r\n }\r\n }\r\n}","\r\n\r\n","import { Component, OnInit, ElementRef, Renderer2, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from '../services/layout.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-notification-sidebar',\r\n templateUrl: './notification-sidebar.component.html',\r\n styleUrls: ['./notification-sidebar.component.scss']\r\n})\r\nexport class NotificationSidebarComponent implements OnInit, OnDestroy {\r\n\r\n layoutSub: Subscription;\r\n isOpen = false;\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n constructor(private layoutService: LayoutService) {\r\n\r\n this.layoutSub = layoutService.toggleNotiSidebar$.subscribe(\r\n open => {\r\n this.isOpen = open;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.layoutSub) {\r\n this.layoutSub.unsubscribe();\r\n }\r\n }\r\n\r\n onClose() {\r\n this.layoutService.toggleNotificationSidebar(false);\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filename'\r\n})\r\nexport class FilenamePipe implements PipeTransform {\r\n\r\n transform(filename: string): any {\r\n \r\n let url= new URL(filename)\r\n return url.pathname.substring(url.pathname.lastIndexOf('/')+1);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n transform(items: any[], searchTerm: string, labelKey?: string): any {\r\n if (!items || !searchTerm) {\r\n return null;\r\n }\r\n\r\n return items.filter(\r\n item =>\r\n item[labelKey || 'name']\r\n .toLowerCase()\r\n .includes(searchTerm.toLowerCase()) === true\r\n ).slice(0,10);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\nimport { FilterPipe } from './filter.pipe';\r\nimport { SearchPipe } from './search.pipe';\r\nimport { ShortNamePipe } from './short-name.pipe';\r\nimport { FilenamePipe } from './filename.pipe';\r\n\r\n@NgModule({\r\n declarations:[FilterPipe, SearchPipe, ShortNamePipe, FilenamePipe],\r\n imports:[CommonModule],\r\n exports:[FilterPipe, SearchPipe, ShortNamePipe,FilenamePipe]\r\n})\r\n\r\nexport class PipeModule{}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'search'\r\n})\r\nexport class SearchPipe implements PipeTransform {\r\n public transform(value, keys: string, term: string) {\r\n\r\n if (!term) return value;\r\n return (value || []).filter((item) => keys.split(',').some(key => item.hasOwnProperty(key) && new RegExp(term, 'gi').test(item[key])));\r\n\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'shortName'\r\n})\r\nexport class ShortNamePipe implements PipeTransform {\r\n transform(fullName: string): any {\r\n return fullName\r\n .split(' ')\r\n .map((n) => n[0])\r\n .join('');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Router } from '@angular/router';\r\nimport { environment } from 'environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n invitationURl: any;\r\n baseURL = environment.AuthURL;\r\n baseURL1 = environment.AuthURL;\r\n companyList: any;\r\n\r\n constructor(\r\n private http : HttpClient,\r\n private toastrService: ToastrService,\r\n private router: Router\r\n ) { }\r\n \r\n loginUser(userDetails) {\r\n //\r\n return this.http.post(`${this.baseURL1}/api/auth/login`, userDetails);\r\n }\r\n // new api\r\n loginUser2(userDetails) {\r\n \r\n //\r\n return this.http.post(`${this.baseURL1}/api/auth/login`, userDetails);\r\n }\r\n getToken(){\r\n return sessionStorage.getItem('token')\r\n }\r\n getAllNotification(){\r\n return this.http.get(`${this.baseURL1}/api/auth/getAllNotification`);\r\n }\r\n\r\n forgotPassword(data) {\r\n\r\n return this.http.post(`${this.baseURL}/api/auth/forgot-password`, data);\r\n }\r\n\r\n passwordReset(data) {\r\n \r\n return this.http.post(`${this.baseURL}/api/auth/password-reset`, data);\r\n }\r\n // ToastrService-----------------------------------------------------------------------------\r\n showToaster(message) {\r\n this.toastrService.success(message);\r\n }\r\n ErrorSuccess(message) {\r\n this.toastrService.error(message);\r\n }\r\n infoSuccess(message) {\r\n this.toastrService.info(message);\r\n }\r\n warningSuccess(message) {\r\n this.toastrService.warning(message);\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject, BehaviorSubject } from \"rxjs\";\r\n\r\nexport interface ITemplateConfig\r\n{\r\n layout: {\r\n variant: string; // options: Dark, Light & Transparent\r\n menuPosition: string; // options: Side, Top (Note: Use 'Side' for Vertical Menu & 'Top' for Horizontal Menu )\r\n customizer: {\r\n hidden: boolean; // options: true, false\r\n };\r\n navbar: {\r\n type: string; // options: Static & Fixed\r\n }\r\n sidebar: { //Options for Vertical Side menu\r\n collapsed: boolean; // options: true, false\r\n size: string; // Options: 'sidebar-lg', 'sidebar-md', 'sidebar-sm'\r\n backgroundColor: string; // Options: 'black', 'pomegranate', 'king-yna', 'ibiza-sunset', 'flickr', 'purple-bliss', 'man-of-steel', 'purple-love'\r\n\r\n /* If you want transparent layout add any of the following mentioned classes to backgroundColor of sidebar option :\r\n bg-glass-1, bg-glass-2, bg-glass-3, bg-glass-4, bg-hibiscus, bg-purple-pizzaz, bg-blue-lagoon, bg-electric-viloet, bg-protage, bg-tundora\r\n */\r\n backgroundImage: boolean; // Options: true, false | Set true to show background image\r\n backgroundImageURL: string;\r\n }\r\n };\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ConfigService {\r\n public templateConf: any='';\r\n templateConfSubject = new BehaviorSubject(this.templateConf);\r\n templateConf$ = this.templateConfSubject.asObservable();\r\n\r\n constructor() {\r\n this.setConfigValue();\r\n }\r\n\r\n // Default configurations for Light layout. Please check *customizer.service.ts* for different colors and bg images options\r\n\r\n setConfigValue() {\r\n this.templateConf = {\r\n layout: {\r\n variant: \"Light\",\r\n menuPosition: \"Side\",\r\n customizer: {\r\n hidden: true\r\n },\r\n navbar: {\r\n type: 'Static'\r\n },\r\n sidebar: {\r\n collapsed: false,\r\n size: \"sidebar-md\",\r\n backgroundColor: \"java\",\r\n backgroundImage: true,\r\n // backgroundImageURL: \"assets/img/sidebar-bg/07.png\"\r\n }\r\n }\r\n };\r\n }\r\n\r\n // Default configurations for Dark layout. Please check *customizer.service.ts* for different colors and bg images options\r\n\r\n // setConfigValue() {\r\n // this.templateConf = {\r\n // layout: {\r\n // variant: \"Dark\",\r\n // menuPosition: \"Side\",\r\n // customizer: {\r\n // hidden: true\r\n // },\r\n // navbar: {\r\n // type: 'Static'\r\n // },\r\n // sidebar: {\r\n // collapsed: false,\r\n // size: \"sidebar-md\",\r\n // backgroundColor: \"black\",\r\n // backgroundImage: true,\r\n // backgroundImageURL: \"assets/img/sidebar-bg/01.jpg\"\r\n // }\r\n // }\r\n // };\r\n // }\r\n\r\n // Default configurations for Transparent layout. Please check *customizer.service.ts* for different colors and bg images options\r\n\r\n // setConfigValue() {\r\n // this.templateConf = {\r\n // layout: {\r\n // variant: \"Transparent\",\r\n // menuPosition: \"Side\",\r\n // customizer: {\r\n // hidden: true\r\n // },\r\n // navbar: {\r\n // type: 'Static'\r\n // },\r\n // sidebar: {\r\n // collapsed: false,\r\n // size: \"sidebar-md\",\r\n // backgroundColor: \"bg-glass-1\",\r\n // backgroundImage: true,\r\n // backgroundImageURL: \"\"\r\n // }\r\n // }\r\n // };\r\n // }\r\n\r\n\r\n applyTemplateConfigChange(tempConfig: ITemplateConfig) {\r\n this.templateConf = Object.assign(this.templateConf, tempConfig);\r\n this.templateConfSubject.next(this.templateConf);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConfigService } from './config.service';\r\nimport { _ } from 'core-js';\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CustomizerService {\r\n\r\n // sidebar BG colors for Light & Dark Layout\r\n light_dark_colors = [\r\n {\r\n code: \"mint\",\r\n class: \"gradient-mint\",\r\n active: false,\r\n type: 'gradient'\r\n },\r\n {\r\n code: \"king-yna\",\r\n class: \"gradient-king-yna\",\r\n active: false,\r\n type: 'gradient'\r\n },\r\n {\r\n code: \"ibiza-sunset\",\r\n class: \"gradient-ibiza-sunset\",\r\n active: false,\r\n type: 'gradient'\r\n },\r\n {\r\n code: \"flickr\",\r\n class: \"gradient-flickr\",\r\n active: false,\r\n type: 'gradient'\r\n },\r\n {\r\n code: \"purple-bliss\",\r\n class: \"gradient-purple-bliss\",\r\n active: false,\r\n type: 'gradient'\r\n },\r\n {\r\n code: \"man-of-steel\",\r\n class: \"gradient-man-of-steel\",\r\n active: false,\r\n type: 'gradient'\r\n },\r\n {\r\n code: \"purple-love\",\r\n class: \"gradient-purple-love\",\r\n active: false,\r\n type: 'gradient'\r\n },\r\n {\r\n code: \"black\",\r\n class: \"bg-black\",\r\n active: false,\r\n type: 'solid'\r\n },\r\n {\r\n code: \"white\",\r\n class: \"bg-grey\",\r\n active: false,\r\n type: 'solid'\r\n },\r\n {\r\n code: \"primary\",\r\n class: \"bg-primary\",\r\n active: false,\r\n type: 'solid'\r\n },\r\n {\r\n code: \"success\",\r\n class: \"bg-success\",\r\n active: false,\r\n type: 'solid'\r\n },\r\n {\r\n code: \"warning\",\r\n class: \"bg-warning\",\r\n active: false,\r\n type: 'solid'\r\n },\r\n {\r\n code: \"info\",\r\n class: \"bg-info\",\r\n active: false,\r\n type: 'solid'\r\n },\r\n {\r\n code: \"danger\",\r\n class: \"bg-danger\",\r\n active: false,\r\n type: 'solid'\r\n }\r\n ];\r\n\r\n // sidebar BG colors for Transparent Layout\r\n transparent_colors = [\r\n {\r\n class: \"bg-glass-hibiscus\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-purple-pizzazz\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-blue-lagoon\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-electric-violet\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-portage\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-tundora\",\r\n active: false\r\n }\r\n ];\r\n\r\n // sidebar BG images for Light & Dark Layout\r\n light_dark_bg_images = [\r\n {\r\n src: \"assets/img/sidebar-bg/01.jpg\",\r\n active: false\r\n },\r\n {\r\n src: \"assets/img/sidebar-bg/02.jpg\",\r\n active: false\r\n },\r\n {\r\n src: \"assets/img/sidebar-bg/03.jpg\",\r\n active: false\r\n },\r\n {\r\n src: \"assets/img/sidebar-bg/04.jpg\",\r\n active: false\r\n },\r\n {\r\n src: \"assets/img/sidebar-bg/05.jpg\",\r\n active: false\r\n },\r\n {\r\n src: \"assets/img/sidebar-bg/06.jpg\",\r\n active: false\r\n },\r\n ];\r\n\r\n // Background Colors with Shades for Transparent Layout\r\n transparent_colors_with_shade = [\r\n {\r\n class: \"bg-glass-1\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-2\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-3\",\r\n active: false\r\n },\r\n {\r\n class: \"bg-glass-4\",\r\n active: false\r\n },\r\n ];\r\n\r\n lightDarkLayoutGradientBGColors: any = [];\r\n lightDarkLayoutSolidBGColors: any = [];\r\n transparentLayoutBGColors: any = [];\r\n transparentLayoutBGColorsWithShades: any = [];\r\n lightDarkLayoutBGImages: any = [];\r\n\r\n\r\n constructor(private config: ConfigService) {\r\n this.getData();\r\n }\r\n\r\n getData() {\r\n this.lightDarkLayoutGradientBGColors = this.getlightDarkLayoutGradientBGColors();\r\n this.lightDarkLayoutSolidBGColors = this.getlightDarkLayoutSolidBGColors();\r\n this.transparentLayoutBGColors = this.getTransparentLayoutBGColors();\r\n this.transparentLayoutBGColorsWithShades = this.GetTransparentLayoutBGColorsWithShades();\r\n this.lightDarkLayoutBGImages = this.getLightDarkLayoutBGImages();\r\n }\r\n\r\n getlightDarkLayoutGradientBGColors() {\r\n return this.light_dark_colors.filter(_ => _.type === 'gradient')\r\n .map(color => {\r\n color.active = (color.code === this.config.templateConf.layout.sidebar.backgroundColor);\r\n return { ...color };\r\n });\r\n }\r\n\r\n getlightDarkLayoutSolidBGColors() {\r\n return this.light_dark_colors.filter(_ => _.type === 'solid')\r\n .map(color => {\r\n color.active = (color.code === this.config.templateConf.layout.sidebar.backgroundColor);\r\n return { ...color };\r\n });\r\n }\r\n\r\n getTransparentLayoutBGColors() {\r\n return this.transparent_colors\r\n .map(color => {\r\n color.active = (color.class === this.config.templateConf.layout.sidebar.backgroundColor);\r\n return { ...color };\r\n });\r\n }\r\n\r\n GetTransparentLayoutBGColorsWithShades() {\r\n return this.transparent_colors_with_shade\r\n .map(color => {\r\n color.active = (color.class === this.config.templateConf.layout.sidebar.backgroundColor);\r\n return { ...color };\r\n });\r\n }\r\n\r\n getLightDarkLayoutBGImages() {\r\n return this.light_dark_bg_images\r\n .map(image => {\r\n image.active = (image.src === this.config.templateConf.layout.sidebar.backgroundImageURL);\r\n return { ...image };\r\n });\r\n }\r\n\r\n\r\n\r\n //called when click to change on any Gradient/Solid color for Light & Dark layout in customizer\r\n changeSidebarBGColor(color) {\r\n\r\n let conf = this.config.templateConf;\r\n conf.layout.sidebar.backgroundColor = color.code;\r\n\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n\r\n this.getData();\r\n\r\n }\r\n\r\n //called when click to change on any Transparent color for Transparent layout in customizer\r\n changeSidebarTransparentBGColor(color) {\r\n\r\n let conf = this.config.templateConf;\r\n conf.layout.sidebar.backgroundColor = color.class;\r\n conf.layout.sidebar.backgroundImage = false;\r\n conf.layout.sidebar.backgroundImageURL = '';\r\n\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n\r\n this.getData();\r\n }\r\n\r\n\r\n //called when click to change on any image for Light & Dark layout in customizer\r\n changeSidebarBgImage(image) {\r\n\r\n let conf = this.config.templateConf;\r\n conf.layout.sidebar.backgroundImageURL = image.src;\r\n\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n\r\n this.getData();\r\n\r\n }\r\n\r\n bgImageDisplay(e: any) {\r\n let conf = this.config.templateConf;\r\n if (e.target.checked) {\r\n conf.layout.sidebar.backgroundImage = true;\r\n } else {\r\n conf.layout.sidebar.backgroundImage = false;\r\n }\r\n\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n }\r\n\r\n toggleCompactMenu(e: any) {\r\n let conf = this.config.templateConf;\r\n if (e.target.checked) {\r\n conf.layout.sidebar.collapsed = true;\r\n } else {\r\n conf.layout.sidebar.collapsed = false;\r\n }\r\n\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n }\r\n\r\n\r\n changeSidebarWidth(value: string) {\r\n let conf = this.config.templateConf;\r\n conf.layout.sidebar.size = value;\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n }\r\n\r\n toggleNavbarType(value: string) {\r\n let conf = this.config.templateConf;\r\n conf.layout.navbar.type = value;\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n }\r\n\r\n // position: \"Side\" for vertical menu and position: \"Top\" for horizontal menu\r\n toggleMenuPosition(position: string) {\r\n let conf = this.config.templateConf;\r\n conf.layout.menuPosition = position;\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n }\r\n\r\n switchLayout(layout: string, isBgImageDisplay: boolean) {\r\n let conf = this.config.templateConf;\r\n if(layout.toLowerCase() === 'light') {\r\n conf.layout.variant = 'Light';\r\n conf.layout.sidebar.backgroundImageURL = this.light_dark_bg_images[0].src;\r\n conf.layout.sidebar.backgroundColor = this.light_dark_colors[5].code;\r\n conf.layout.sidebar.backgroundImage = isBgImageDisplay;\r\n }\r\n else if(layout.toLowerCase() === 'dark') {\r\n conf.layout.variant = 'Dark';\r\n conf.layout.sidebar.backgroundImageURL = this.light_dark_bg_images[2].src;\r\n conf.layout.sidebar.backgroundColor = this.light_dark_colors[7].code;\r\n conf.layout.sidebar.backgroundImage = isBgImageDisplay;\r\n }\r\n else if(layout.toLowerCase() === 'transparent') {\r\n\r\n conf.layout.variant = 'Transparent';\r\n conf.layout.sidebar.backgroundImageURL = \"\";\r\n conf.layout.sidebar.backgroundColor = this.transparent_colors_with_shade[0].class;\r\n }\r\n\r\n this.config.applyTemplateConfigChange({ layout: conf.layout });\r\n\r\n this.getData();\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as CryptoTS from 'crypto-ts';\r\nimport { AES } from 'crypto-ts';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EncryptionService {\r\n isLoading = new Subject();\r\n show() {\r\n this.isLoading.next(true);\r\n }\r\n hide() {\r\n this.isLoading.next(false);\r\n }\r\n\r\n constructor() { }\r\n\r\n decryptionAES(msg) {\r\n //\r\n\r\n var today = new Date();\r\n var month = this.pad(today.getMonth() + 1, 2, 0);\r\n var date = this.pad(today.getDate(), 2, 0);\r\n //const cryptoInfo = CryptoTS.AES.encrypt(JSON.stringify({ msg }), today.getFullYear() + \"\" + month + \"\" + date + \"1201\").toString();\r\n //\r\n const secret = 'abcdefg';\r\n const bytes = CryptoTS.AES.decrypt(msg, today.getFullYear() + \"\" + month + \"\" + date + \"12012023\");\r\n console.log(\"Check encryption key generated : \",bytes, today.getFullYear() + \"\" + month + \"\" + date + \"12012023\")\r\n const plaintext = bytes.toString(CryptoTS.enc.Utf8);\r\n return plaintext;\r\n }\r\n EncryptAES(msg) {\r\n //\r\n\r\n var today = new Date();\r\n var month = this.pad(today.getMonth() + 1, 2, 0);\r\n var date = this.pad(today.getDate(), 2, 0);\r\n //const cryptoInfo = CryptoTS.AES.encrypt(JSON.stringify({ msg }), today.getFullYear() + \"\" + month + \"\" + date + \"1201\").toString();\r\n //\r\n const secret = 'abcdefg';\r\n let event = AES.encrypt(JSON.stringify(msg), today.getFullYear() + \"\" + month + \"\" + date + \"12012023\").toString();\r\n // const bytes = Buffer.from(event, 'base64');\r\n // console.log('Bytes of patient post api data:', bytes);\r\n \r\n return event;\r\n }\r\n\r\n\r\n\r\n\r\n pad(n, width, z) {\r\n z = z || '0';\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n}","\r\nimport { Injectable } from \"@angular/core\";\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from \"@angular/common/http\";\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor( private router: Router) {}\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n return next.handle(request).pipe(\r\n catchError((err) => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n sessionStorage.removeItem('token');\r\n sessionStorage.clear();\r\n \r\n this.router.navigate(['/Select']);\r\n }\r\n\r\n const error = err.error.message || err.statusText;\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LayoutService {\r\n\r\n private toggleSidebar = new Subject(); // small screen\r\n private overlaySidebarToggle = new Subject();\r\n private toggleNotiSidebar = new Subject();\r\n\r\n\r\n // Observable\r\n toggleSidebar$ = this.toggleSidebar.asObservable();\r\n overlaySidebarToggle$ = this.overlaySidebarToggle.asObservable();\r\n toggleNotiSidebar$ = this.toggleNotiSidebar.asObservable();\r\n private emitChangeSource = new Subject();\r\n changeEmitted$ = this.emitChangeSource.asObservable();\r\n emitChange(change: any) {\r\n this.emitChangeSource.next(change);\r\n }\r\n toggleSidebarSmallScreen(toggle: boolean) {\r\n this.toggleSidebar.next(toggle);\r\n }\r\n\r\n overlaySidebartoggle(toggle: boolean) {\r\n this.overlaySidebarToggle.next(toggle);\r\n }\r\n\r\n toggleNotificationSidebar(toggle: boolean) {\r\n this.toggleNotiSidebar.next(toggle);\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { finalize } from \"rxjs/operators\";\r\nimport { LoaderService } from './loader.service';\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n\r\n constructor(public loaderService: LoaderService) { }\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n \r\n this.loaderService.show();\r\n return next.handle(req).pipe(\r\n finalize(() => this.loaderService.hide())\r\n );\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\n\r\n@Injectable()\r\nexport class LoaderService {\r\n constructor(\r\n private spinner: NgxSpinnerService\r\n ) {\r\n }\r\n isLoading = new Subject();\r\n show() {\r\n this.spinner.show();\r\n this.isLoading.next(true);\r\n }\r\n\r\n hide() {\r\n this.spinner.hide();\r\n this.isLoading.next(false);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\nimport { environment } from \"environments/environment\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n// import axios from 'axios';\r\nfunction _window(): any {\r\n // return the global native browser window object\r\n return window;\r\n}\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class PatientService {\r\n baseUrl = environment.UserURL;\r\n AdminUrl = environment.AdminURL;\r\n AuthUrl = environment.AuthURL;\r\n // AuthUrl = \"https://6b0c-103-15-67-130.ngrok-free.app\"\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private router: Router,\r\n private toastrService: ToastrService\r\n ) {}\r\n get nativeWindow(): any {\r\n return _window();\r\n }\r\n pincode(Pincode) {\r\n return this.http.get(\r\n `${this.baseUrl}/v0.1/city/getCity?Pincode=${Pincode}`\r\n );\r\n }\r\n\r\n //API FOR UPDATE AYUHEALTH STATUS\r\n postAyuHelatApi(data) {\r\n debugger;\r\n return this.http.post(\r\n `https://lro1h4dk0d.execute-api.ap-south-1.amazonaws.com/test/digisparsh`,\r\n data // PROD\r\n // `https://lro1h4dk0d.execute-api.ap-south-1.amazonaws.com/test/digisparsh_test`, data // UAT\r\n );\r\n }\r\n\r\n editCliamInvoiceByAdmin(post) {\r\n return this.http.get(`${this.baseUrl}/api/aggregator/getCurrentUser`, post);\r\n }\r\n getFacetValidatedHospitalToAggregator() {\r\n return this.http.get(\r\n `${this.baseUrl}/api/Invoice/getFacetValidatedHospitalToAggregator`\r\n );\r\n }\r\n getProductByOrg() {\r\n return this.http.get(`${this.baseUrl}/api/patient/getProductByOrg`);\r\n }\r\n getFacetDApprovedHospitalToAggregator() {\r\n return this.http.get(\r\n `${this.baseUrl}/api/Invoice/getFacetDApprovedHospitalToAggregator`\r\n );\r\n }\r\n getFacetLApprovedHospitalToAggregator() {\r\n return this.http.get(\r\n `${this.baseUrl}/api/Invoice/getFacetLApprovedHospitalToAggregator`\r\n );\r\n }\r\n getLoanByKoCode(KOCode) {\r\n return this.http.get(\r\n `${this.baseUrl}/v0.1/loan/getLoanByKoCode?KoCode=${KOCode}`\r\n );\r\n }\r\n currentUser() {\r\n return this.http.get(`${this.baseUrl}/api/aggregator/getCurrentUser`);\r\n }\r\n currentUser1(post) {\r\n return this.http.get(`${this.baseUrl}/api/aggregator/getCurrentUser`, post);\r\n }\r\n // getAllInvoices(post) {\r\n //\r\n // return this.http.post(`${this.baseUrl}/api/patient/getAllInvoices`, post);\r\n // }\r\n\r\n getAllInvoices(post?) {\r\n if (post) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/getAllInvoices?${post}`\r\n );\r\n } else {\r\n return this.http.get(`${this.baseUrl}/api/patient/getAllInvoices`);\r\n }\r\n }\r\n\r\n /////////////////////////////lender invoice list//////////\r\n getAllInvoicesForLender(post?) {\r\n if (post) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/Lender/getAllInvoices?${post}`\r\n );\r\n } else {\r\n return this.http.get(`${this.baseUrl}/api/patient/Lender/getAllInvoices`);\r\n }\r\n }\r\n\r\n getAllOrg(post?) {\r\n if (post) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/Lender/getAllOrg${post}`\r\n );\r\n } else {\r\n return this.http.get(`${this.baseUrl}/api/patient/Lender/getAllOrg`);\r\n }\r\n }\r\n getPatientList(post?) {\r\n if (post) {\r\n return this.http.get(`${this.AuthUrl}/api/bima/getPatientList${post}`);\r\n } else {\r\n return this.http.get(`${this.AuthUrl}/api/bima/getPatientList`);\r\n }\r\n }\r\n\r\n updateDisbursementByExcel(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/api/patient/Lender/updateDisbursementByExcel`,\r\n post\r\n );\r\n }\r\n\r\n updatePatientInvoiceByExcel(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/api/patient/Lender/updatePatientInvoiceByExcel`,\r\n post\r\n );\r\n }\r\n\r\n //////api/patient/Lender/updateDisbursementByExcel\r\n postpatientsLoan(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/postpatientsLoan`,\r\n post\r\n );\r\n }\r\n\r\n PostPatientTermLoan(post) {\r\n debugger;\r\n return this.http.post(\r\n `${this.baseUrl}/api/patient/postPatientTermLoan`,\r\n post\r\n );\r\n }\r\n getLocation(term: number): Promise {\r\n return this.http\r\n .get(\r\n `https://maps.googleapis.com/maps/api/geocode/json?address=${term}&key=AIzaSyCHjOVqC7VgEqq9c8pfIfdfoLe9iRf5cPI`\r\n )\r\n .toPromise()\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => Promise.resolve(error.json()));\r\n }\r\n // getpincode(pincode){\r\n // let headers = new HttpHeaders();\r\n // headers.set('authorization', '');\r\n // let url=`https://maps.googleapis.com/maps/api/geocode/json?address=${pincode}&key=AIzaSyDMJEdj0gm0HP2XbUMG2jJ5y-m-Tw2Ca-U`\r\n // return this.http.get(url);\r\n // }\r\n getpincode(pincode) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/getAddressByPIN?pincode=${pincode}`\r\n );\r\n }\r\n editInvoice(post, id) {\r\n return this.http.post(\r\n `${this.baseUrl}/api/patient/editInvoice?_id=${id}`,\r\n post\r\n );\r\n }\r\n\r\n getInvoiceById(id) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/getInvoiceById?_id=${id}`\r\n );\r\n }\r\n\r\n updatePatientInvoiceForUser(post) {\r\n return this.http.put(\r\n `${this.baseUrl}/api/patient/updatePatientInvoice`,\r\n post\r\n );\r\n }\r\n\r\n updateRecommendedAmount(post) {\r\n return this.http.put(\r\n `${this.baseUrl}/api/patient/updatePatientInvoice1`,\r\n post\r\n );\r\n }\r\n /////////////get Invoice By Id For Lender///////////////////////\r\n getInvoiceByIdForLender(id) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/Lender/getInvoiceById?_id=${id}`\r\n );\r\n }\r\n\r\n updatePatientInvoice(data) {\r\n return this.http.put(\r\n `${this.baseUrl}/api/patient/Lender/updatePatientInvoice`,\r\n data\r\n );\r\n }\r\n\r\n updateDisbursement(data) {\r\n return this.http.put(\r\n `${this.baseUrl}/api/patient/lender/updateDisbursement`,\r\n data\r\n );\r\n }\r\n\r\n updateSettlement(data) {\r\n return this.http.post(`${this.baseUrl}/api/patient/updateSettlement`, data);\r\n }\r\n\r\n /////api/patient/updateSettlement\r\n\r\n createMandateForm(_id) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/createMandateForm?_id=${_id}`\r\n );\r\n }\r\n\r\n updateMandateStatus(_id, digioResponse) {\r\n return this.http.put(\r\n `${this.baseUrl}/api/patient/updateMandateStatus?_id=${_id}`,\r\n digioResponse\r\n );\r\n }\r\n\r\n verifyDocumentByUser(data) {\r\n return this.http.post(`${this.baseUrl}/api/patient/eSignAgreement`, data);\r\n }\r\n\r\n // file uploader API's\r\n getauthtoken() {\r\n return this.http.get(`${this.baseUrl}/auth`);\r\n }\r\n uploadDocuments2(post) {\r\n return this.http.post(\r\n `https://upload.imagekit.io/api/v1/files/upload`,\r\n post\r\n );\r\n }\r\n uploadPANDoc(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/uploadPANDoc`,\r\n post\r\n );\r\n }\r\n uploadAadharDoc(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/uploadAadharDoc`,\r\n post\r\n );\r\n }\r\n\r\n uploadCancelledCheque(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/uploadCancelledCheque`,\r\n post\r\n );\r\n }\r\n\r\n InsurancepolicyDoc(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/InsurancepolicyDoc`,\r\n post\r\n );\r\n }\r\n\r\n FinalBilluploadDoc(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/FinalBilluploadDoc`,\r\n post\r\n );\r\n }\r\n\r\n //NACH and Agreement file uploader\r\n uploadDoc(post) {\r\n return this.http.post(`${this.baseUrl}/v0.1/patientloan/uploadDoc`, post);\r\n }\r\n\r\n ProofuploadDoc(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/ProofuploadDoc`,\r\n post\r\n );\r\n }\r\n\r\n uploadIncomeDoc(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/uploadIncomeDoc`,\r\n post\r\n );\r\n }\r\n\r\n bankStatementDoc(post) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/patientloan/bankStatementDoc`,\r\n post\r\n );\r\n }\r\n\r\n uploadexcel(data) {\r\n return this.http.post(\r\n `${this.baseUrl}/v0.1/loan/dataUploadByExcelLoanApprove`,\r\n data\r\n );\r\n }\r\n\r\n uploadFinalBill(post) {\r\n return this.http.post(`${this.baseUrl}/api/patient/uploadFinalBill`, post);\r\n }\r\n\r\n // All in one API Patient Dashboard\r\n\r\n getPdash() {\r\n return this.http.get(`${this.baseUrl}/api/patientloan/getpdash`);\r\n }\r\n\r\n getAlldata1() {\r\n return this.http.get(`${this.baseUrl}/api/patient/getPractoDashboard`);\r\n }\r\n\r\n getAlldata(dateTo, dateFrom) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/getPractoDashboard?dateTo=${dateTo}&dateFrom=${dateFrom}`\r\n );\r\n }\r\n ////////Patient Lender Dashboard//////////////////////////\r\n getDashboard() {\r\n return this.http.get(`${this.baseUrl}/api/patient/Lender/getDashboard`);\r\n }\r\n\r\n getDashboard1(dateTo, dateFrom) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/Lender/getDashboard?dateTo=${dateTo}&dateFrom=${dateFrom}`\r\n );\r\n }\r\n\r\n /////new patient term loan///////\r\n\r\n // getPdash(){\r\n\r\n // return this.http.get(`${this.baseUrl}/api/patientloan/getpdash`);\r\n // }\r\n\r\n patientLoanDashJob() {\r\n return this.http.get(`${this.AdminUrl}/api/patientDash/patientLoanDashJob`);\r\n }\r\n\r\n patientLoanDashJob1(dateTo, dateFrom) {\r\n return this.http.get(\r\n `${this.AdminUrl}/api/patientDash/patientLoanDashJob?dateTo=${dateTo}&dateFrom=${dateFrom}`\r\n );\r\n }\r\n getByIdToLender() {\r\n return this.http.get(`${this.baseUrl}/api/lender/getByIdToLender`);\r\n }\r\n // getAlldata(dateTo,dateFrom) {\r\n // return this.http.get(`${this.baseUrl}/api/patient/getPractoDashboard?dateTo=${dateTo}&dateFrom=${dateFrom}`);\r\n // }\r\n\r\n // BG Api\r\n\r\n // check_patient(data){\r\n // return this.http.get(`${this.AuthUrl}/api/bima/check-patient?mobileNumber=${data}`)\r\n // }\r\n check_patient(post?) {\r\n if (post) {\r\n return this.http.get(`${this.AuthUrl}/api/bima/check-patient${post}`);\r\n } else {\r\n return this.http.get(`${this.AuthUrl}/api/bima/check-patient`);\r\n }\r\n }\r\n tpa() {\r\n return this.http.get(`${this.AuthUrl}/api/bima/tpa`);\r\n }\r\n insuranceco() {\r\n return this.http.get(`${this.AuthUrl}/api/bima/insuranceco`);\r\n }\r\n downloadConsentLetter() {\r\n return this.http.get(`${this.baseUrl}/api/patient/downloadConsentLetter`);\r\n }\r\n CreateBimaPatient(post) {\r\n return this.http.post(`${this.AuthUrl}/api/bima/CreatePatient`, post);\r\n }\r\n UpdateClaimStage1(post, id) {\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/UpdateClaimStage1?PatientId=${id}`,\r\n post\r\n );\r\n }\r\n UpdateClaimStage2(post, id) {\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/UpdateClaimStage2?PatientId=${id}`,\r\n post\r\n );\r\n }\r\n UpdateClaimStage3(post, id) {\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/UpdateClaimStage3?PatientId=${id}`,\r\n post\r\n );\r\n }\r\n UpdateClaimStage4(post, id) {\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/UpdateClaimStage4?PatientId=${id}`,\r\n post\r\n );\r\n }\r\n UpdateClaimStage5(post, id) {\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/UpdateClaimStage5?PatientId=${id}`,\r\n post\r\n );\r\n }\r\n UpdateDisbersment(post, id) {\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/UpdateDisbersment?CaseId=${id}`,\r\n post\r\n );\r\n }\r\n upload_document(post) {\r\n return this.http.post(`${this.AuthUrl}/api/bima/upload_document`, post);\r\n }\r\n UpdateClaimStage6(post, id) {\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/UpdateClaimStage6?PatientId=${id}`,\r\n post\r\n );\r\n }\r\n ClaimReject(post, id) {\r\n // return null\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/CaseReject?PatientId=${id}`,\r\n post\r\n );\r\n }\r\n queryPending(post, id) {\r\n // return null\r\n return this.http.patch(\r\n `${this.AuthUrl}/api/bima/queryPending?caseid=${id}`,\r\n post\r\n );\r\n }\r\n editCase(post) {\r\n // return null\r\n return this.http.patch(`${this.AuthUrl}/api/bima/editCase`, post);\r\n }\r\n caseById(id) {\r\n return this.http.get(`${this.AuthUrl}/api/bima/getCaseById?case_id=${id}`);\r\n }\r\n\r\n getbimatoken() {\r\n return this.http.get(`${this.AuthUrl}/api/bima/token`);\r\n }\r\n createBimapatient(post) {\r\n return this.http.post(\r\n `https://deskqa2.bimagarage.com/external/api/create-patient/`,\r\n post\r\n );\r\n }\r\n\r\n /////////////////////////////\r\n showToaster(message) {\r\n this.toastrService.success(message);\r\n }\r\n ErrorSuccess(message) {\r\n this.toastrService.error(message);\r\n }\r\n infoSuccess(message) {\r\n this.toastrService.info(message);\r\n }\r\n warningSuccess(message) {\r\n this.toastrService.warning(message);\r\n }\r\n\r\n CreateCase(post) {\r\n return this.http.post(`${this.AuthUrl}/api/bima/createCase`, post);\r\n }\r\n caseList(id, data) {\r\n return this.http.get(`${this.AuthUrl}/api/bima/getCaseList?id=${id}`, data);\r\n }\r\n getmobilenumber(mobileNumber) {\r\n return this.http.get(\r\n `${this.AuthUrl}/api/bima/getPatientDetailsByMobileNumber?MobileNumber=${mobileNumber}`\r\n );\r\n }\r\n\r\n getAllBanks() {\r\n return this.http.get(`${this.baseUrl}/api/patient/getAllBanks`);\r\n }\r\n getOrgByIdToAdmin(id) {\r\n return this.http.get(`${this.baseUrl}/api/patient/getOrgById?_id=${id}`);\r\n }\r\n // API for getting all details of hospitals\r\n getHospitaList() {\r\n debugger;\r\n return this.http.get(`${this.AuthUrl}/api/excel/getAllHospitalBankDetails`);\r\n }\r\n\r\n // PATNER STATUS --> DOCUMENT URL (STATUS -> )\r\n getPartnerDoc(ID) {\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/getAgreementPdf?_id=${ID}`\r\n );\r\n }\r\n\r\n getPartnerDoc1(ID) {\r\n debugger;\r\n return this.http.get(\r\n `${this.baseUrl}/api/patient/sendAgreementPdf?_id=${ID}`\r\n );\r\n }\r\n\r\n checkBankDetailS(data) {\r\n return this.http.post(\r\n `${this.baseUrl}/api/patient/createMandateForm`,\r\n data\r\n );\r\n }\r\n}\r\n","import { HttpRequest, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Injectable, Injector, QueryList } from \"@angular/core\";\r\nimport { HttpInterceptor, HttpResponse } from \"@angular/common/http\";\r\nimport { AuthService } from \"./comman/auth.service\";\r\nimport { EncryptionService } from \"./encryption.service\";\r\nimport { tap, mapTo, map, finalize, catchError } from \"rxjs/operators\";\r\nimport { environment } from \"environments/environment\";\r\nimport { PatientService } from \"./patient.service\";\r\nimport { Observable } from \"rxjs/internal/Observable\";\r\nimport { throwError } from \"rxjs\";\r\nimport { Router } from \"@angular/router\";\r\nimport encryptedRoutes from \"../utilities/encrypetdRoutes\";\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TokenInterceptorService implements HttpInterceptor {\r\n constructor(\r\n private injector: Injector,\r\n private encrypt: EncryptionService,\r\n private patient: PatientService,\r\n private router: Router\r\n ) {}\r\n private AdminURL = environment.AdminURL;\r\n private AuthURL = environment.AuthURL;\r\n private UserURL = environment.UserURL;\r\n private isEncrypted = environment.isEncrypted;\r\n\r\n intercept(req, next) {\r\n let url: any;\r\n if (req?.url) {\r\n url = new URL(req.url);\r\n }\r\n console.log(url)\r\n function encodeSpecialCharacters(input) {\r\n const replacements = {\r\n \"+\": \"xMl3Jk\",\r\n \"/\": \"Por21Ld\",\r\n \"=\": \"Ml32\",\r\n xMl3Jk: \"+\",\r\n Por21Ld: \"/\",\r\n Ml32: \"=\",\r\n };\r\n\r\n // Create a regular expression that matches the specified characters\r\n const regex = /[+/=]|xMl3Jk|Por21Ld|Ml32/g;\r\n\r\n // Use a function to replace matched characters based on the replacements object\r\n return input.replace(regex, (match) => replacements[match]);\r\n }\r\n const yourHeaderKeys = req.headers.get(\"isEncrypted\");\r\n\r\n if (yourHeaderKeys) {\r\n this.isEncrypted = yourHeaderKeys;\r\n }\r\n const serviceFarm = this.injector.get(AuthService);\r\n if (\r\n (this.isEncrypted && this.isEncrypted == true) ||\r\n encryptedRoutes.includes(url?.pathname)\r\n ) {\r\n if (\r\n url.origin == this.AdminURL ||\r\n url.origin == this.UserURL ||\r\n encryptedRoutes.includes(url?.pathname)\r\n ) {\r\n if (req.body instanceof FormData) {\r\n console.log(req.body, \"req\");\r\n const tokenizedReq = req.clone({\r\n headers: req.headers\r\n .set(\"Authorization\", `Bearer ${serviceFarm.getToken()}`)\r\n .set(\"Isencrypted\", `${this.isEncrypted}`),\r\n });\r\n\r\n return next.handle(tokenizedReq).pipe(\r\n map((event) => {\r\n if (event instanceof HttpResponse) {\r\n if (event.body.data) {\r\n var decrypted = this.encrypt.decryptionAES(event.body.data);\r\n\r\n return event.clone({\r\n body: JSON.parse(JSON.parse(decrypted)),\r\n });\r\n }\r\n }\r\n }),\r\n catchError((err: any) => {\r\n // if( err.status == 502 || err.statusText == \"Unknown Error\"){\r\n // this.router.navigate(['/Select/Login/ShowError']);\r\n // }\r\n var decrypted = this.encrypt.decryptionAES(err.error.data);\r\n\r\n const newHttpErrorResponse = new HttpErrorResponse({\r\n error: JSON.parse(decrypted),\r\n headers: err.headers,\r\n status: err.status,\r\n statusText: err.statusText,\r\n url: err.url,\r\n });\r\n console.log(err, \"err\");\r\n\r\n return throwError(newHttpErrorResponse);\r\n })\r\n );\r\n } else {\r\n let encriptURL;\r\n if (req.url.indexOf(\"?\") > 0) {\r\n let substirng = encodeSpecialCharacters(\r\n this.encrypt\r\n .EncryptAES(\r\n req.url.substr(req.url.indexOf(\"?\") + 1, req.url.length)\r\n )\r\n .toString()\r\n );\r\n encriptURL =\r\n req.url.substr(0, req.url.indexOf(\"?\") + 1) + \"url=\" + substirng;\r\n }\r\n const tokenizedReq = req.clone({\r\n headers: req.headers\r\n .set(\"Authorization\", `Bearer ${serviceFarm.getToken()}`)\r\n .set(\"Isencrypted\", `${this.isEncrypted}`),\r\n body: { Data: this.encrypt.EncryptAES(req.body) },\r\n url: encriptURL,\r\n });\r\n\r\n return next.handle(tokenizedReq).pipe(\r\n map((event) => {\r\n if (event instanceof HttpResponse) {\r\n if (event.body.data) {\r\n var decrypted = this.encrypt.decryptionAES(event.body.data);\r\n\r\n return event.clone({\r\n body: JSON.parse(JSON.parse(decrypted)),\r\n });\r\n }\r\n }\r\n }),\r\n catchError((err: any) => {\r\n var decrypted = this.encrypt.decryptionAES(err.error.data);\r\n console.log(decrypted);\r\n const newHttpErrorResponse = new HttpErrorResponse({\r\n error: JSON.parse(decrypted),\r\n headers: err.headers,\r\n status: err.status,\r\n statusText: err.statusText,\r\n url: err.url,\r\n });\r\n return throwError(newHttpErrorResponse);\r\n })\r\n );\r\n }\r\n } else if (url.origin == \"https://deskqa2.bimagarage.com\") {\r\n const tokenizedReq = req.clone({\r\n headers: req.headers\r\n .set(\"Authorization\", `Bearer ${serviceFarm.getToken()}`)\r\n .set(\"Isencrypted\", `${this.isEncrypted}`),\r\n });\r\n\r\n return next.handle(tokenizedReq);\r\n } else {\r\n const tokenizedReq = req.clone({\r\n headers: req.headers.set(\r\n \"Authorization\",\r\n `Bearer ${serviceFarm.getToken()}`\r\n ),\r\n // headers:req.headers.set('Authorization', `Bearer ${serviceFarm.getToken()}`).set('Isencrypted',`${this.isEncrypted}`)\r\n });\r\n\r\n return next.handle(tokenizedReq);\r\n }\r\n } else if (\r\n url.origin == \"https://digi-uat-storage.s3.ap-south-1.amazonaws.com\"\r\n ) {\r\n const tokenizedReq = req.clone({\r\n // setHeaders: {\r\n // Authorization : `Bearer ${serviceFarm.getToken()}`,\r\n // \"ngrok-skip-browser-warning\":\"6022\" // Read token\r\n // }\r\n });\r\n\r\n return next.handle(tokenizedReq);\r\n } else {\r\n // const tokenizedReq = req.clone({\r\n\r\n // setHeaders: {\r\n // Authorization : `Bearer ${serviceFarm.getToken()}`,\r\n // \"ngrok-skip-browser-warning\":\"6022\" // Read token\r\n // }\r\n\r\n // });\r\n const tokenizedReq = req.clone({\r\n headers: req.headers\r\n .set(\"Authorization\", `Bearer ${serviceFarm.getToken()}`)\r\n .set(\"Isencrypted\", `${this.isEncrypted}`)\r\n .set(\"ngrok-skip-browser-warning\", \"6022\"),\r\n });\r\n\r\n return next.handle(tokenizedReq);\r\n }\r\n }\r\n}\r\n\r\n// complete\r\n","import { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport io from 'socket.io-client';\r\nimport { environment } from 'environments/environment';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WebSocketService {\r\n UserURL = environment.UserURL;\r\n AdminUrl = environment.AdminURL;\r\n AuthURL = environment.AuthURL;\r\n socket:any;\r\n socket1:any;\r\n socket2:any;\r\n constructor() {\r\n // this.socket= (io as any)(this.AuthURL, { transports: ['websocket', 'polling', 'flashsocket'] });\r\n // this.socket1= (io as any)(this.AdminUrl, { transports: ['websocket', 'polling', 'flashsocket'] });\r\n // this.socket2= (io as any)(this.UserURL, { transports: ['websocket', 'polling', 'flashsocket'] });\r\n }\r\n \r\n listen(eventName:string){\r\n return new Observable((subscriber)=>{\r\n this.socket.on(eventName,(data)=>{\r\n subscriber.next(data)\r\n })\r\n });\r\n }\r\n\r\n emit(eventName:string,data:any){\r\n this.socket.emit(eventName,data)\r\n }\r\n listenAdmin(eventName:string){\r\n return new Observable((subscriber)=>{\r\n this.socket1.on(eventName,(data)=>{\r\n subscriber.next(data)\r\n })\r\n });\r\n }\r\n\r\n emitAdmin(eventName:string,data:any){\r\n this.socket1.emit(eventName,data)\r\n }\r\n listenUser(eventName:string){\r\n return new Observable((subscriber)=>{\r\n this.socket2.on(eventName,(data)=>{\r\n subscriber.next(data)\r\n })\r\n });\r\n }\r\n\r\n emitUser(eventName:string,data:any){\r\n this.socket2.emit(eventName,data)\r\n }\r\n}\r\n","import { isPlatformBrowser } from \"@angular/common\";\r\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID, Injectable } from '@angular/core';\r\n\r\n/* Create a new injection token for injecting the window into a component. */\r\nexport const WINDOW = new InjectionToken('WindowToken');\r\n\r\n/* Define abstract class for obtaining reference to the global window object. */\r\nexport abstract class WindowRef {\r\n\r\n get nativeWindow(): Window | Object {\r\n throw new Error('Not implemented.');\r\n }\r\n\r\n}\r\n\r\n/* Define class that implements the abstract class and returns the native window object. */\r\n@Injectable()\r\nexport class BrowserWindowRef extends WindowRef {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get nativeWindow(): Window | Object {\r\n return window;\r\n }\r\n\r\n}\r\n\r\n/* Create an factory function that returns the native window object. */\r\nexport function windowFactory(browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object {\r\n if (isPlatformBrowser(platformId)) {\r\n return browserWindowRef.nativeWindow;\r\n }\r\n return new Object();\r\n}\r\n\r\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\r\nexport const browserWindowProvider: ClassProvider = {\r\n provide: WindowRef,\r\n useClass: BrowserWindowRef\r\n};\r\n\r\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\r\nexport const windowProvider: FactoryProvider = {\r\n provide: WINDOW,\r\n useFactory: windowFactory,\r\n deps: [ WindowRef, PLATFORM_ID ]\r\n};\r\n\r\n/* Create an array of providers. */\r\nexport const WINDOW_PROVIDERS = [\r\n browserWindowProvider,\r\n windowProvider\r\n];\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from 'environments/environment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\n\r\n// import axios from 'axios';\r\nfunction _window(): any {\r\n // return the global native browser window object\r\n return window;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WorldlineService {\r\n baseUrl = environment.UserURL;\r\n AdminUrl = environment.AdminURL;\r\n AuthUrl = environment.AuthURL;\r\n constructor(private http: HttpClient,private router: Router, private toastrService: ToastrService) { }\r\n\r\n get nativeWindow(): any {\r\n return _window();\r\n }\r\n\r\n worldLineHash(post){ \r\n return this.http.post(`${this.AuthUrl}/api/worldLine/hashConversion`, post);\r\n }\r\n allfiles(post){\r\n return this.http.post(`${this.AuthUrl}/api/storage/uploadOcrTemplates`,post);\r\n }\r\n getallfiles(post){\r\n return this.http.get(`${this.AuthUrl}/api/storage/getUploadedOcrDoc?pageNumber=${post.pageNumber}&pageSize=${post.pageSize}&dateFrom=${post.startDate}&dateTo=${post.endDate}` )\r\n }\r\n deleteFile(post){\r\n return this.http.delete(`${this.AuthUrl}/api/storage/deleteFile?id=${post}`)\r\n }\r\n sendInitiatePaymentLink(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/sendInitiatePaymentLink`, post);\r\n }\r\n\r\n getWorldLineFormDatabyId(id){\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/getFormdataById?id=${id}`);\r\n }\r\n\r\n worldLineHashCapture(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/hashConversionCapture`, post);\r\n }\r\n\r\n getAllPaymentList(post?) {\r\n if (post) {\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/worldlineList${post}`);\r\n \r\n } else {\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/worldlineList`);\r\n \r\n }\r\n \r\n }\r\n cancelOrderapi(post){\r\n return this.http.post(`${this.AuthUrl}/api/plada/cancelOrder`,post);\r\n }\r\n getAllPaymentListbyOrganzation(post?) {\r\n if (post) {\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/getListByOrgId${post}`);\r\n \r\n } else {\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/getListByOrgId`);\r\n \r\n }\r\n \r\n }\r\n getHospitaListforWorldline(){\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/getAllWorldlineUsersList`);\r\n }\r\n getlistDatabyHospital(post?) {\r\n if (post) {\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/getListByHospitalId${post}`);\r\n \r\n } else {\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/getListByHospitalId`);\r\n \r\n }\r\n \r\n }\r\n\r\n worldlineDashbord(){\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/dashboardData`)\r\n }\r\n dashboardDataHospital(){\r\n return this.http.get(`${this.AuthUrl}/api/worldLine/dashboardDataHospital`)\r\n }\r\n\r\n // Plada Payment API's\r\n\r\n pladaAddData(post){\r\n debugger\r\n return this.http.post(`${this.AuthUrl}/api/plada/pladaAuth`, post);\r\n }\r\n\r\n pladaCapture(post){\r\n return this.http.post(`${this.AuthUrl}/api/plada/excecuteMandate`, post);\r\n }\r\n redirectit(post){\r\n return this.http.post(`${this.AuthUrl}/api/plada/returnDataApi`,post);\r\n }\r\n redirectApi(post){\r\n return this.http.post(`${this.AuthUrl}/api/plada/redirectApi`,post);\r\n }\r\n showToaster(message) {\r\n this.toastrService.success(message);\r\n }\r\n \r\n ErrorSuccess(message) {\r\n this.toastrService.error(message);\r\n }\r\n \r\n infoSuccess(message) {\r\n this.toastrService.info(message);\r\n }\r\n \r\n warningSuccess(message) {\r\n this.toastrService.warning(message);\r\n }\r\n OtypeTransaction(id){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/OtypeTransaction?id=${id}`,\"\");\r\n }\r\n // worldLineSendOtp(post){\r\n // return this.http.post(`${this.AuthUrl}/api/worldLine/send-otp`,post);\r\n // }\r\n // worldLineVerifyOtp(post){\r\n // return this.http.post(`${this.AuthUrl}/api/worldLine/verify-otp`,post);\r\n // }\r\n worldLineSendOtp(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/send-otp`,post);\r\n }\r\n worldLineVerifyOtp(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/verify-otp`,post);\r\n }\r\n worldlineSenddemail(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/sendemailforManipal`,post)\r\n }\r\n updatedataformanipal(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/updatedataformanipal`,post)\r\n }\r\n findById(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/findById`,post);\r\n }\r\n internalLogin(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/internalLogin`,post)\r\n }\r\n sendemailformanipalConfirm(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/sendemailformanipalConfirm`,post);\r\n }\r\n internalLoginemail(post){\r\n return this.http.post(`${this.AuthUrl}/api/worldLine/internalLoginemail`,post)\r\n }\r\n private myMethod = new Subject();\r\n myMethodInvoke = this.myMethod.asObservable();\r\n changeResponse(boolean){\r\n this.myMethod.next(boolean);\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 { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { PerfectScrollbarModule } from \"ngx-perfect-scrollbar\";\r\nimport { ClickOutsideModule } from 'ng-click-outside';\r\n\r\nimport { AutocompleteModule } from './components/autocomplete/autocomplete.module';\r\nimport { PipeModule } from 'app/shared/pipes/pipe.module';\r\n\r\n//COMPONENTS\r\nimport { FooterComponent } from \"./footer/footer.component\";\r\nimport { NavbarComponent } from \"./navbar/navbar.component\";\r\nimport { HorizontalMenuComponent } from './horizontal-menu/horizontal-menu.component';\r\nimport { VerticalMenuComponent } from \"./vertical-menu/vertical-menu.component\";\r\nimport { CustomizerComponent } from './customizer/customizer.component';\r\nimport { NotificationSidebarComponent } from './notification-sidebar/notification-sidebar.component';\r\n\r\n//DIRECTIVES\r\nimport { ToggleFullscreenDirective } from \"./directives/toggle-fullscreen.directive\";\r\nimport { SidebarLinkDirective } from './directives/sidebar-link.directive';\r\nimport { SidebarDropdownDirective } from './directives/sidebar-dropdown.directive';\r\nimport { SidebarAnchorToggleDirective } from './directives/sidebar-anchor-toggle.directive';\r\nimport { SidebarDirective } from './directives/sidebar.directive';\r\nimport { TopMenuDirective } from './directives/topmenu.directive';\r\nimport { TopMenuLinkDirective } from './directives/topmenu-link.directive';\r\nimport { TopMenuDropdownDirective } from './directives/topmenu-dropdown.directive';\r\nimport { TopMenuAnchorToggleDirective } from './directives/topmenu-anchor-toggle.directive';\r\nimport { DateInputsModule } from '@progress/kendo-angular-dateinputs';\r\n\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ComboBoxModule } from '@progress/kendo-angular-dropdowns';\r\nimport { DialogModule } from '@progress/kendo-angular-dialog';\r\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\r\nimport { InputsModule } from '@progress/kendo-angular-inputs';\r\nimport { GridModule } from '@progress/kendo-angular-grid';\r\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\r\nimport { DialogsModule } from '@progress/kendo-angular-dialog';\r\nimport { MaterialModule } from 'app/material/material';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { EqualvalidationDirective } from './directives/equalvalidation.directive';\r\n\r\n@NgModule({\r\n exports: [\r\n CommonModule,\r\n FooterComponent,\r\n NavbarComponent,\r\n VerticalMenuComponent,\r\n HorizontalMenuComponent,\r\n CustomizerComponent,\r\n NotificationSidebarComponent,\r\n ToggleFullscreenDirective,\r\n SidebarDirective,\r\n TopMenuDirective,\r\n NgbModule,\r\n TranslateModule,\r\n CommonModule,\r\n FooterComponent,\r\n NavbarComponent,\r\n // SidebarComponent,\r\n NotificationSidebarComponent,\r\n ToggleFullscreenDirective,\r\n SidebarDirective,\r\n TranslateModule,\r\n GridModule,\r\n NgSelectModule,\r\n NgbModule,\r\n ComboBoxModule,\r\n DialogModule,\r\n ButtonsModule,\r\n InputsModule,DateInputsModule,\r\n DropDownsModule,\r\n DialogsModule,\r\n EqualvalidationDirective,\r\n PipeModule\r\n ],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n NgbModule,\r\n TranslateModule,\r\n FormsModule,\r\n OverlayModule,\r\n ReactiveFormsModule ,\r\n PerfectScrollbarModule,\r\n ClickOutsideModule,\r\n AutocompleteModule,\r\n PipeModule,\r\n RouterModule,\r\n CommonModule,\r\n NgbModule,\r\n TranslateModule,\r\n \r\n GridModule ,\r\n MaterialModule,\r\n MatFormFieldModule,\r\n MatCardModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n NgbDropdownModule,\r\n ComboBoxModule,\r\n DialogModule,\r\n ButtonsModule,\r\n InputsModule,DateInputsModule,\r\n DropDownsModule,\r\n DialogsModule,\r\n \r\n ],\r\n declarations: [\r\n FooterComponent,\r\n NavbarComponent,\r\n VerticalMenuComponent,\r\n HorizontalMenuComponent,\r\n CustomizerComponent,\r\n NotificationSidebarComponent,\r\n ToggleFullscreenDirective,\r\n SidebarLinkDirective,\r\n SidebarDropdownDirective,\r\n SidebarAnchorToggleDirective,\r\n SidebarDirective,\r\n TopMenuLinkDirective,\r\n TopMenuDropdownDirective,\r\n TopMenuAnchorToggleDirective,\r\n TopMenuDirective,\r\n EqualvalidationDirective,\r\n \r\n ]\r\n})\r\nexport class SharedModule { }\r\n"," const encryptedRoutes: string[] =['/api/auth/login'];\r\n export default encryptedRoutes","import { RouteInfo } from './sidebar.metadata';\r\n\r\nexport function getAlldata() {\r\n const dsROUTES: RouteInfo[] = []\r\n if (sessionStorage.getItem('claimFinancing') == 'true') {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'Claim Financing', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [ \r\n {\r\n path: '/Admin/Invoice/Dashboard/dashboardMaster', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Invoice/Invoice-Status/Claim-invoice', title: 'Claim Invoices', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('supplierFinancing') == 'true') {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'Supplier Financing', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Supplier/Dashboard/dashboardSupplier', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Supplier/Invoices/invoices', title: 'Invoices', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('purchaseFinancing') == 'true') {\r\n\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'Purchase Financing', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n\r\n submenu: [\r\n {\r\n path: '/Admin/Pharmacy-Finance/Dashboard/dashboardPharmacy', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Pharmacy-Finance/Invoices/invoices', title: 'Invoices', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('merchantFinancing') == 'true') {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'Merchant Financing', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Merchant/Dashboard/dashboardMerchant', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Merchant/user-list', title: 'Master User List', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Admin/Merchant/MerchantExcelData', title: 'Updated Status Data', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('patientFinancing') == 'true') {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Patient/patientDashboard', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Invoice/Invoice-Status/Patient-invoice', title: 'Patient Invoices', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Admin/Invoice/Invoice-Status/OSV-Details', title: 'OSV Details', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n if (sessionStorage.getItem('tatkaal') == 'true') {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'TATKAAL', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Payment/Worldline-Dashboard', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-Payment', title: 'Initiate Payment', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-List', title: 'Transactions', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n }\r\n ]\r\n },\r\n )\r\n }\r\n if(sessionStorage.getItem('isAbha') == 'true'){\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'ABHA', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Abha/ABHA-Login/Abha-User-Login', title: 'ABHA Login', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Abha/ABHA-Aadhar/Aadhar-Verification', title: 'ABHA Creation', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Abha/ABHA-List/Abha-List', title: 'ABHA List', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n // {\r\n // path: '/Admin/Abha/abha-form/abha-form', title: 'NHCX', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n // },\r\n ]\r\n },\r\n\r\n )\r\n }\r\n if (sessionStorage.getItem('accessControl') != \"0\" && sessionStorage.getItem('accessControl') != \"1\" && sessionStorage.getItem('accessControl') != \"2\") {\r\n dsROUTES.push(\r\n // {\r\n // path: '', title: 'ABHA', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n // submenu: [\r\n // {\r\n // path: '/Admin/Abha/ABHA-Login/Abha-User-Login', title: 'ABHA Login', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n // },\r\n // {\r\n // path: '/Admin/Abha/ABHA-Aadhar/Aadhar-Verification', title: 'ABHA Creation', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n // },\r\n // {\r\n // path: '/Admin/Abha/ABHA-List/Abha-List', title: 'ABHA List', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n // },\r\n // ]\r\n // },\r\n\r\n {\r\n // path: '', title: 'TATKAAL', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n path: '', title: 'TATKAAL', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n // path: '/Admin/Payment/Worldline-Dashboard', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n path: '/Admin/Payment/Worldline-Dashboard', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-Payment', title: 'Initiate Payment', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-List', title: 'Transactions', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n }\r\n ]\r\n },\r\n )\r\n\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'New Leads', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/contact/Leads-dashboard', title: 'Leads Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Admin/contact/registered-list', title: 'List', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('employeeManagement') == 'true') {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'Employee Management', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Invoice/Employee-Management/Dashboard', title: 'Dashboard', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Invoice/Employee-Management/employeeList', title: 'Employee List', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Admin/Invoice/Employee-Management/employeeLoans', title: 'Employee Loans', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('accessControl') != \"0\" && sessionStorage.getItem('accessControl') != \"1\" && sessionStorage.getItem('accessControl') != \"2\") {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'User Master', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/UserMaster/user-list', title: 'User', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n {\r\n path: '', title: 'Organization', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Organization/organizations', title: 'Organizations', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n {\r\n path: '', title: 'Association', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Association/Isurance/Insurance-list', title: 'Insurance Company', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Association/TPA/TPA-list', title: 'TPA List', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Association/UWPartnar/Partnar-List', title: 'Associate Partner', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Association/Vendor_hospital_association/Vendor_hospital_List', title: 'Vendor Hospital', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Association/Aggregator_hospital_association/Aggregator_hospital_List', title: 'Associate Hospital', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Association/Vendor_distributor_association/Vendor_Distributor_List', title: 'Vendor Distributor1', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n )\r\n }\r\n if (sessionStorage.getItem('isStorage') == 'true' ) {\r\n dsROUTES.push(\r\n {\r\n path: '', title: 'Storage', icon: '', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Storage/Upload', title: 'Upload', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n // {\r\n // path: '/Admin/Storage/List', title: 'List', icon: '', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n // },\r\n ]\r\n },\r\n )\r\n }\r\n return dsROUTES\r\n}\r\n","import { RouteInfo } from './sidebar.metadata';\r\nexport function getAlldata3() {\r\n const agROUTES: RouteInfo[] = [];\r\n\r\n if (sessionStorage.getItem('claimFinancing') == 'true') {\r\n agROUTES.push(\r\n {\r\n path: '', title: 'Claim Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Aggregator/Dashboard/DashboardAggregator', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Aggregator/Aggregator/Invoice/invoices', title: 'Invoice', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Aggregator/hospital/Hospital', title: 'Hospital', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Aggregator/UploadInvoice/Uploadinvoice', title: 'Upload Invoice', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Aggregator/Aggregator/hospital/editProfileAggregator', title: 'Edit profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Aggregator/Aggregator/bulkrepayment/bulk-repayment', title: 'Bulk Repayment', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n ]\r\n },\r\n )\r\n}\r\n \r\nif (sessionStorage.getItem('patientFinancing') == 'true'&& sessionStorage.getItem('organizationName') != 'AyuHealth') {\r\n agROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Patient/Dashboard/DashboardPracto', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Forms/form', title: 'Uninsured', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Reimbursement/Add_New_Patient', title: 'Reimbursement', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Aggregator/Patient/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n ]\r\n },\r\n )\r\n}\r\nif (sessionStorage.getItem('patientFinancing') == 'true' && sessionStorage.getItem('organizationName') == 'AyuHealth') {\r\n agROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Patient/Dashboard/DashboardPracto', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Forms/form', title: 'Uninsured', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Reimbursement/Add_New_Patient_Ayuhealth', title: 'Reimbursement', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Aggregator/Patient/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n ]\r\n },\r\n )\r\n}\r\n\r\nif (sessionStorage.getItem('tatkaal') == 'true') {\r\n agROUTES.push(\r\n {\r\n path: '', title: 'TATKAAL', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Payment/Worldline-Dashboard', title: 'Dashboard', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-Payment', title: 'Initiate Payment', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-List', title: 'Transactions', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n }\r\n ]\r\n },\r\n )\r\n}\r\n \r\n// if (sessionStorage.getItem('patientFinancing') == 'true') {\r\n// agROUTES.push(\r\n// {\r\n// path: '', title: 'Invoices', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n// submenu: [\r\n// {\r\n// path: '/Aggregator/Patient/Dashboard/DashboardPracto', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n// },\r\n// {\r\n// path: '/Aggregator/Patient/Forms/form', title: 'Uninsured', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n// },\r\n// {\r\n// path: '/Aggregator/Patient/Reimbursement/Add_New_Patient', title: 'Reimbursement', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n// },\r\n// {\r\n// path: '/Aggregator/Patient/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n// },\r\n\r\n// ]\r\n// },\r\n// )\r\n// }\r\n\r\nreturn agROUTES\r\n}\r\n","import { RouteInfo } from './sidebar.metadata';\r\nexport function getAlldata7() {\r\n\r\n const DtROUTES: RouteInfo[] = [\r\n ]\r\n if (sessionStorage.getItem('claimFinancing') == 'true') {\r\n DtROUTES.push(\r\n {\r\n path: '', title: 'Claim Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Hospital/Invoice/Dashboard/VendorDashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Hospital/Invoice/UploadInvoice/uploadInvoice', title: 'Upload Invoice', icon: 'fa fa-upload', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Hospital/Invoice/Invoice/invoice', title: 'Invoice', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Hospital/Invoice/EditProfile/editProfileHospital', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Hospital/Invoice/BulkRepayment/BulkRepayment', title: 'Bulk Repayment', icon: 'fa fa-address-card-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n\r\n ]\r\n },\r\n\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('purchaseFinancing') == 'true') {\r\n DtROUTES.push(\r\n\r\n\r\n {\r\n path: '', title: 'Purchase Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Distributor/Supplier/Dashboard/SD-dashboad-hospital', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Distributor/Supplier/Invoices/Invoices', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Distributor/Supplier/Editprofile/sdEditprofileHospital', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n // {\r\n // path: '/Hospital/Supplier/VendorLimit/Vendor_Limit_List', title: 'Vendor Limit', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n // },\r\n\r\n\r\n ]\r\n },\r\n\r\n )\r\n };\r\n\r\n if (sessionStorage.getItem('patientFinancing') == 'true' && sessionStorage.getItem('organizationName') != 'AyuHealth') {\r\n DtROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Patient/Dashboard/DashboardPracto', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Forms/form', title: 'Uninsured', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Reimbursement/Add_New_Patient', title: 'Reimbursement', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Aggregator/Patient/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n ]\r\n },\r\n )\r\n }\r\n if (sessionStorage.getItem('patientFinancing') == 'true' && sessionStorage.getItem('organizationName') == 'AyuHealth') {\r\n DtROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Patient/Dashboard/DashboardPracto', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Forms/form', title: 'Uninsured', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Reimbursement/Add_New_Patient_Ayuhealth', title: 'Reimbursement', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Aggregator/Patient/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n ]\r\n },\r\n )\r\n }\r\n\r\n return DtROUTES\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { RouteInfo } from './sidebar.metadata';\r\nexport function getAlldata1() {\r\n \r\nconst hsROUTES: RouteInfo[] = [\r\n]\r\nif (sessionStorage.getItem('claimFinancing') == 'true') {\r\n hsROUTES.push(\r\n {\r\n path: '', title: 'Claim Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Hospital/Invoice/Dashboard/VendorDashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Hospital/Invoice/UploadInvoice/uploadInvoice', title: 'Upload Invoice', icon: 'fa fa-upload', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Hospital/Invoice/Invoice/invoice', title: 'Invoice', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Hospital/Invoice/EditProfile/editProfileHospital', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Hospital/Invoice/BulkRepayment/BulkRepayment', title: 'Bulk Repayment', icon: 'fa fa-address-card-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n\r\n ]\r\n },\r\n\r\n )\r\n}\r\n\r\nif (sessionStorage.getItem('supplierFinancing') == 'true') {\r\n hsROUTES.push(\r\n\r\n\r\n {\r\n path: '', title: 'Supplier Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Hospital/Supplier/Dashboard/SD-dashboad-hospital', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Hospital/Supplier/Invoices/Invoices', title: 'Invoices', icon: 'fa fa-file-text', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Hospital/Supplier/Editprofile/sdEditprofileHospital', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Hospital/Supplier/VendorLimit/Vendor_Limit_List', title: 'Vendor Limit', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n ]\r\n },\r\n\r\n )\r\n};\r\n\r\nif (sessionStorage.getItem('patientFinancing') == 'true' && sessionStorage.getItem('organizationName') != 'AyuHealth') {\r\n hsROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Patient/Dashboard/DashboardPracto', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Forms/form', title: 'Uninsured', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Reimbursement/Add_New_Patient', title: 'Reimbursement', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Aggregator/Patient/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n ]\r\n },\r\n )\r\n}\r\nif (sessionStorage.getItem('patientFinancing') == 'true' && sessionStorage.getItem('organizationName') == 'AyuHealth') {\r\n hsROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Patient/Dashboard/DashboardPracto', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Forms/form', title: 'Uninsured', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Aggregator/Patient/Reimbursement/Add_New_Patient_Ayuhealth', title: 'Reimbursement', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n \r\n {\r\n path: '/Aggregator/Patient/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n ]\r\n },\r\n )\r\n}\r\n\r\nif (sessionStorage.getItem('tatkaal') == 'true') {\r\n hsROUTES.push(\r\n {\r\n path: '', title: 'TATKAAL', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Admin/Payment/Worldline-Dashboard', title: 'Dashboard', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-Payment', title: 'Initiate Payment', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Payment/Worldline-List', title: 'Transactions', icon: 'fa fa-user', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n }\r\n ]\r\n },\r\n )\r\n}\r\n\r\nreturn hsROUTES\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { RouteInfo } from './sidebar.metadata';\r\nexport function getAlldata2() {\r\n const lsROUTES: RouteInfo[] = [\r\n ]\r\n\r\n if (sessionStorage.getItem('claimFinancing') == 'true') {\r\n lsROUTES.push(\r\n\r\n {\r\n path: '', title: 'Claim Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n\r\n {\r\n path: '/Lender/Dahboard/dashBoard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n {\r\n path: '/Lender/Invoice/Invoice', title: 'Invoice', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n {\r\n path: '/Lender/Hospital/hospital', title: 'Hospital', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Lender/Edit_Profile', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n ]\r\n },\r\n\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('supplierFinancing') == 'true') {\r\n lsROUTES.push(\r\n {\r\n path: '', title: 'Supplier Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Lender/Supplier/Dahboard/Dashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Lender/Supplier/Invoices/Invoice', title: 'Invoices', icon: 'fa fa-file-text', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Lender/Supplier/Hospital/hospitalList', title: 'Hospital', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Lender/Supplier/Edit_Profile/editProfile', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n ]\r\n },\r\n\r\n )\r\n }\r\n if (sessionStorage.getItem('purchaseFinancing') == 'true') {\r\n lsROUTES.push(\r\n {\r\n path: '', title: 'Purchase Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Lender/Pharmacy/Dahboard/Dashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Lender/Pharmacy/Invoices/Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Lender/Pharmacy/Hospital/hospitalList', title: 'Hospital', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Lender/Pharmacy/Edit_Profile/editProfile', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n ]\r\n },\r\n\r\n )\r\n }\r\n\r\n if (sessionStorage.getItem('patientFinancing') == 'true') {\r\n lsROUTES.push(\r\n {\r\n path: '', title: 'Patient Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Aggregator/Patient/Dashboard/Lender-Dashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Aggregator/Patient/Invoices/Lender-Invoice', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n ]\r\n },\r\n )\r\n }\r\n\r\n return lsROUTES\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { RouteInfo } from './sidebar.metadata';\r\nexport function purchaseFinancing() {\r\n const PMROUTES: RouteInfo[] = []\r\n if (sessionStorage.getItem('purchaseFinancing') == 'true') {\r\n PMROUTES.push(\r\n {\r\n path: '', title: 'Purchase Financing', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Vendor/pharmacy/Dashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Vendor/pharmacy/upload-invoice', title: 'Upload Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Vendor/pharmacy/invoices', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n ]\r\n },\r\n )\r\n }\r\n\r\n return PMROUTES\r\n}","import { RouteInfo } from './sidebar.metadata';\r\nexport function getAlldata4() {\r\nconst spROUTES: RouteInfo[] = [\r\n\r\n\r\n {\r\n path: '', title: 'Supplier', icon: 'ft-aperture', class: 'has-sub', badge: '', badgeClass: '', isExternalLink: false,\r\n submenu: [\r\n {\r\n path: '/Vendor/Supplier/Dashboard/SD-dashboad-hospital', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Vendor/Supplier/UploadInvoice/uploadInvoice', title: 'Upload Invoice', icon: 'fa fa-upload', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Vendor/Supplier/Invoices/invoices', title: 'Invoices', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Vendor/Supplier/Associate_Hospital/Hospital_List', title: 'Limits', icon: 'ft-aperture', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Vendor/Supplier/Editprofile/sdEditprofileHospital', title: 'Edit Profile', icon: 'fa fa-pencil-square-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n ]\r\n },\r\n\r\n];\r\n\r\nreturn spROUTES\r\n}","import { RouteInfo } from '../vertical-menu.metadata';\r\nexport function getAlldata5() {\r\n//Sidebar menu Routes and data\r\nconst BUSPROUTES: RouteInfo[] = [\r\n {\r\n path: '/Admin/Invoice/Employee-Management/Dashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n {\r\n path: '/Admin/Invoice/Employee-Management/employeeList', title: 'Employee List', icon: 'fa fa-file-text', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n {\r\n path: '/Admin/Invoice/Employee-Management/employeeLoans', title: 'Employee Loans', icon: 'fa fa-file-text', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n\r\n\r\n];\r\n\r\nreturn BUSPROUTES\r\n}","import { RouteInfo } from '../vertical-menu.metadata';\r\nexport function getAlldata6() {\r\n//Sidebar menu Routes and data\r\n const PTROUTES: RouteInfo[] = [\r\n {\r\n path: '/Admin/PatientAdmin/DashboardPatient/dashboard', title: 'Dashboard', icon: 'fa fa-tachometer', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n]; \r\n\r\nif (sessionStorage.getItem('patientFinancing') == 'true') {\r\n PTROUTES.push(\r\n {\r\n path: '/Admin/PatientAdmin/InvoicesPatient/Invoices', title: 'Patient Invoice', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n )\r\n}\r\n\r\nif (sessionStorage.getItem('claimFinancing') == 'true') {\r\n PTROUTES.push(\r\n {\r\n path: '/Admin/PatientAdmin/InvoicesPatient/ClaimInvoices', title: 'Claim Invoice', icon: 'fa fa-hospital-o', class: '', badge: '', badgeClass: '', isExternalLink: false, submenu: []\r\n },\r\n )\r\n}\r\n \r\n \r\n\r\n\r\n\r\nreturn PTROUTES\r\n}","import {\r\n Component, OnInit, ViewChild, OnDestroy,\r\n ElementRef, AfterViewInit, ChangeDetectorRef, HostListener, ChangeDetectionStrategy\r\n} from \"@angular/core\";\r\nimport { PROUTES } from './patient/vertical-menu-routes.config';\r\n\r\nimport { MROUTES } from './merchant/vertical-menu-routes.config';\r\n\r\nimport { getAlldata } from './Invoice/DigiSparsh-sidebar-routes.config';\r\nimport { getAlldata1 } from './Invoice/hospital-sidebar-routes-config';\r\nimport { getAlldata7 } from './Invoice/distributor-sidebar-routes-config';\r\nimport { getAlldata2 } from './Invoice/lender-sidebar-routes.config';\r\nimport { getAlldata3 } from './Invoice/aggregator-sidebar-routes.config';\r\nimport { getAlldata4 } from './Invoice/supplier-sidebar-route';\r\nimport { getAlldata5 } from './patient/business-partner-routes.config';\r\nimport { getAlldata6 } from './patient/patient-sidebar-routes.config';\r\nimport { purchaseFinancing } from './Invoice/pharmacy-sidebar-routes.config';\r\n\r\n// import { hsROUTES } from './Invoice/hospital-sidebar-routes-config';\r\nimport { vsROUTES } from './Invoice/validator-sidebar-routes.config';\r\n// import { spROUTES } from './Invoice/supplier-sidebar-route';\r\nimport { HROUTES } from '../horizontal-menu/navigation-routes.config';\r\n\r\nimport { Router } from \"@angular/router\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { customAnimations } from \"../animations/custom-animations\";\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { ConfigService } from '../services/config.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { LayoutService } from '../services/layout.service';\r\n\r\n@Component({\r\n selector: \"app-sidebar\",\r\n templateUrl: \"./vertical-menu.component.html\",\r\n animations: customAnimations,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class VerticalMenuComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n @ViewChild('toggleIcon') toggleIcon: ElementRef;\r\n public menuItems: any[];\r\n // public menuItems1: any[];\r\n typeOfOrganization = sessionStorage.getItem('typeOfOrganization')\r\n claimFinancing = sessionStorage.getItem('claimFinancing')\r\n supplierFinancing = sessionStorage.getItem('supplierFinancing')\r\n patientFinancing = sessionStorage.getItem('patientFinancing')\r\n merchantFinancing = sessionStorage.getItem('merchantFinancing')\r\n employeeManagement = sessionStorage.getItem('employeeManagement')\r\n purchaseFinancing = sessionStorage.getItem('purchaseFinancing')\r\n distributor = sessionStorage.getItem('distributor')\r\n\r\n level: number = 0;\r\n logoUrl = 'assets/img/logo.png';\r\n public config: any = {};\r\n protected innerWidth: any;\r\n layoutSub: Subscription;\r\n configSub: Subscription;\r\n perfectScrollbarEnable = true;\r\n collapseSidebar = false;\r\n resizeTimeout;\r\n // menuItems1: void;\r\n\r\n constructor(\r\n private router: Router,\r\n public translate: TranslateService,\r\n private layoutService: LayoutService,\r\n private configService: ConfigService,\r\n private cdr: ChangeDetectorRef,\r\n\r\n private deviceService: DeviceDetectorService\r\n ) {\r\n this.config = this.configService.templateConf;\r\n this.innerWidth = window.innerWidth;\r\n this.isTouchDevice();\r\n }\r\n\r\n\r\n async ngOnInit() {\r\n\r\n console.log(this.typeOfOrganization)\r\n switch (this.typeOfOrganization) {\r\n case 'Digisparsh': { this.menuItems = await getAlldata(); break; }\r\n case 'Hospital': { this.menuItems = await getAlldata1(); break; }\r\n case 'Distributor': { this.menuItems = await getAlldata7(); break;}\r\n case 'Lender': { this.menuItems = await getAlldata2(); break; }\r\n case 'Aggregator': { this.menuItems = await getAlldata3(); break; }\r\n case 'Vendor': {this.menuItems = await getAlldata4(); break; }\r\n case 'Business Partner': { this.menuItems = await getAlldata5(); break; }\r\n case 'Processing Partner': { this.menuItems = await getAlldata6(); break; }\r\n // case 'Distributor': {if(this.purchaseFinancing&&this.purchaseFinancing=='true'){this.menuItems = await purchaseFinancing();}}\r\n case 'Pmanufacture': {if(this.purchaseFinancing&&this.purchaseFinancing=='true'){this.menuItems = await purchaseFinancing();}}\r\n\r\n\r\n // case 'Aggregator': { this.menuItems = agROUTES; break; }\r\n // case 'Hospital': { this.menuItems = hsROUTES; break; }\r\n // case 'Lender': { this.menuItems = lsROUTES; break; }\r\n // case 'Vendor': { this.menuItems = spROUTES; break; }\r\n // case 'Merchant': {this.menuItems = MROUTES; break;}\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.configSub = this.configService.templateConf$.subscribe((templateConf) => {\r\n if (templateConf) {\r\n this.config = templateConf;\r\n }\r\n this.loadLayout();\r\n this.cdr.markForCheck();\r\n\r\n });\r\n\r\n this.layoutSub = this.layoutService.overlaySidebarToggle$.subscribe(\r\n collapse => {\r\n if (this.config.layout.menuPosition === \"Side\") {\r\n this.collapseSidebar = collapse;\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event) {\r\n if (this.resizeTimeout) {\r\n clearTimeout(this.resizeTimeout);\r\n }\r\n this.resizeTimeout = setTimeout((() => {\r\n this.innerWidth = event.target.innerWidth;\r\n this.loadLayout();\r\n }).bind(this), 500);\r\n }\r\n\r\n loadLayout() {\r\n\r\n if (this.config.layout.menuPosition === \"Top\") { // Horizontal Menu\r\n if (this.innerWidth < 1200) { // Screen size < 1200\r\n this.menuItems = HROUTES;\r\n }\r\n }\r\n\r\n\r\n if (this.config.layout.sidebar.backgroundColor === 'white') {\r\n this.logoUrl = 'assets/img/logo-dark.png';\r\n }\r\n else {\r\n this.logoUrl = 'assets/img/logo.png';\r\n }\r\n\r\n if (this.config.layout.sidebar.collapsed) {\r\n this.collapseSidebar = true;\r\n }\r\n else {\r\n this.collapseSidebar = false;\r\n }\r\n }\r\n\r\n toggleSidebar() {\r\n let conf = this.config;\r\n conf.layout.sidebar.collapsed = !this.config.layout.sidebar.collapsed;\r\n this.configService.applyTemplateConfigChange({ layout: conf.layout });\r\n\r\n setTimeout(() => {\r\n this.fireRefreshEventOnWindow();\r\n }, 300);\r\n }\r\n\r\n fireRefreshEventOnWindow = function () {\r\n const evt = document.createEvent(\"HTMLEvents\");\r\n evt.initEvent(\"resize\", true, false);\r\n window.dispatchEvent(evt);\r\n };\r\n\r\n CloseSidebar() {\r\n this.layoutService.toggleSidebarSmallScreen(false);\r\n }\r\n\r\n isTouchDevice() {\r\n\r\n const isMobile = this.deviceService.isMobile();\r\n const isTablet = this.deviceService.isTablet();\r\n\r\n if (isMobile || isTablet) {\r\n this.perfectScrollbarEnable = false;\r\n }\r\n else {\r\n this.perfectScrollbarEnable = true;\r\n }\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.layoutSub) {\r\n this.layoutSub.unsubscribe();\r\n }\r\n if (this.configSub) {\r\n this.configSub.unsubscribe();\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","// import {ActivatedRouteSnapshot, Params} from 'angular/router';\r\n\r\n// export interface RouterStateUrl {\r\n// url: string;\r\n// params: Params;\r\n// queryParams: Params;\r\n// }\r\n \r\n// @Injectable()\r\n// export class CustomSerializer implements RouterStateSerializer {\r\n// serialize(routerState: RouterStateSnapshot): RouterStateUrl {\r\n// let route = routerState.root;\r\n \r\n// while (route.firstChild) {\r\n// route = route.firstChild;\r\n// }\r\n \r\n// const {\r\n// url,\r\n// root: { queryParams }\r\n// } = routerState;\r\n// const { params } = route;\r\n \r\n// // Only return an object including the URL, params and query params\r\n// // instead of the entire snapshot\r\n// return { url, params, queryParams };\r\n// }\r\n// }\r\nimport { Component } from '@angular/core';\r\nimport { LocationStrategy, PlatformLocation } from '@angular/common';\r\nimport { Router, UrlSerializer } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'hello',\r\n template: `\r\n `,\r\n})\r\nexport class HelloComponent {\r\n constructor(private router: Router, private serializer: UrlSerializer) {\r\n const queryParams = { foo: 'a', bar: 42 };\r\n const tree = router.createUrlTree([], { queryParams });\r\n\r\n console.log(serializer.serialize(tree));\r\n }\r\n}","import { Component, ElementRef, OnInit, Renderer2 } from \"@angular/core\";\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from \"@angular/forms\";\r\nimport { WorldlineService } from \"./../../shared/services/worldline/worldline.service\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { environment } from \"environments/environment\";\r\n\r\ndeclare var $: any; // Declare $ as a global variable\r\ndeclare const pnCheckoutShared: any;\r\n\r\n@Component({\r\n selector: \"app-worldline-customer-pay\",\r\n templateUrl: \"./worldline-customer-pay.component.html\",\r\n styleUrls: [\"./worldline-customer-pay.component.scss\"],\r\n})\r\nexport class WorldlineCustomerPayComponent implements OnInit {\r\n AuthUrl = environment.AuthURL;\r\n worldLineForm: FormGroup;\r\n worldlineToken: any;\r\n worldlinetxnId: any;\r\n checked: any = false;\r\n consumerID: any;\r\n paymentMode: any;\r\n note: boolean = false;\r\n isInsured: boolean = false;\r\n isUninsured: boolean = false;\r\n consumerData: any;\r\n readonly: boolean;\r\n id: any;\r\n organizationName: string;\r\n tatkaalMerchantId: string;\r\n tatkaalSaltKey: string;\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private formBuilder: FormBuilder,\r\n private service: WorldlineService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) {\r\n this.organizationName = sessionStorage.getItem(\"organizationName\");\r\n }\r\n\r\n ngOnInit(): void {\r\n debugger;\r\n this.route.queryParams.subscribe((parsam) => {\r\n this.id = JSON.parse(atob(parsam.data));\r\n // this.consumerData = null\r\n // console.log(\"This.Consumer Data :- \",this.consumerData);\r\n // this.checked = this.consumerData.checked;\r\n // if (this.consumerData.isUninsured) {\r\n // this.isInsured = false;\r\n // this.isUninsured = true;\r\n // } else if (this.consumerData.isInsured) {\r\n // this.isInsured = true;\r\n // this.isUninsured = false;\r\n // }\r\n });\r\n this.getWorldLineFormDatabyId();\r\n this.worldLineForm = this.formBuilder.group({\r\n name: [\"\",Validators.compose([\r\n Validators.required,\r\n Validators.pattern(/^[a-zA-Z ]*$/),\r\n ]),],\r\n consumerEmailId: [\r\n \"\",\r\n Validators.compose([\r\n Validators.required,\r\n Validators.pattern(/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,3}/),\r\n ]),\r\n ],\r\n consumerMobileNo: [\r\n \"\",\r\n Validators.compose([\r\n Validators.required,\r\n Validators.pattern(\"[0-9]{10}\"),\r\n ]),\r\n ],\r\n totalamount: [\r\n \"\",\r\n Validators.compose([\r\n Validators.required,\r\n Validators.pattern(/^[0-9]\\d*$/),\r\n ]),\r\n ],\r\n patientName: [\"\", Validators.compose([\r\n Validators.required,\r\n Validators.pattern(/^[a-zA-Z ]*$/),\r\n ]),],\r\n paymentMode: [\"\", Validators.required],\r\n caseType: [\"\"],\r\n });\r\n\r\n this.loadScript(\r\n \"https://www.paynimo.com/paynimocheckout/server/lib/checkout.js\",\r\n () => {\r\n // Script loaded callback\r\n // this.initPaynimoCheckout();\r\n }\r\n );\r\n }\r\n\r\n getWorldLineFormDatabyId() {\r\n debugger;\r\n this.service.getWorldLineFormDatabyId(this.id).subscribe(\r\n async (res: any) => {\r\n if (res.status) {\r\n this.consumerData = res.formdata;\r\n this.patchWorldlineFormData();\r\n if (\r\n this.consumerData.organizationName == \"Ayu Health\" ||\r\n this.consumerData.organizationName == \"AyuHealth\"\r\n ) {\r\n (this.tatkaalMerchantId = \"L998205\"),\r\n (this.tatkaalSaltKey = \"2517652273AASRLF\");\r\n } else {\r\n (this.tatkaalMerchantId = \"L1001266\"),\r\n (this.tatkaalSaltKey = \"5309099237TKPHHX\");\r\n }\r\n }\r\n },\r\n (err: HttpErrorResponse) => {\r\n this.service.ErrorSuccess(err.message);\r\n }\r\n );\r\n }\r\n\r\n patchWorldlineFormData() {\r\n if (this.consumerData.caseType == \"Uninsured\") {\r\n this.isInsured = false;\r\n this.isUninsured = true;\r\n } else if (this.consumerData.caseType == \"Insured\") {\r\n this.isInsured = true;\r\n this.isUninsured = false;\r\n }\r\n this.worldLineForm.patchValue({\r\n name: this.consumerData.name,\r\n consumerEmailId: this.consumerData.consumerEmailId,\r\n consumerMobileNo: this.consumerData.consumerMobileNo,\r\n totalamount: this.consumerData.totalamount,\r\n patientName: this.consumerData.patientName\r\n ? this.consumerData.patientName\r\n : this.consumerData.name,\r\n paymentMode: this.consumerData.paymentMode,\r\n caseType: this.consumerData.caseType,\r\n });\r\n }\r\n\r\n get mobRequired() {\r\n return this.worldLineForm.controls;\r\n }\r\n // get blockAmount() {\r\n // return this.worldLineForm.controls;\r\n // }\r\n\r\n cardCheck(value) {\r\n if (value == \"cards\") {\r\n this.note = true;\r\n } else {\r\n this.note = false;\r\n }\r\n }\r\n\r\n checkInsured(value) {\r\n this.isInsured = value;\r\n this.isUninsured = false;\r\n this.worldLineForm.patchValue({\r\n caseType: \"Insured\",\r\n });\r\n }\r\n\r\n checkUninsured(value) {\r\n this.isUninsured = value;\r\n this.isInsured = false;\r\n this.worldLineForm.patchValue({\r\n caseType: \"UnInsured\",\r\n });\r\n }\r\n\r\n checkrelation1(value) {\r\n this.checked = value;\r\n if (this.checked) {\r\n this.worldLineForm.controls.name.setValidators([]);\r\n this.worldLineForm.controls.name.updateValueAndValidity();\r\n } else {\r\n this.worldLineForm.controls.name.setValidators([Validators.required]);\r\n this.worldLineForm.controls.name.updateValueAndValidity();\r\n }\r\n }\r\n\r\n loadScript(src: string, callback: () => void): void {\r\n const script = this.renderer.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n script.src = src;\r\n script.onload = callback;\r\n this.renderer.appendChild(this.el.nativeElement, script);\r\n }\r\n\r\n // initPaynimoCheckout(): void {\r\n // const handleResponse = (res: any) => {\r\n // // Your handleResponse logic here\r\n // };\r\n\r\n // const btnSubmit = this.el.nativeElement.querySelector('#btnSubmit');\r\n // btnSubmit.addEventListener('click', (e: Event) => {\r\n // e.preventDefault();\r\n\r\n // var reqJson = {\r\n // \"features\": {\r\n // \"enableAbortResponse\": true,\r\n // \"enableExpressPay\": true,\r\n // \"enableInstrumentDeRegistration\" : true,\r\n // \"enableMerTxnDetails\": true,\r\n // \"enableNewWindowFlow\": true //for hybrid applications please disable this by passing false\r\n // },\r\n // \"consumerData\": {\r\n // \"deviceId\": \"WEBSH1\", //possible values \"WEBSH1\" or \"WEBSH2\"\r\n // \"token\": \"594d88c4b38d375c6daa80755ec6f43fa2f2917c491611d29621de7fe8ad8e78\",\r\n // \"returnUrl\": \"http://localhost:3061/api/worldLine/callBackApiWorldLine\", //merchant response page URL\r\n // \"responseHandler\": handleResponse,\r\n // \"paymentMode\": \"all\",\r\n // \"merchantLogoUrl\": \"http://localhost:4200/assets/images/Login/logo.png\", //provided merchant logo will be displayed\r\n // \"merchantId\": \"L993998\",\r\n // \"currency\": \"INR\",\r\n // \"consumerId\": \"12345\",\r\n // \"consumerMobileNo\": \"7222938282\",\r\n // \"consumerEmailId\": \"rubenlezarus19@gmail.com\",\r\n // \"txnId\": \"1701768351991\", //Unique merchant transaction ID\r\n // \"items\": [{\r\n // \"itemId\": \"FIRST\",\r\n // \"amount\": \"1\",\r\n // \"comAmt\": \"0\"\r\n // }],\r\n // \"customStyle\": {\r\n // \"PRIMARY_COLOR_CODE\": \"#45beaa\", //merchant primary color code\r\n // \"SECONDARY_COLOR_CODE\": \"#FFFFFF\", //provide merchant's suitable color code\r\n // \"BUTTON_COLOR_CODE_1\": \"#2d8c8c\", //merchant's button background color code\r\n // \"BUTTON_COLOR_CODE_2\": \"#FFFFFF\" //provide merchant's suitable color code for button text\r\n // }\r\n // }\r\n // };\r\n // $.pnCheckout(reqJson);\r\n // debugger\r\n // if (reqJson.features.enableNewWindowFlow) {\r\n // pnCheckoutShared.openNewWindow();\r\n // }\r\n // });\r\n // }\r\n\r\n onSubmit() {\r\n console.log(\"this.worldLineForm.value\", this.worldLineForm.value);\r\n if (this.checked) {\r\n this.worldLineForm.patchValue({\r\n name: this.worldLineForm.value.patientName,\r\n });\r\n }\r\n // return\r\n this.service.worldLineHash(this.worldLineForm.value).subscribe(\r\n (res) => {\r\n if (res[\"success\"]) {\r\n debugger;\r\n // this.service.showToaster(\"User Found Successfully\");\r\n this.worldlineToken = res[\"encryptedResponse\"];\r\n this.worldlinetxnId = res[\"txnId\"];\r\n this.consumerID = res[\"consumerId\"];\r\n this.paymentMode = res[\"transactionType\"];\r\n console.log(\"this.worldlineToken\", this.worldlineToken);\r\n this.proceedtopay();\r\n } else {\r\n this.service.ErrorSuccess(res[\"message\"]);\r\n }\r\n },\r\n (err) => {\r\n this.service.ErrorSuccess(err.error[\"errorMessage\"]);\r\n return;\r\n }\r\n );\r\n }\r\n\r\n proceedtopay() {\r\n debugger;\r\n const handleResponse = (res: any) => {\r\n console.log(res);\r\n debugger;\r\n if (res?.paymentMethod?.paymentTransaction?.statusCode === \"0300\") {\r\n // success block\r\n debugger;\r\n this.router.navigate([\"/Admin/Payment/Worldline-List\"]);\r\n } else if (\r\n res?.paymentMethod?.paymentTransaction?.statusCode === \"0398\"\r\n ) {\r\n // initiated block\r\n } else {\r\n // error block\r\n }\r\n };\r\n\r\n var reqJson = {\r\n features: {\r\n enableAbortResponse: true,\r\n enableExpressPay: true,\r\n enableInstrumentDeRegistration: true,\r\n enableMerTxnDetails: true,\r\n enableNewWindowFlow: true, //for hybrid applications please disable this by passing false\r\n },\r\n consumerData: {\r\n deviceId: \"WEBSH1\", //possible values \"WEBSH1\" or \"WEBSH2\"\r\n token: this.consumerData.encryptedResponse,\r\n returnUrl: `${this.AuthUrl}/api/worldLine/callBackApiWorldLineforUsers`, //UAT merchant response page URL\r\n // \"returnUrl\": \"http://localhost:3061/api/worldLine/callBackApiWorldLineforUsers\", //PROD merchant response page URL\r\n responseHandler: handleResponse,\r\n paymentMode: \"cards\",\r\n merchantLogoUrl:\r\n \"https://portal.digisparsh.in/assets/images/Login/logo.png\", //PROD provided merchant logo will be displayed\r\n merchantId: this.tatkaalMerchantId,\r\n // \"merchantId\": \"T970265\",\r\n currency: \"INR\",\r\n consumerId: undefined,\r\n consumerMobileNo: this.consumerData.consumerMobileNo,\r\n consumerEmailId: this.consumerData.consumerEmailId,\r\n txnId: this.consumerData.worldlinetxnId,\r\n // \"PGtxnId\": '199175690' , //this.worldlinetxnId,\r\n txnType: \"AUTH\", //\"CAPTURE\" , // Unique merchant transaction ID\r\n items: [\r\n {\r\n itemId: \"FIRST\",\r\n amount: this.consumerData.totalamount,\r\n comAmt: \"0\",\r\n },\r\n ],\r\n customStyle: {\r\n PRIMARY_COLOR_CODE: \"#45beaa\", //merchant primary color code\r\n SECONDARY_COLOR_CODE: \"#FFFFFF\", //provide merchant's suitable color code\r\n BUTTON_COLOR_CODE_1: \"#2d8c8c\", //merchant's button background color code\r\n BUTTON_COLOR_CODE_2: \"#FFFFFF\", //provide merchant's suitable color code for button text\r\n },\r\n },\r\n };\r\n\r\n $.pnCheckout(reqJson);\r\n console.log(\"pnCheckout\", reqJson);\r\n debugger;\r\n if (reqJson.features.enableNewWindowFlow) {\r\n debugger;\r\n pnCheckoutShared.openNewWindow();\r\n debugger;\r\n }\r\n\r\n if (handleResponse) {\r\n console.log(\"Working PAYMENT Method\");\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n \"\"\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n Patient Name is required\r\n Patient Name is not Valid\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Payer Name is required\r\n Payer Name is not Valid\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Email ID is required\r\n Email ID is not Valid\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Mobile Number is\r\n required\r\n Mobile number should be of 10 digits\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Block Amount Value is\r\n required\r\n Block Amount should be digits only\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
Only VISA and Master Card Allow
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n Guardian Name is required\r\n Guardian Name is not Valid\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Payer Name is required\r\n Payer Name is not Valid\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Email ID is required\r\n Email ID is not Valid\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Mobile Number is\r\n required\r\n Mobile number should be of 10 digits\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Block Amount Value is\r\n required\r\n Block Amount should be digits only\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
Only VISA and Master Card Allow
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n\r\n //dev\r\n // AuthURL:\"https://devauth.digisparsh.in\",\r\n // UserURL:\"https://devuser.digisparsh.in\",\r\n // AdminURL:\"https://devadmin.digisparsh.in\",\r\n // case_rep:93,\r\n // isEncrypted:false,\r\n\r\n //uat\r\n // AuthURL: \"https://uatauth.digisparsh.in\",\r\n // UserURL: \"https://uatuser.digisparsh.in\",\r\n // AdminURL: \"https://uatadmin.digisparsh.in\",\r\n // case_rep: 93,\r\n // isEncrypted: true,\r\n\r\n // // live\r\n AuthURL: \"https://auth.digisparsh.in\",\r\n UserURL: \"https://user.digisparsh.in\",\r\n AdminURL: \"https://admin.digisparsh.in\",\r\n case_rep: 221,\r\n isEncrypted: true,\r\n\r\n // local\r\n // AuthURL: \"http://localhost:3061\",\r\n // UserURL: \"http://localhost:3063\",\r\n // AdminURL: \"http://localhost:3062\",\r\n // case_rep: 93,\r\n // isEncrypted: false,\r\n\r\n // AuthURL:\"https://ff59-103-15-67-130.ngrok-free.app\",\r\n // UserURL:\"https://b647-103-15-67-130.ngrok-free.app\",\r\n // AdminURL:\"https://cec8-103-15-67-130.ngrok-free.app\",\r\n // case_rep: 93,\r\n // isEncrypted: false,\r\n\r\n // AuthURL: \"https://36d5-103-15-67-130.ngrok-free.app\",\r\n // AdminURL: \"https://5236-103-15-67-130.ngrok-free.app\",\r\n // UserURL: \"https://94c4-103-15-67-130.ngrok-free.app\",\r\n\r\n // case_rep:93,\r\n // isEncrypted:false,\r\n // AuthURL:\"https://32ndzm8q-3061.inc1.devtunnels.ms\",\r\n // AdminURL:\"https://32ndzm8q-3062.inc1.devtunnels.ms\",\r\n // UserURL:\"https://32ndzm8q-3063.inc1.devtunnels.ms\",\r\n\r\n // ngrok\r\n\r\n // AuthURL:\"https://36d5-103-15-67-130.ngrok-free.app\",\r\n // AdminURL:\"https://5236-103-15-67-130.ngrok-free.app\",\r\n // UserURL:\"https://94c4-103-15-67-130.ngrok-free.app\",\r\n\r\n // case_rep:93,\r\n // isEncrypted:false,\r\n // AdminURL:\"https://e330-103-15-67-125.ngrok.io\",\r\n\r\n // AuthURL: \"https://5a1b-103-15-67-125.ngrok.io\",\r\n // UserURL: \"https://f51a-103-15-67-125.ngrok.io\",\r\n // AdminURL: \"https://b58e-103-15-67-125.ngrok.io\",\r\n\r\n // Azure\r\n // UserURL:\"http://10.5.0.229:3063\",\r\n // AdminURL:\"http://10.5.0.227:3062\",\r\n // AuthURL:\"http://10.5.0.228:3065\",\r\n\r\n URLP: \"https://20.204.86.75:8000\",\r\n accountName: \"uatresource\",\r\n containerName: \"uatcontainer\",\r\n key: \"uaEjdcwzjVO7U7qv/JFnOnsEXUxQHQ46zI4x+onZBXL9UPCLEfEk+xd0sMB0ZWmZGuRLXdxjDzBIUba3A5CUrw==\",\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n","import { __decorate, __param } from 'tslib';\nimport { ɵɵdefineInjectable, Injectable, TemplateRef, Directive, Input, ContentChildren, EventEmitter, Output, Component, ViewEncapsulation, Optional, Host, NgModule, Renderer2, ElementRef, ChangeDetectionStrategy, forwardRef, ChangeDetectorRef, Inject, PLATFORM_ID, NgZone, HostListener, ɵɵinject, LOCALE_ID, ViewChild, ContentChild, ViewContainerRef, ComponentFactoryResolver, Injector, ApplicationRef, RendererFactory2, INJECTOR, Attribute, InjectionToken } from '@angular/core';\nimport { CommonModule, isPlatformBrowser, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, formatDate, DOCUMENT, getLocaleDayPeriods } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport { Subject, BehaviorSubject, combineLatest, timer, NEVER, fromEvent, merge, race, Observable } from 'rxjs';\nimport { map, startWith, distinctUntilChanged, switchMap, takeUntil, filter, take, tap, withLatestFrom, delay, share } from 'rxjs/operators';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/forms';\n\nfunction NgbAccordion_ng_template_0_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_0_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r3 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngbPanelToggle\", panel_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", panel_r3.title, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r3.titleTpl == null ? null : panel_r3.titleTpl.templateRef);\n} }\nfunction NgbAccordion_ng_template_2_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8)(1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_div_3_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const panel_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵclassProp(\"show\", panel_r5.isOpen);\n ɵngcc0.ɵɵpropertyInterpolate(\"id\", panel_r5.id);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", panel_r5.id + \"-header\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r5.contentTpl == null ? null : panel_r5.contentTpl.templateRef);\n} }\nconst _c0 = function (a0, a1) { return { $implicit: a0, opened: a1 }; };\nfunction NgbAccordion_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\")(1, \"div\", 5);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbAccordion_ng_template_2_div_3_Template, 3, 5, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassMap(\"card \" + (panel_r5.cardClass || \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMap(\"card-header \" + (panel_r5.type ? \"bg-\" + panel_r5.type : ctx_r2.type ? \"bg-\" + ctx_r2.type : \"\"));\n ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", panel_r5.id, \"-header\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.headerTpl == null ? null : panel_r5.headerTpl.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(8, _c0, panel_r5, panel_r5.isOpen));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.destroyOnHide || panel_r5.isOpen);\n} }\nfunction NgbAlert_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbAlert_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.closeHandler(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 2);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nconst _c3 = [\"*\"];\nfunction NgbCarousel_ol_0_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_ol_0_li_1_Template_li_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const slide_r5 = restoredCtx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(2); return ctx_r6.select(slide_r5.id, ctx_r6.NgbSlideEventSource.INDICATOR); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r5 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"active\", slide_r5.id === ctx_r4.activeId);\n ɵngcc0.ɵɵproperty(\"id\", slide_r5.id);\n} }\nfunction NgbCarousel_ol_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ol\", 5);\n ɵngcc0.ɵɵtemplate(1, NgbCarousel_ol_0_li_1_Template, 1, 3, \"li\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.slides);\n} }\nfunction NgbCarousel_div_2_ng_template_1_Template(rf, ctx) { }\nfunction NgbCarousel_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbCarousel_div_2_ng_template_1_Template, 0, 0, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r8 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", slide_r8.id === ctx_r1.activeId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", slide_r8.tplRef);\n} }\nfunction NgbCarousel_a_3_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_3_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.prev(ctx_r10.NgbSlideEventSource.ARROW_LEFT); });\n ɵngcc0.ɵɵelement(1, \"span\", 11);\n ɵngcc0.ɵɵelementStart(2, \"span\", 12);\n ɵngcc0.ɵɵi18n(3, 13);\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction NgbCarousel_a_4_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_4_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.next(ctx_r12.NgbSlideEventSource.ARROW_RIGHT); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 12);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd()();\n} }\nconst _c8 = [\"defaultDayTemplate\"];\nconst _c9 = [\"content\"];\nfunction NgbDatepicker_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const date_r8 = ctx.date;\n const currentMonth_r9 = ctx.currentMonth;\n const selected_r10 = ctx.selected;\n const disabled_r11 = ctx.disabled;\n const focused_r12 = ctx.focused;\n ɵngcc0.ɵɵproperty(\"date\", date_r8)(\"currentMonth\", currentMonth_r9)(\"selected\", selected_r10)(\"disabled\", disabled_r11)(\"focused\", focused_r12);\n} }\nfunction NgbDatepicker_ng_template_2_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r16.i18n.getMonthFullName(month_r14.number, month_r14.year), \" \", ctx_r16.i18n.getYearNumerals(month_r14.year), \" \");\n} }\nfunction NgbDatepicker_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵtemplate(1, NgbDatepicker_ng_template_2_div_0_div_1_Template, 2, 2, \"div\", 10);\n ɵngcc0.ɵɵelement(2, \"ngb-datepicker-month\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ctx.$implicit;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.navigation === \"none\" || ctx_r13.displayMonths > 1 && ctx_r13.navigation === \"select\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"month\", month_r14.firstDate);\n} }\nfunction NgbDatepicker_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_2_div_0_Template, 3, 2, \"div\", 8);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.model.months);\n} }\nfunction NgbDatepicker_ngb_datepicker_navigation_5_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation\", 13);\n ɵngcc0.ɵɵlistener(\"navigate\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_navigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.onNavigateEvent($event); })(\"select\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onNavigateDateSelect($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r4.model.firstDate)(\"months\", ctx_r4.model.months)(\"disabled\", ctx_r4.model.disabled)(\"showSelect\", ctx_r4.model.navigation === \"select\")(\"prevDisabled\", ctx_r4.model.prevDisabled)(\"nextDisabled\", ctx_r4.model.nextDisabled)(\"selectBoxes\", ctx_r4.model.selectBoxes);\n} }\nfunction NgbDatepicker_ng_template_8_Template(rf, ctx) { }\nfunction NgbDatepicker_ng_template_9_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 5);\n} }\nfunction NgbDatepickerMonth_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const w_r4 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.i18n.getWeekdayShortName(w_r4), \" \");\n} }\nfunction NgbDatepickerMonth_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_div_0_div_1_Template, 1, 0, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_div_0_div_2_Template, 2, 1, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.viewModel.weekdays);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r7.i18n.getWeekNumerals(week_r5.number));\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const day_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.datepicker.dayTemplate)(\"ngTemplateOutletContext\", day_r10.context);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerMonth_ng_template_1_div_0_div_2_Template_div_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r15); const day_r10 = restoredCtx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(3); ctx_r14.doSelect(day_r10); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template, 1, 2, \"ng-template\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r10 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"disabled\", day_r10.context.disabled)(\"hidden\", day_r10.hidden)(\"ngb-dp-today\", day_r10.context.today);\n ɵngcc0.ɵɵproperty(\"tabindex\", day_r10.tabindex);\n ɵngcc0.ɵɵattribute(\"aria-label\", day_r10.ariaLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !day_r10.hidden);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_1_Template, 2, 1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_ng_template_1_div_0_div_2_Template, 2, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", week_r5.days);\n} }\nfunction NgbDatepickerMonth_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_Template, 3, 2, \"div\", 7);\n} if (rf & 2) {\n const week_r5 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", !week_r5.collapsed);\n} }\nfunction NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation-select\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.select.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r0.date)(\"disabled\", ctx_r0.disabled)(\"months\", ctx_r0.selectBoxes.months)(\"years\", ctx_r0.selectBoxes.years);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_div_0_Template, 1, 0, \"div\", 9);\n ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_4_ng_template_0_div_3_Template, 1, 0, \"div\", 9);\n} if (rf & 2) {\n const month_r5 = ctx.$implicit;\n const i_r6 = ctx.index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r4.i18n.getMonthFullName(month_r5.number, month_r5.year), \" \", ctx_r4.i18n.getYearNumerals(month_r5.year), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 !== ctx_r4.months.length - 1);\n} }\nfunction NgbDatepickerNavigation_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_Template, 4, 4, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.months);\n} }\nconst _c18 = [\"ngbDatepickerDayView\", \"\"];\nconst _c19 = [\"month\"];\nconst _c20 = [\"year\"];\nfunction NgbDatepickerNavigationSelect_option_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const m_r4 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", m_r4);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.i18n.getMonthFullName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.i18n.getMonthShortName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n} }\nfunction NgbDatepickerNavigationSelect_option_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const y_r5 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", y_r5);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.i18n.getYearNumerals(y_r5));\n} }\nconst _c29 = [\"dialog\"];\nconst _c30 = [\"ngbNavOutlet\", \"\"];\nfunction NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template(rf, ctx) { }\nconst _c31 = function (a0) { return { $implicit: a0 }; };\nfunction NgbNavOutlet_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", item_r1.active);\n ɵngcc0.ɵɵproperty(\"id\", item_r1.panelDomId);\n ɵngcc0.ɵɵattribute(\"role\", ctx_r2.paneRole ? ctx_r2.paneRole : ctx_r2.nav.roles ? \"tabpanel\" : undefined)(\"aria-labelledby\", item_r1.domId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", item_r1.contentTpl == null ? null : item_r1.contentTpl.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(7, _c31, item_r1.active));\n} }\nfunction NgbNavOutlet_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_div_0_Template, 2, 9, \"div\", 1);\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", item_r1.isPanelInDom());\n} }\nfunction NgbPagination_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 9);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 11);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 12);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0, \"...\");\n} }\nfunction NgbPagination_ng_template_10_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 14);\n ɵngcc0.ɵɵtext(1, \"(current)\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_10_span_1_Template, 2, 0, \"span\", 13);\n} if (rf & 2) {\n const page_r17 = ctx.$implicit;\n const currentPage_r18 = ctx.currentPage;\n ɵngcc0.ɵɵtextInterpolate1(\" \", page_r17, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", page_r17 === currentPage_r18);\n} }\nfunction NgbPagination_li_13_ng_template_2_Template(rf, ctx) { }\nconst _c42 = function (a0, a1) { return { disabled: a0, currentPage: a1 }; };\nfunction NgbPagination_li_13_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 16);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_13_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); ctx_r21.selectPage(1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_13_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r12.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r12.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r12.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r12.tplFirst == null ? null : ctx_r12.tplFirst.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c42, ctx_r12.previousDisabled(), ctx_r12.page));\n} }\nfunction NgbPagination_li_14_ng_template_2_Template(rf, ctx) { }\nconst _c45 = function (a0) { return { disabled: a0 }; };\nfunction NgbPagination_li_14_Template(rf, ctx) { if (rf & 1) {\n const _r25 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 18);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_14_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r25); const ctx_r24 = ɵngcc0.ɵɵnextContext(); ctx_r24.selectPage(ctx_r24.page - 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_14_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext();\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r13.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r13.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r13.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r13.tplPrevious == null ? null : ctx_r13.tplPrevious.templateRef) || _r2)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(6, _c45, ctx_r13.previousDisabled()));\n} }\nfunction NgbPagination_li_15_a_1_ng_template_1_Template(rf, ctx) { }\nconst _c46 = function (a1) { return { disabled: true, currentPage: a1 }; };\nfunction NgbPagination_li_15_a_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 21);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_li_15_a_1_ng_template_1_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r27 = ɵngcc0.ɵɵnextContext(2);\n const _r8 = ɵngcc0.ɵɵreference(9);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r27.tplEllipsis == null ? null : ctx_r27.tplEllipsis.templateRef) || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c46, ctx_r27.page));\n} }\nfunction NgbPagination_li_15_a_2_ng_template_1_Template(rf, ctx) { }\nconst _c47 = function (a0, a1, a2) { return { disabled: a0, $implicit: a1, currentPage: a2 }; };\nfunction NgbPagination_li_15_a_2_Template(rf, ctx) { if (rf & 1) {\n const _r33 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 22);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_15_a_2_Template_a_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r33); const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r31 = ɵngcc0.ɵɵnextContext(); ctx_r31.selectPage(pageNumber_r26); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbPagination_li_15_a_2_ng_template_1_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r28 = ɵngcc0.ɵɵnextContext();\n const _r10 = ɵngcc0.ɵɵreference(11);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r28.disabled ? \"-1\" : null)(\"aria-disabled\", ctx_r28.disabled ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r28.tplNumber == null ? null : ctx_r28.tplNumber.templateRef) || _r10)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c47, ctx_r28.disabled, pageNumber_r26, ctx_r28.page));\n} }\nfunction NgbPagination_li_15_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 15);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_li_15_a_1_Template, 2, 4, \"a\", 19);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_15_a_2_Template, 2, 8, \"a\", 20);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ctx.$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", pageNumber_r26 === ctx_r14.page)(\"disabled\", ctx_r14.isEllipsis(pageNumber_r26) || ctx_r14.disabled);\n ɵngcc0.ɵɵattribute(\"aria-current\", pageNumber_r26 === ctx_r14.page ? \"page\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.isEllipsis(pageNumber_r26));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r14.isEllipsis(pageNumber_r26));\n} }\nfunction NgbPagination_li_16_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_16_Template(rf, ctx) { if (rf & 1) {\n const _r37 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 23);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_16_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r37); const ctx_r36 = ɵngcc0.ɵɵnextContext(); ctx_r36.selectPage(ctx_r36.page + 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_16_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n const _r4 = ɵngcc0.ɵɵreference(5);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r15.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r15.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r15.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r15.tplNext == null ? null : ctx_r15.tplNext.templateRef) || _r4)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c42, ctx_r15.nextDisabled(), ctx_r15.page));\n} }\nfunction NgbPagination_li_17_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_17_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_17_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(); ctx_r39.selectPage(ctx_r39.pageCount); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_17_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n const _r6 = ɵngcc0.ɵɵreference(7);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r16.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r16.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r16.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r16.tplLast == null ? null : ctx_r16.tplLast.templateRef) || _r6)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c42, ctx_r16.nextDisabled(), ctx_r16.page));\n} }\nfunction NgbPopoverWindow_h3_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.title);\n} }\nfunction NgbPopoverWindow_h3_1_ng_template_3_Template(rf, ctx) { }\nfunction NgbPopoverWindow_h3_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"h3\", 3);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_ng_template_1_Template, 1, 1, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgbPopoverWindow_h3_1_ng_template_3_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r1 = ɵngcc0.ɵɵreference(2);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.isTitleTemplate() ? ctx_r0.title : _r1)(\"ngTemplateOutletContext\", ctx_r0.context);\n} }\nfunction NgbProgressbar_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵi18n(1, 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵi18nExp(ctx_r0.getPercentValue());\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbRating_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const fill_r3 = ctx.fill;\n ɵngcc0.ɵɵtextInterpolate(fill_r3 === 100 ? \"\\u2605\" : \"\\u2606\");\n} }\nfunction NgbRating_ng_template_2_ng_template_3_Template(rf, ctx) { }\nfunction NgbRating_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbRating_ng_template_2_Template_span_mouseenter_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.enter(index_r4 + 1); })(\"click\", function NgbRating_ng_template_2_Template_span_click_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleClick(index_r4 + 1); });\n ɵngcc0.ɵɵtemplate(3, NgbRating_ng_template_2_ng_template_3_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const index_r4 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", index_r4 < ctx_r2.nextRate ? \"*\" : \" \", \")\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"cursor\", ctx_r2.readonly || ctx_r2.disabled ? \"default\" : \"pointer\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.starTemplate || ctx_r2.starTemplateFromContent || _r0)(\"ngTemplateOutletContext\", ctx_r2.contexts[index_r4]);\n} }\nfunction NgbTabset_li_1_ng_template_3_Template(rf, ctx) { }\nfunction NgbTabset_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 4)(1, \"a\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTabset_li_1_Template_a_click_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const tab_r2 = restoredCtx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); ctx_r4.select(tab_r2.id); return $event.preventDefault(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵtemplate(3, NgbTabset_li_1_ng_template_3_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const tab_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", tab_r2.id === ctx_r0.activeId)(\"disabled\", tab_r2.disabled);\n ɵngcc0.ɵɵproperty(\"id\", tab_r2.id);\n ɵngcc0.ɵɵattribute(\"tabindex\", tab_r2.disabled ? \"-1\" : undefined)(\"aria-controls\", !ctx_r0.destroyOnHide || tab_r2.id === ctx_r0.activeId ? tab_r2.id + \"-panel\" : null)(\"aria-selected\", tab_r2.id === ctx_r0.activeId)(\"aria-disabled\", tab_r2.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", tab_r2.title, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", tab_r2.titleTpl == null ? null : tab_r2.titleTpl.templateRef);\n} }\nfunction NgbTabset_ng_template_3_div_0_ng_template_1_Template(rf, ctx) { }\nfunction NgbTabset_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbTabset_ng_template_3_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tab_r6 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMapInterpolate1(\"tab-pane \", tab_r6.id === ctx_r7.activeId ? \"active\" : null, \"\");\n ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", tab_r6.id, \"-panel\");\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", tab_r6.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", tab_r6.contentTpl == null ? null : tab_r6.contentTpl.templateRef);\n} }\nfunction NgbTabset_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbTabset_ng_template_3_div_0_Template, 2, 6, \"div\", 7);\n} if (rf & 2) {\n const tab_r6 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.destroyOnHide || tab_r6.id === ctx_r1.activeId);\n} }\nfunction NgbTimepicker_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.changeHour(ctx_r8.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 14);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r0.isSmallSize)(\"btn-lg\", ctx_r0.isLargeSize)(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n} }\nfunction NgbTimepicker_button_5_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_5_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.changeHour(-ctx_r10.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n} }\nfunction NgbTimepicker_button_9_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_9_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.changeMinute(ctx_r12.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 17);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r2.isSmallSize)(\"btn-lg\", ctx_r2.isLargeSize)(\"disabled\", ctx_r2.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled);\n} }\nfunction NgbTimepicker_button_11_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_11_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.changeMinute(-ctx_r14.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 18);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r3.isSmallSize)(\"btn-lg\", ctx_r3.isLargeSize)(\"disabled\", ctx_r3.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled);\n} }\nfunction NgbTimepicker_div_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1, \":\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbTimepicker_div_13_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.changeSecond(ctx_r18.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 21);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r16.isSmallSize)(\"btn-lg\", ctx_r16.isLargeSize)(\"disabled\", ctx_r16.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r16.disabled);\n} }\nfunction NgbTimepicker_div_13_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.changeSecond(-ctx_r20.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 22);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r17.isSmallSize)(\"btn-lg\", ctx_r17.isLargeSize)(\"disabled\", ctx_r17.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r17.disabled);\n} }\nfunction NgbTimepicker_div_13_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtemplate(1, NgbTimepicker_div_13_button_1_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(2, \"input\", 20);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_div_13_Template_input_change_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.updateSecond($event.target.value); })(\"input\", function NgbTimepicker_div_13_Template_input_input_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_div_13_Template_input_keydown_ArrowUp_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(); ctx_r25.changeSecond(ctx_r25.secondStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_div_13_Template_input_keydown_ArrowDown_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r26 = ɵngcc0.ɵɵnextContext(); ctx_r26.changeSecond(-ctx_r26.secondStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_13_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx_r5.isSmallSize)(\"form-control-lg\", ctx_r5.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r5.formatMinSec(ctx_r5.model == null ? null : ctx_r5.model.second))(\"readOnly\", ctx_r5.readonlyInputs)(\"disabled\", ctx_r5.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n} }\nfunction NgbTimepicker_div_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 5);\n} }\nfunction NgbTimepicker_div_15_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵi18n(1, 27);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r27 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵi18nExp(ctx_r27.i18n.getAfternoonPeriod());\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbTimepicker_div_15_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵi18n(0, 28);\n} if (rf & 2) {\n const ctx_r29 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵi18nExp(ctx_r29.i18n.getMorningPeriod());\n ɵngcc0.ɵɵi18nApply(0);\n} }\nfunction NgbTimepicker_div_15_Template(rf, ctx) { if (rf & 1) {\n const _r31 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_15_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r30 = ɵngcc0.ɵɵnextContext(); return ctx_r30.toggleMeridian(); });\n ɵngcc0.ɵɵtemplate(2, NgbTimepicker_div_15_ng_container_2_Template, 2, 1, \"ng-container\", 25);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_15_ng_template_3_Template, 1, 1, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const _r28 = ɵngcc0.ɵɵreference(4);\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r7.isSmallSize)(\"btn-lg\", ctx_r7.isLargeSize)(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (ctx_r7.model == null ? null : ctx_r7.model.hour) >= 12)(\"ngIfElse\", _r28);\n} }\nfunction NgbToast_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.header);\n} }\nfunction NgbToast_ng_template_2_ng_template_1_Template(rf, ctx) { }\nfunction NgbToast_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtemplate(1, NgbToast_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementStart(2, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbToast_ng_template_2_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.hide(); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 7);\n ɵngcc0.ɵɵtext(4, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.contentHeaderTpl || _r0);\n} }\nfunction NgbHighlight_ng_template_0_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.highlightClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_span_0_Template, 2, 3, \"span\", 1);\n ɵngcc0.ɵɵtemplate(1, NgbHighlight_ng_template_0_ng_template_1_Template, 1, 1, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n} if (rf & 2) {\n const isOdd_r2 = ctx.odd;\n const _r4 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", isOdd_r2)(\"ngIfElse\", _r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ngb-highlight\", 2);\n} if (rf & 2) {\n const result_r3 = ctx.result;\n const term_r4 = ctx.term;\n const formatter_r5 = ctx.formatter;\n ɵngcc0.ɵɵproperty(\"result\", formatter_r5(result_r3))(\"term\", term_r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_2_ng_template_1_Template(rf, ctx) { }\nconst _c84 = function (a0, a1, a2) { return { result: a0, term: a1, formatter: a2 }; };\nfunction NgbTypeaheadWindow_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbTypeaheadWindow_ng_template_2_Template_button_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const idx_r7 = restoredCtx.index; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.markActive(idx_r7); })(\"click\", function NgbTypeaheadWindow_ng_template_2_Template_button_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const result_r6 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.select(result_r6); });\n ɵngcc0.ɵɵtemplate(1, NgbTypeaheadWindow_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const result_r6 = ctx.$implicit;\n const idx_r7 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"active\", idx_r7 === ctx_r2.activeIdx);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r2.id + \"-\" + idx_r7);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.resultTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(5, _c84, result_r6, ctx_r2.term, ctx_r2.formatter));\n} }\nfunction toInteger(value) {\n return parseInt(`${value}`, 10);\n}\nfunction toString(value) {\n return (value !== undefined && value !== null) ? `${value}` : '';\n}\nfunction getValueInRange(value, max, min = 0) {\n return Math.max(Math.min(value, max), min);\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction padNumber(value) {\n if (isNumber(value)) {\n return `0${value}`.slice(-2);\n }\n else {\n return '';\n }\n}\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\nfunction hasClassName(element, className) {\n return element && element.className && element.className.split &&\n element.className.split(/\\s+/).indexOf(className) >= 0;\n}\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\n // Polyfill for ie10+\n if (!Element.prototype.matches) {\n // IE uses the non-standard name: msMatchesSelector\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n Element.prototype.closest = function (s) {\n let el = this;\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (el.matches(s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n return element.closest(selector);\n}\n\n/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nlet NgbAccordionConfig = class NgbAccordionConfig {\n constructor() {\n this.closeOthers = false;\n }\n};\nNgbAccordionConfig.ɵfac = function NgbAccordionConfig_Factory(t) { return new (t || NgbAccordionConfig)(); };\nNgbAccordionConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(); }, token: NgbAccordionConfig, providedIn: \"root\" });\n\nlet nextId = 0;\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * @since 4.1.0\n */\nlet NgbPanelHeader = class NgbPanelHeader {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPanelHeader.ɵfac = function NgbPanelHeader_Factory(t) { return new (t || NgbPanelHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelHeader, selectors: [[\"ng-template\", \"ngbPanelHeader\", \"\"]] });\nNgbPanelHeader.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nlet NgbPanelTitle = class NgbPanelTitle {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPanelTitle.ɵfac = function NgbPanelTitle_Factory(t) { return new (t || NgbPanelTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelTitle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelTitle, selectors: [[\"ng-template\", \"ngbPanelTitle\", \"\"]] });\nNgbPanelTitle.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive that wraps the accordion panel content.\n */\nlet NgbPanelContent = class NgbPanelContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPanelContent.ɵfac = function NgbPanelContent_Factory(t) { return new (t || NgbPanelContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelContent, selectors: [[\"ng-template\", \"ngbPanelContent\", \"\"]] });\nNgbPanelContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nlet NgbPanel = class NgbPanel {\n constructor() {\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n this.disabled = false;\n /**\n * An optional id for the panel that must be unique on the page.\n *\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n */\n this.id = `ngb-panel-${nextId++}`;\n this.isOpen = false;\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n};\nNgbPanel.ɵfac = function NgbPanel_Factory(t) { return new (t || NgbPanel)(); };\nNgbPanel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanel, selectors: [[\"ngb-panel\"]], contentQueries: function NgbPanel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelTitle, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelHeader, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, inputs: { disabled: \"disabled\", id: \"id\", title: \"title\", type: \"type\", cardClass: \"cardClass\" } });\n__decorate([\n Input()\n], NgbPanel.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgbPanel.prototype, \"id\", void 0);\n__decorate([\n Input()\n], NgbPanel.prototype, \"title\", void 0);\n__decorate([\n Input()\n], NgbPanel.prototype, \"type\", void 0);\n__decorate([\n Input()\n], NgbPanel.prototype, \"cardClass\", void 0);\n__decorate([\n ContentChildren(NgbPanelTitle, { descendants: false })\n], NgbPanel.prototype, \"titleTpls\", void 0);\n__decorate([\n ContentChildren(NgbPanelHeader, { descendants: false })\n], NgbPanel.prototype, \"headerTpls\", void 0);\n__decorate([\n ContentChildren(NgbPanelContent, { descendants: false })\n], NgbPanel.prototype, \"contentTpls\", void 0);\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nlet NgbAccordion = class NgbAccordion {\n constructor(config) {\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n *\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n * the `(panelChange)` event.\n */\n this.activeIds = [];\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n this.destroyOnHide = true;\n /**\n * Event emitted right before the panel toggle happens.\n *\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n */\n this.panelChange = new EventEmitter();\n this.type = config.type;\n this.closeOtherPanels = config.closeOthers;\n }\n /**\n * Checks if a panel with a given id is expanded.\n */\n isExpanded(panelId) { return this.activeIds.indexOf(panelId) > -1; }\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n */\n expand(panelId) { this._changeOpenState(this._findPanelById(panelId), true); }\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n */\n expandAll() {\n if (this.closeOtherPanels) {\n if (this.activeIds.length === 0 && this.panels.length) {\n this._changeOpenState(this.panels.first, true);\n }\n }\n else {\n this.panels.forEach(panel => this._changeOpenState(panel, true));\n }\n }\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n */\n collapse(panelId) { this._changeOpenState(this._findPanelById(panelId), false); }\n /**\n * Collapses all opened panels.\n */\n collapseAll() {\n this.panels.forEach((panel) => { this._changeOpenState(panel, false); });\n }\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n */\n toggle(panelId) {\n const panel = this._findPanelById(panelId);\n if (panel) {\n this._changeOpenState(panel, !panel.isOpen);\n }\n }\n ngAfterContentChecked() {\n // active id updates\n if (isString(this.activeIds)) {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n // update panels open states\n this.panels.forEach(panel => panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1);\n // closeOthers updates\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\n this._closeOthers(this.activeIds[0]);\n this._updateActiveIds();\n }\n }\n _changeOpenState(panel, nextState) {\n if (panel && !panel.disabled && panel.isOpen !== nextState) {\n let defaultPrevented = false;\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: () => { defaultPrevented = true; } });\n if (!defaultPrevented) {\n panel.isOpen = nextState;\n if (nextState && this.closeOtherPanels) {\n this._closeOthers(panel.id);\n }\n this._updateActiveIds();\n }\n }\n }\n _closeOthers(panelId) {\n this.panels.forEach(panel => {\n if (panel.id !== panelId) {\n panel.isOpen = false;\n }\n });\n }\n _findPanelById(panelId) { return this.panels.find(p => p.id === panelId); }\n _updateActiveIds() {\n this.activeIds = this.panels.filter(panel => panel.isOpen && !panel.disabled).map(panel => panel.id);\n }\n};\nNgbAccordion.ɵfac = function NgbAccordion_Factory(t) { return new (t || NgbAccordion)(ɵngcc0.ɵɵdirectiveInject(NgbAccordionConfig)); };\nNgbAccordion.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAccordion, selectors: [[\"ngb-accordion\"]], contentQueries: function NgbAccordion_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanel, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panels = _t);\n } }, hostAttrs: [\"role\", \"tablist\", 1, \"accordion\"], hostVars: 1, hostBindings: function NgbAccordion_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", !ctx.closeOtherPanels);\n } }, inputs: { activeIds: \"activeIds\", destroyOnHide: \"destroyOnHide\", type: \"type\", closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"] }, outputs: { panelChange: \"panelChange\" }, exportAs: [\"ngbAccordion\"], decls: 3, vars: 1, consts: [[\"ngbPanelHeader\", \"\"], [\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"btn\", \"btn-link\", 3, \"ngbPanelToggle\"], [3, \"ngTemplateOutlet\"], [\"role\", \"tab\", 3, \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"tabpanel\", \"class\", \"collapse\", 3, \"id\", \"show\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 1, \"collapse\", 3, \"id\"], [1, \"card-body\"]], template: function NgbAccordion_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbAccordion_ng_template_0_Template, 3, 3, \"ng-template\", 0, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_Template, 4, 11, \"ng-template\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.panels);\n } }, directives: function () { return [NgbPanelHeader, NgbPanelToggle, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf, ɵngcc1.NgIf]; }, encapsulation: 2 });\nNgbAccordion.ctorParameters = () => [\n { type: NgbAccordionConfig }\n];\n__decorate([\n ContentChildren(NgbPanel)\n], NgbAccordion.prototype, \"panels\", void 0);\n__decorate([\n Input()\n], NgbAccordion.prototype, \"activeIds\", void 0);\n__decorate([\n Input('closeOthers')\n], NgbAccordion.prototype, \"closeOtherPanels\", void 0);\n__decorate([\n Input()\n], NgbAccordion.prototype, \"destroyOnHide\", void 0);\n__decorate([\n Input()\n], NgbAccordion.prototype, \"type\", void 0);\n__decorate([\n Output()\n], NgbAccordion.prototype, \"panelChange\", void 0);\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * @since 4.1.0\n */\nlet NgbPanelToggle = class NgbPanelToggle {\n constructor(accordion, panel) {\n this.accordion = accordion;\n this.panel = panel;\n }\n set ngbPanelToggle(panel) {\n if (panel) {\n this.panel = panel;\n }\n }\n};\nNgbPanelToggle.ɵfac = function NgbPanelToggle_Factory(t) { return new (t || NgbPanelToggle)(ɵngcc0.ɵɵdirectiveInject(NgbAccordion), ɵngcc0.ɵɵdirectiveInject(NgbPanel, 9)); };\nNgbPanelToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelToggle, selectors: [[\"button\", \"ngbPanelToggle\", \"\"]], hostAttrs: [\"type\", \"button\"], hostVars: 5, hostBindings: function NgbPanelToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbPanelToggle_click_HostBindingHandler() { return ctx.accordion.toggle(ctx.panel.id); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.panel.disabled);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.panel.isOpen)(\"aria-controls\", ctx.panel.id);\n ɵngcc0.ɵɵclassProp(\"collapsed\", !ctx.panel.isOpen);\n } }, inputs: { ngbPanelToggle: \"ngbPanelToggle\" } });\nNgbPanelToggle.ctorParameters = () => [\n { type: NgbAccordion },\n { type: NgbPanel, decorators: [{ type: Optional }, { type: Host }] }\n];\n__decorate([\n Input()\n], NgbPanelToggle.prototype, \"ngbPanelToggle\", null);\nNgbPanelToggle = __decorate([ __param(1, Optional()), __param(1, Host())\n], NgbPanelToggle);\n\nconst NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\nlet NgbAccordionModule = class NgbAccordionModule {\n};\nNgbAccordionModule.ɵfac = function NgbAccordionModule_Factory(t) { return new (t || NgbAccordionModule)(); };\nNgbAccordionModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAccordionModule });\nNgbAccordionModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nlet NgbAlertConfig = class NgbAlertConfig {\n constructor() {\n this.dismissible = true;\n this.type = 'warning';\n }\n};\nNgbAlertConfig.ɵfac = function NgbAlertConfig_Factory(t) { return new (t || NgbAlertConfig)(); };\nNgbAlertConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(); }, token: NgbAlertConfig, providedIn: \"root\" });\n\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nlet NgbAlert = class NgbAlert {\n constructor(config, _renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n */\n this.close = new EventEmitter();\n this.dismissible = config.dismissible;\n this.type = config.type;\n }\n closeHandler() { this.close.emit(null); }\n ngOnChanges(changes) {\n const typeChange = changes['type'];\n if (typeChange && !typeChange.firstChange) {\n this._renderer.removeClass(this._element.nativeElement, `alert-${typeChange.previousValue}`);\n this._renderer.addClass(this._element.nativeElement, `alert-${typeChange.currentValue}`);\n }\n }\n ngOnInit() { this._renderer.addClass(this._element.nativeElement, `alert-${this.type}`); }\n};\nNgbAlert.ɵfac = function NgbAlert_Factory(t) { return new (t || NgbAlert)(ɵngcc0.ɵɵdirectiveInject(NgbAlertConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbAlert.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAlert, selectors: [[\"ngb-alert\"]], hostAttrs: [\"role\", \"alert\", 1, \"alert\"], hostVars: 2, hostBindings: function NgbAlert_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"alert-dismissible\", ctx.dismissible);\n } }, inputs: { dismissible: \"dismissible\", type: \"type\" }, outputs: { close: \"close\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 2, vars: 1, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2 = goog.getMsg(\"Close\");\n i18n_1 = MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2;\n }\n else {\n i18n_1 = $localize `:@@ngb.alert.close␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"type\", \"button\", \"class\", \"close\", \"aria-label\", i18n_1, 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", i18n_1, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbAlert_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, NgbAlert_button_1_Template, 3, 0, \"button\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dismissible);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-alert{display:block}\"], encapsulation: 2, changeDetection: 0 });\nNgbAlert.ctorParameters = () => [\n { type: NgbAlertConfig },\n { type: Renderer2 },\n { type: ElementRef }\n];\n__decorate([\n Input()\n], NgbAlert.prototype, \"dismissible\", void 0);\n__decorate([\n Input()\n], NgbAlert.prototype, \"type\", void 0);\n__decorate([\n Output()\n], NgbAlert.prototype, \"close\", void 0);\n\nlet NgbAlertModule = class NgbAlertModule {\n};\nNgbAlertModule.ɵfac = function NgbAlertModule_Factory(t) { return new (t || NgbAlertModule)(); };\nNgbAlertModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAlertModule });\nNgbAlertModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nlet NgbButtonLabel = class NgbButtonLabel {\n};\nNgbButtonLabel.ɵfac = function NgbButtonLabel_Factory(t) { return new (t || NgbButtonLabel)(); };\nNgbButtonLabel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbButtonLabel, selectors: [[\"\", \"ngbButtonLabel\", \"\"]], hostVars: 8, hostBindings: function NgbButtonLabel_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"btn\", true)(\"active\", ctx.active)(\"disabled\", ctx.disabled)(\"focus\", ctx.focused);\n } } });\n\nconst NGB_CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbCheckBox),\n multi: true\n};\n/**\n * Allows to easily create Bootstrap-style checkbox buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nlet NgbCheckBox = class NgbCheckBox {\n constructor(_label, _cd) {\n this._label = _label;\n this._cd = _cd;\n /**\n * If `true`, the checkbox button will be disabled\n */\n this.disabled = false;\n /**\n * The form control value when the checkbox is checked.\n */\n this.valueChecked = true;\n /**\n * The form control value when the checkbox is unchecked.\n */\n this.valueUnChecked = false;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n }\n set focused(isFocused) {\n this._label.focused = isFocused;\n if (!isFocused) {\n this.onTouched();\n }\n }\n onInputChange($event) {\n const modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\n this.onChange(modelToPropagate);\n this.onTouched();\n this.writeValue(modelToPropagate);\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._label.disabled = isDisabled;\n }\n writeValue(value) {\n this.checked = value === this.valueChecked;\n this._label.active = this.checked;\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n this._cd.markForCheck();\n }\n};\nNgbCheckBox.ɵfac = function NgbCheckBox_Factory(t) { return new (t || NgbCheckBox)(ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbCheckBox.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCheckBox, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"checkbox\"]], hostVars: 2, hostBindings: function NgbCheckBox_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbCheckBox_change_HostBindingHandler($event) { return ctx.onInputChange($event); })(\"focus\", function NgbCheckBox_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbCheckBox_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", valueChecked: \"valueChecked\", valueUnChecked: \"valueUnChecked\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_CHECKBOX_VALUE_ACCESSOR])] });\nNgbCheckBox.ctorParameters = () => [\n { type: NgbButtonLabel },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], NgbCheckBox.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgbCheckBox.prototype, \"valueChecked\", void 0);\n__decorate([\n Input()\n], NgbCheckBox.prototype, \"valueUnChecked\", void 0);\n\nconst NGB_RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbRadioGroup),\n multi: true\n};\nlet nextId$1 = 0;\n/**\n * Allows to easily create Bootstrap-style radio buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nlet NgbRadioGroup = class NgbRadioGroup {\n constructor() {\n this._radios = new Set();\n this._value = null;\n /**\n * Name of the radio group applied to radio input elements.\n *\n * Will be applied to all radio input elements inside the group,\n * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n *\n * If not provided, will be generated in the `ngb-radio-xx` format.\n */\n this.name = `ngb-radio-${nextId$1++}`;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n }\n get disabled() { return this._disabled; }\n set disabled(isDisabled) { this.setDisabledState(isDisabled); }\n onRadioChange(radio) {\n this.writeValue(radio.value);\n this.onChange(radio.value);\n }\n onRadioValueUpdate() { this._updateRadiosValue(); }\n register(radio) { this._radios.add(radio); }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(isDisabled) {\n this._disabled = isDisabled;\n this._updateRadiosDisabled();\n }\n unregister(radio) { this._radios.delete(radio); }\n writeValue(value) {\n this._value = value;\n this._updateRadiosValue();\n }\n _updateRadiosValue() { this._radios.forEach((radio) => radio.updateValue(this._value)); }\n _updateRadiosDisabled() { this._radios.forEach((radio) => radio.updateDisabled()); }\n};\nNgbRadioGroup.ɵfac = function NgbRadioGroup_Factory(t) { return new (t || NgbRadioGroup)(); };\nNgbRadioGroup.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadioGroup, selectors: [[\"\", \"ngbRadioGroup\", \"\"]], hostAttrs: [\"role\", \"radiogroup\"], inputs: { name: \"name\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_RADIO_VALUE_ACCESSOR])] });\n__decorate([\n Input()\n], NgbRadioGroup.prototype, \"name\", void 0);\n/**\n * A directive that marks an input of type \"radio\" as a part of the\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\n */\nlet NgbRadio = class NgbRadio {\n constructor(_group, _label, _renderer, _element, _cd) {\n this._group = _group;\n this._label = _label;\n this._renderer = _renderer;\n this._element = _element;\n this._cd = _cd;\n this._value = null;\n this._group.register(this);\n this.updateDisabled();\n }\n /**\n * The form control value when current radio button is checked.\n */\n set value(value) {\n this._value = value;\n const stringValue = value ? value.toString() : '';\n this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\n this._group.onRadioValueUpdate();\n }\n /**\n * If `true`, current radio button will be disabled.\n */\n set disabled(isDisabled) {\n this._disabled = isDisabled !== false;\n this.updateDisabled();\n }\n set focused(isFocused) {\n if (this._label) {\n this._label.focused = isFocused;\n }\n if (!isFocused) {\n this._group.onTouched();\n }\n }\n get checked() { return this._checked; }\n get disabled() { return this._group.disabled || this._disabled; }\n get value() { return this._value; }\n get nameAttr() { return this.name || this._group.name; }\n ngOnDestroy() { this._group.unregister(this); }\n onChange() { this._group.onRadioChange(this); }\n updateValue(value) {\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n if (this.value !== value) {\n this._cd.markForCheck();\n }\n this._checked = this.value === value;\n this._label.active = this._checked;\n }\n updateDisabled() { this._label.disabled = this.disabled; }\n};\nNgbRadio.ɵfac = function NgbRadio_Factory(t) { return new (t || NgbRadio)(ɵngcc0.ɵɵdirectiveInject(NgbRadioGroup), ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRadio.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadio, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"radio\"]], hostVars: 3, hostBindings: function NgbRadio_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbRadio_change_HostBindingHandler() { return ctx.onChange(); })(\"focus\", function NgbRadio_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbRadio_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"name\", ctx.nameAttr);\n } }, inputs: { value: \"value\", disabled: \"disabled\", name: \"name\" } });\nNgbRadio.ctorParameters = () => [\n { type: NgbRadioGroup },\n { type: NgbButtonLabel },\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], NgbRadio.prototype, \"name\", void 0);\n__decorate([\n Input('value')\n], NgbRadio.prototype, \"value\", null);\n__decorate([\n Input('disabled')\n], NgbRadio.prototype, \"disabled\", null);\n\nconst NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\nlet NgbButtonsModule = class NgbButtonsModule {\n};\nNgbButtonsModule.ɵfac = function NgbButtonsModule_Factory(t) { return new (t || NgbButtonsModule)(); };\nNgbButtonsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbButtonsModule });\nNgbButtonsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nlet NgbCarouselConfig = class NgbCarouselConfig {\n constructor() {\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n};\nNgbCarouselConfig.ɵfac = function NgbCarouselConfig_Factory(t) { return new (t || NgbCarouselConfig)(); };\nNgbCarouselConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(); }, token: NgbCarouselConfig, providedIn: \"root\" });\n\nlet nextId$2 = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nlet NgbSlide = class NgbSlide {\n constructor(tplRef) {\n this.tplRef = tplRef;\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = `ngb-slide-${nextId$2++}`;\n }\n};\nNgbSlide.ɵfac = function NgbSlide_Factory(t) { return new (t || NgbSlide)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbSlide.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbSlide, selectors: [[\"ng-template\", \"ngbSlide\", \"\"]], inputs: { id: \"id\" } });\nNgbSlide.ctorParameters = () => [\n { type: TemplateRef }\n];\n__decorate([\n Input()\n], NgbSlide.prototype, \"id\", void 0);\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nlet NgbCarousel = class NgbCarousel {\n constructor(config, _platformId, _ngZone, _cd) {\n this._platformId = _platformId;\n this._ngZone = _ngZone;\n this._cd = _cd;\n this.NgbSlideEventSource = NgbSlideEventSource;\n this._destroy$ = new Subject();\n this._interval$ = new BehaviorSubject(0);\n this._mouseHover$ = new BehaviorSubject(false);\n this._pauseOnHover$ = new BehaviorSubject(false);\n this._pause$ = new BehaviorSubject(false);\n this._wrap$ = new BehaviorSubject(false);\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n this.interval = config.interval;\n this.wrap = config.wrap;\n this.keyboard = config.keyboard;\n this.pauseOnHover = config.pauseOnHover;\n this.showNavigationArrows = config.showNavigationArrows;\n this.showNavigationIndicators = config.showNavigationIndicators;\n }\n /**\n * Time in milliseconds before the next slide is shown.\n */\n set interval(value) {\n this._interval$.next(value);\n }\n get interval() { return this._interval$.value; }\n /**\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n */\n set wrap(value) {\n this._wrap$.next(value);\n }\n get wrap() { return this._wrap$.value; }\n /**\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\n *\n * @since 2.2.0\n */\n set pauseOnHover(value) {\n this._pauseOnHover$.next(value);\n }\n get pauseOnHover() { return this._pauseOnHover$.value; }\n mouseEnter() {\n this._mouseHover$.next(true);\n }\n mouseLeave() {\n this._mouseHover$.next(false);\n }\n ngAfterContentInit() {\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular(() => {\n const hasNextSlide$ = combineLatest([\n this.slide.pipe(map(slideEvent => slideEvent.current), startWith(this.activeId)),\n this._wrap$, this.slides.changes.pipe(startWith(null))\n ])\n .pipe(map(([currentSlideId, wrap]) => {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n }), distinctUntilChanged());\n combineLatest([this._pause$, this._pauseOnHover$, this._mouseHover$, this._interval$, hasNextSlide$])\n .pipe(map(([pause, pauseOnHover, mouseHover, interval, hasNextSlide]) => ((pause || (pauseOnHover && mouseHover) || !hasNextSlide) ? 0 : interval)), distinctUntilChanged(), switchMap(interval => interval > 0 ? timer(interval, interval) : NEVER), takeUntil(this._destroy$))\n .subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\n });\n }\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => this._cd.markForCheck());\n }\n ngAfterContentChecked() {\n let activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : null);\n }\n ngOnDestroy() { this._destroy$.next(); }\n /**\n * Navigates to a slide with the specified identifier.\n */\n select(slideId, source) {\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n }\n /**\n * Navigates to the previous slide.\n */\n prev(source) {\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT, source);\n }\n /**\n * Navigates to the next slide.\n */\n next(source) {\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT, source);\n }\n /**\n * Pauses cycling through the slides.\n */\n pause() { this._pause$.next(true); }\n /**\n * Restarts cycling through the slides from left to right.\n */\n cycle() { this._pause$.next(false); }\n _cycleToSelected(slideIdx, direction, source) {\n let selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\n this.activeId = selectedSlide.id;\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n }\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\n }\n _getSlideById(slideId) { return this.slides.find(slide => slide.id === slideId); }\n _getSlideIdxById(slideId) {\n return this.slides.toArray().indexOf(this._getSlideById(slideId));\n }\n _getNextSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\n slideArr[currentSlideIdx + 1].id;\n }\n _getPrevSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\n slideArr[currentSlideIdx - 1].id;\n }\n};\nNgbCarousel.ɵfac = function NgbCarousel_Factory(t) { return new (t || NgbCarousel)(ɵngcc0.ɵɵdirectiveInject(NgbCarouselConfig), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbCarousel.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbCarousel, selectors: [[\"ngb-carousel\"]], contentQueries: function NgbCarousel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbSlide, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.slides = _t);\n } }, hostAttrs: [\"tabIndex\", \"0\", 1, \"carousel\", \"slide\"], hostVars: 2, hostBindings: function NgbCarousel_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbCarousel_keydown_arrowLeft_HostBindingHandler() { return ctx.keyboard && ctx.prev(ctx.NgbSlideEventSource.ARROW_LEFT); })(\"keydown.arrowRight\", function NgbCarousel_keydown_arrowRight_HostBindingHandler() { return ctx.keyboard && ctx.next(ctx.NgbSlideEventSource.ARROW_RIGHT); })(\"mouseenter\", function NgbCarousel_mouseenter_HostBindingHandler() { return ctx.mouseEnter(); })(\"mouseleave\", function NgbCarousel_mouseleave_HostBindingHandler() { return ctx.mouseLeave(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", \"block\");\n } }, inputs: { interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\", activeId: \"activeId\" }, outputs: { slide: \"slide\" }, exportAs: [\"ngbCarousel\"], decls: 5, vars: 4, consts: function () { let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__5 = goog.getMsg(\"Previous\");\n i18n_4 = MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__5;\n }\n else {\n i18n_4 = $localize `:@@ngb.carousel.previous␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__7 = goog.getMsg(\"Next\");\n i18n_6 = MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__7;\n }\n else {\n i18n_6 = $localize `:@@ngb.carousel.next␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } return [[\"class\", \"carousel-indicators\", 4, \"ngIf\"], [1, \"carousel-inner\"], [\"class\", \"carousel-item\", 3, \"active\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"carousel-control-prev\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"carousel-control-next\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [1, \"carousel-indicators\"], [3, \"id\", \"active\", \"click\", 4, \"ngFor\", \"ngForOf\"], [3, \"id\", \"click\"], [1, \"carousel-item\"], [3, \"ngTemplateOutlet\"], [\"role\", \"button\", 1, \"carousel-control-prev\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-prev-icon\"], [1, \"sr-only\"], i18n_4, [\"role\", \"button\", 1, \"carousel-control-next\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-next-icon\"], i18n_6]; }, template: function NgbCarousel_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbCarousel_ol_0_Template, 2, 1, \"ol\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, NgbCarousel_div_2_Template, 2, 3, \"div\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_a_3_Template, 4, 0, \"a\", 3);\n ɵngcc0.ɵɵtemplate(4, NgbCarousel_a_4_Template, 4, 0, \"a\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationIndicators);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\nNgbCarousel.ctorParameters = () => [\n { type: NgbCarouselConfig },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef }\n];\n__decorate([\n ContentChildren(NgbSlide)\n], NgbCarousel.prototype, \"slides\", void 0);\n__decorate([\n Input()\n], NgbCarousel.prototype, \"activeId\", void 0);\n__decorate([\n Input()\n], NgbCarousel.prototype, \"interval\", null);\n__decorate([\n Input()\n], NgbCarousel.prototype, \"wrap\", null);\n__decorate([\n Input()\n], NgbCarousel.prototype, \"keyboard\", void 0);\n__decorate([\n Input()\n], NgbCarousel.prototype, \"pauseOnHover\", null);\n__decorate([\n Input()\n], NgbCarousel.prototype, \"showNavigationArrows\", void 0);\n__decorate([\n Input()\n], NgbCarousel.prototype, \"showNavigationIndicators\", void 0);\n__decorate([\n Output()\n], NgbCarousel.prototype, \"slide\", void 0);\n__decorate([\n HostListener('mouseenter')\n], NgbCarousel.prototype, \"mouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], NgbCarousel.prototype, \"mouseLeave\", null);\nNgbCarousel = __decorate([ __param(1, Inject(PLATFORM_ID))\n], NgbCarousel);\n/**\n * Defines the carousel slide transition direction.\n */\nvar NgbSlideEventDirection;\n(function (NgbSlideEventDirection) {\n NgbSlideEventDirection[NgbSlideEventDirection[\"LEFT\"] = 'left'] = \"LEFT\";\n NgbSlideEventDirection[NgbSlideEventDirection[\"RIGHT\"] = 'right'] = \"RIGHT\";\n})(NgbSlideEventDirection || (NgbSlideEventDirection = {}));\nvar NgbSlideEventSource;\n(function (NgbSlideEventSource) {\n NgbSlideEventSource[\"TIMER\"] = \"timer\";\n NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\n NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\n NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\n})(NgbSlideEventSource || (NgbSlideEventSource = {}));\nconst NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\nlet NgbCarouselModule = class NgbCarouselModule {\n};\nNgbCarouselModule.ɵfac = function NgbCarouselModule_Factory(t) { return new (t || NgbCarouselModule)(); };\nNgbCarouselModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCarouselModule });\nNgbCarouselModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * A directive to provide a simple way of hiding and showing elements on the page.\n */\nlet NgbCollapse = class NgbCollapse {\n constructor() {\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n this.collapsed = false;\n }\n};\nNgbCollapse.ɵfac = function NgbCollapse_Factory(t) { return new (t || NgbCollapse)(); };\nNgbCollapse.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCollapse, selectors: [[\"\", \"ngbCollapse\", \"\"]], hostVars: 4, hostBindings: function NgbCollapse_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"collapse\", true)(\"show\", !ctx.collapsed);\n } }, inputs: { collapsed: [\"ngbCollapse\", \"collapsed\"] }, exportAs: [\"ngbCollapse\"] });\n__decorate([\n Input('ngbCollapse')\n], NgbCollapse.prototype, \"collapsed\", void 0);\n\nlet NgbCollapseModule = class NgbCollapseModule {\n};\nNgbCollapseModule.ɵfac = function NgbCollapseModule_Factory(t) { return new (t || NgbCollapseModule)(); };\nNgbCollapseModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCollapseModule });\nNgbCollapseModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * @since 3.0.0\n */\nclass NgbDate {\n constructor(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n */\n static from(date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n }\n /**\n * Checks if the current date is equal to another date.\n */\n equals(other) {\n return other && this.year === other.year && this.month === other.month && this.day === other.day;\n }\n /**\n * Checks if the current date is before another date.\n */\n before(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n }\n else {\n return this.month < other.month;\n }\n }\n else {\n return this.year < other.year;\n }\n }\n /**\n * Checks if the current date is after another date.\n */\n after(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n }\n else {\n return this.month > other.month;\n }\n }\n else {\n return this.year > other.year;\n }\n }\n}\n\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\nfunction toJSDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n */\nlet NgbCalendar = class NgbCalendar {\n};\nNgbCalendar.ɵfac = function NgbCalendar_Factory(t) { return new (t || NgbCalendar)(); };\nNgbCalendar.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\nlet NgbCalendarGregorian = class NgbCalendarGregorian extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toJSDate(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromJSDate(jsDate);\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n let jsDate = toJSDate(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return fromJSDate(new Date()); }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toJSDate(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day;\n }\n};\nNgbCalendarGregorian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarGregorian_BaseFactory; return function NgbCalendarGregorian_Factory(t) { return (ɵNgbCalendarGregorian_BaseFactory || (ɵNgbCalendarGregorian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarGregorian)))(t || NgbCalendarGregorian); }; }();\nNgbCalendarGregorian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarGregorian, factory: function (t) { return NgbCalendarGregorian.ɵfac(t); } });\n\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\nfunction dateComparator(prev, next) {\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n }\n}\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date;\n}\nfunction isDateSelectable(date, state) {\n const { minDate, maxDate, disabled, markDisabled } = state;\n // clang-format off\n return !(!isDefined(date) ||\n disabled ||\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n (minDate && date.before(minDate)) ||\n (maxDate && date.after(maxDate)));\n // clang-format on\n}\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n let months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n const index = months.findIndex(month => month === minDate.month);\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n const index = months.findIndex(month => month === maxDate.month);\n months = months.slice(0, index + 1);\n }\n return months;\n}\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n const start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n const end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n const length = end - start + 1;\n const numbers = Array(length);\n for (let i = 0; i < length; i++) {\n numbers[i] = start + i;\n }\n return numbers;\n}\nfunction nextMonthDisabled(calendar, date, maxDate) {\n const nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\n return maxDate && nextDate.after(maxDate);\n}\nfunction prevMonthDisabled(calendar, date, minDate) {\n const prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\n return minDate && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\n prevDate.year < minDate.year && minDate.month === 1);\n}\nfunction buildMonths(calendar, date, state, i18n, force) {\n const { displayMonths, months } = state;\n // move old months to a temporary array\n const monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n const firstDates = Array.from({ length: displayMonths }, (_, i) => {\n const firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\n months[i] = null;\n if (!force) {\n const reusedIndex = monthsToReuse.findIndex(month => month.firstDate.equals(firstDate));\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n });\n // rebuild nullified months\n firstDates.forEach((firstDate, i) => {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\n }\n });\n return months;\n}\nfunction buildMonth(calendar, date, state, i18n, month = {}) {\n const { dayTemplateData, minDate, maxDate, firstDayOfWeek, markDisabled, outsideDays } = state;\n const calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // month has weeks\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n let weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n }\n const days = weekObject.days;\n // week has days\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0) {\n month.weekdays[day] = calendar.getWeekday(date);\n }\n const newDate = new NgbDate(date.year, date.month, date.day);\n const nextDate = calendar.getNext(newDate);\n const ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n let disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\n }\n // today\n let today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n let contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n let dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = {};\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number,\n currentYear: month.year, disabled,\n focused: false,\n selected: false, today\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map(day => day.date), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\n days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n const daysPerWeek = calendar.getDaysPerWeek();\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n return new NgbDatepickerI18nDefault(locale);\n}\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n */\nlet NgbDatepickerI18n = class NgbDatepickerI18n {\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * @since 3.0.0\n */\n getDayNumerals(date) { return `${date.day}`; }\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * @since 3.0.0\n */\n getWeekNumerals(weekNumber) { return `${weekNumber}`; }\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * @since 3.0.0\n */\n getYearNumerals(year) { return `${year}`; }\n};\nNgbDatepickerI18n.ɵfac = function NgbDatepickerI18n_Factory(t) { return new (t || NgbDatepickerI18n)(); };\nNgbDatepickerI18n.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(ɵɵinject(LOCALE_ID)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\nlet NgbDatepickerI18nDefault = class NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n constructor(_locale) {\n super();\n this._locale = _locale;\n const weekdaysStartingOnSunday = getLocaleDayNames(_locale, FormStyle.Standalone, TranslationWidth.Short);\n this._weekdaysShort = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\n this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n }\n getWeekdayShortName(weekday) { return this._weekdaysShort[weekday - 1]; }\n getMonthShortName(month) { return this._monthsShort[month - 1]; }\n getMonthFullName(month) { return this._monthsFull[month - 1]; }\n getDayAriaLabel(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n }\n};\nNgbDatepickerI18nDefault.ɵfac = function NgbDatepickerI18nDefault_Factory(t) { return new (t || NgbDatepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbDatepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nDefault, factory: function (t) { return NgbDatepickerI18nDefault.ɵfac(t); } });\nNgbDatepickerI18nDefault.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nNgbDatepickerI18nDefault = __decorate([ __param(0, Inject(LOCALE_ID))\n], NgbDatepickerI18nDefault);\n\nlet NgbDatepickerService = class NgbDatepickerService {\n constructor(_calendar, _i18n) {\n this._calendar = _calendar;\n this._i18n = _i18n;\n this._VALIDATORS = {\n dayTemplateData: (dayTemplateData) => {\n if (this._state.dayTemplateData !== dayTemplateData) {\n return { dayTemplateData };\n }\n },\n displayMonths: (displayMonths) => {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n return { displayMonths };\n }\n },\n disabled: (disabled) => {\n if (this._state.disabled !== disabled) {\n return { disabled };\n }\n },\n firstDayOfWeek: (firstDayOfWeek) => {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n return { firstDayOfWeek };\n }\n },\n focusVisible: (focusVisible) => {\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n return { focusVisible };\n }\n },\n markDisabled: (markDisabled) => {\n if (this._state.markDisabled !== markDisabled) {\n return { markDisabled };\n }\n },\n maxDate: (date) => {\n const maxDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.maxDate, maxDate)) {\n return { maxDate };\n }\n },\n minDate: (date) => {\n const minDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.minDate, minDate)) {\n return { minDate };\n }\n },\n navigation: (navigation) => {\n if (this._state.navigation !== navigation) {\n return { navigation };\n }\n },\n outsideDays: (outsideDays) => {\n if (this._state.outsideDays !== outsideDays) {\n return { outsideDays };\n }\n }\n };\n this._model$ = new Subject();\n this._dateSelect$ = new Subject();\n this._state = {\n disabled: false,\n displayMonths: 1,\n firstDayOfWeek: 1,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectBoxes: { years: [], months: [] },\n selectedDate: null\n };\n }\n get model$() { return this._model$.pipe(filter(model => model.months.length > 0)); }\n get dateSelect$() { return this._dateSelect$.pipe(filter(date => date !== null)); }\n set(options) {\n let patch = Object.keys(options)\n .map(key => this._VALIDATORS[key](options[key]))\n .reduce((obj, part) => (Object.assign(Object.assign({}, obj), part)), {});\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n }\n focus(date) {\n if (!this._state.disabled && this._calendar.isValid(date) && isChangedDate(this._state.focusDate, date)) {\n this._nextState({ focusDate: date });\n }\n }\n focusSelect() {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, { emitEvent: true });\n }\n }\n open(date) {\n const firstDate = this.toValidDate(date, this._calendar.getToday());\n if (!this._state.disabled && (!this._state.firstDate || isChangedMonth(this._state.firstDate, date))) {\n this._nextState({ firstDate });\n }\n }\n select(date, options = {}) {\n const selectedDate = this.toValidDate(date, null);\n if (!this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({ selectedDate });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._dateSelect$.next(selectedDate);\n }\n }\n }\n toValidDate(date, defaultValue) {\n const ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n }\n getMonth(struct) {\n for (let month of this._state.months) {\n if (struct.month === month.number && struct.year === month.year) {\n return month;\n }\n }\n throw new Error(`month ${struct.month} of year ${struct.year} not found`);\n }\n _nextState(patch) {\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n _patchContexts(state) {\n const { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\n state.months.forEach(month => {\n month.weeks.forEach(week => {\n week.days.forEach(day => {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex = !disabled && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\n day.date.before(months[displayMonths - 1].lastDate));\n }\n });\n });\n });\n }\n _updateState(patch) {\n // patching fields\n const state = Object.assign({}, this._state, patch);\n let startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 && !state.focusDate.before(state.firstDate) &&\n !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n const forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch;\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months.length > 0 ? months[0].firstDate : undefined;\n state.lastDate = months.length > 0 ? months[months.length - 1].lastDate : undefined;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (state.focusDate === undefined || state.focusDate.before(state.firstDate) ||\n state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months =\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n }\n else {\n state.selectBoxes = { years: [], months: [] };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n }\n};\nNgbDatepickerService.ɵfac = function NgbDatepickerService_Factory(t) { return new (t || NgbDatepickerService)(ɵngcc0.ɵɵinject(NgbCalendar), ɵngcc0.ɵɵinject(NgbDatepickerI18n)); };\nNgbDatepickerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerService, factory: function (t) { return NgbDatepickerService.ɵfac(t); } });\nNgbDatepickerService.ctorParameters = () => [\n { type: NgbCalendar },\n { type: NgbDatepickerI18n }\n];\n\n// clang-format on\nvar NavigationEvent;\n(function (NavigationEvent) {\n NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\n NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\n})(NavigationEvent || (NavigationEvent = {}));\n\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nlet NgbDatepickerConfig = class NgbDatepickerConfig {\n constructor() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekdays = true;\n this.showWeekNumbers = false;\n }\n};\nNgbDatepickerConfig.ɵfac = function NgbDatepickerConfig_Factory(t) { return new (t || NgbDatepickerConfig)(); };\nNgbDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n */\nlet NgbDateAdapter = class NgbDateAdapter {\n};\nNgbDateAdapter.ɵfac = function NgbDateAdapter_Factory(t) { return new (t || NgbDateAdapter)(); };\nNgbDateAdapter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\nlet NgbDateStructAdapter = class NgbDateStructAdapter extends NgbDateAdapter {\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n fromModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n toModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n};\nNgbDateStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateStructAdapter_BaseFactory; return function NgbDateStructAdapter_Factory(t) { return (ɵNgbDateStructAdapter_BaseFactory || (ɵNgbDateStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateStructAdapter)))(t || NgbDateStructAdapter); }; }();\nNgbDateStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateStructAdapter, factory: function (t) { return NgbDateStructAdapter.ɵfac(t); } });\n\nconst NGB_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbDatepicker),\n multi: true\n};\n/**\n * A directive that marks the content template that customizes the way datepicker months are displayed\n *\n * @since 5.3.0\n */\nlet NgbDatepickerContent = class NgbDatepickerContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbDatepickerContent.ɵfac = function NgbDatepickerContent_Factory(t) { return new (t || NgbDatepickerContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbDatepickerContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDatepickerContent, selectors: [[\"ng-template\", \"ngbDatepickerContent\", \"\"]] });\nNgbDatepickerContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nlet NgbDatepicker = class NgbDatepicker {\n constructor(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\n this._service = _service;\n this._calendar = _calendar;\n this.i18n = i18n;\n this._elementRef = _elementRef;\n this._ngbDateAdapter = _ngbDateAdapter;\n this._ngZone = _ngZone;\n this._destroyed$ = new Subject();\n this._publicState = {};\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 5.2.0\n */\n this.dateSelect = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @deprecated 6.0.0 Please use 'dateSelect' output instead due to collision with native\n * 'select' event.\n */\n this.select = this.dateSelect;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showWeekdays', 'showWeekNumbers', 'startDate']\n .forEach(input => this[input] = config[input]);\n _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe(date => { this.dateSelect.emit(date); });\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(model => {\n const newDate = model.firstDate;\n const oldDate = this.model ? this.model.firstDate : null;\n // update public state\n this._publicState = {\n maxDate: model.maxDate,\n minDate: model.minDate,\n firstDate: model.firstDate,\n lastDate: model.lastDate,\n focusedDate: model.focusDate,\n months: model.months.map(viewModel => viewModel.firstDate)\n };\n let navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n this.navigate.emit({\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n next: { year: newDate.year, month: newDate.month },\n preventDefault: () => navigationPrevented = true\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n this._service.open(oldDate);\n return;\n }\n }\n const newSelectedDate = model.selectedDate;\n const newFocusedDate = model.focusDate;\n const oldFocusedDate = this.model ? this.model.focusDate : null;\n this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, this._controlValue)) {\n this._controlValue = newSelectedDate;\n this.onTouched();\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n this.focus();\n }\n cd.markForCheck();\n });\n }\n /**\n * Returns the readonly public state of the datepicker\n *\n * @since 5.2.0\n */\n get state() { return this._publicState; }\n /**\n * Returns the calendar service used in the specific datepicker instance.\n *\n * @since 5.3.0\n */\n get calendar() { return this._calendar; }\n /**\n * Focuses on given date.\n */\n focusDate(date) { this._service.focus(NgbDate.from(date)); }\n /**\n * Selects focused date.\n */\n focusSelect() { this._service.focusSelect(); }\n focus() {\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const elementToFocus = this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n if (elementToFocus) {\n elementToFocus.focus();\n }\n });\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n this._service.open(NgbDate.from(date ? date.day ? date : Object.assign(Object.assign({}, date), { day: 1 }) : null));\n }\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n const focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\n const focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\n const { nativeElement } = this._elementRef;\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$)\n .pipe(filter(({ target, relatedTarget }) => !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day') &&\n nativeElement.contains(target) && nativeElement.contains(relatedTarget))), takeUntil(this._destroyed$))\n .subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\n });\n }\n ngOnDestroy() { this._destroyed$.next(); }\n ngOnInit() {\n if (this.model === undefined) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n this.navigateTo(this.startDate);\n }\n if (!this.dayTemplate) {\n this.dayTemplate = this._defaultDayTemplate;\n }\n }\n ngOnChanges(changes) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .filter(name => name in changes)\n .forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n if ('startDate' in changes) {\n const { currentValue, previousValue } = changes.startDate;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n }\n onDateSelect(date) {\n this._service.focus(date);\n this._service.select(date, { emitEvent: true });\n }\n onNavigateDateSelect(date) { this._service.open(date); }\n onNavigateEvent(event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(disabled) { this._service.set({ disabled }); }\n writeValue(value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n }\n};\nNgbDatepicker.ɵfac = function NgbDatepicker_Factory(t) { return new (t || NgbDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbDatepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepicker, selectors: [[\"ngb-datepicker\"]], contentQueries: function NgbDatepicker_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDatepickerContent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n } }, viewQuery: function NgbDatepicker_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c8, 7);\n ɵngcc0.ɵɵviewQuery(_c9, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._defaultDayTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentEl = _t.first);\n } }, inputs: { dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekdays: \"showWeekdays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\" }, outputs: { navigate: \"navigate\", dateSelect: \"dateSelect\", select: \"select\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([NGB_DATEPICKER_VALUE_ACCESSOR, NgbDatepickerService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 5, consts: [[\"defaultDayTemplate\", \"\"], [\"defaultContentTemplate\", \"\"], [1, \"ngb-dp-header\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\", 4, \"ngIf\"], [1, \"ngb-dp-content\"], [\"content\", \"\"], [3, \"ngTemplateOutlet\"], [\"ngbDatepickerDayView\", \"\", 3, \"date\", \"currentMonth\", \"selected\", \"disabled\", \"focused\"], [\"class\", \"ngb-dp-month\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-month\"], [\"class\", \"ngb-dp-month-name\", 4, \"ngIf\"], [3, \"month\"], [1, \"ngb-dp-month-name\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\"]], template: function NgbDatepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_0_Template, 1, 5, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbDatepicker_ng_template_2_Template, 1, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(4, \"div\", 2);\n ɵngcc0.ɵɵtemplate(5, NgbDatepicker_ngb_datepicker_navigation_5_Template, 1, 7, \"ngb-datepicker-navigation\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 4, 5);\n ɵngcc0.ɵɵtemplate(8, NgbDatepicker_ng_template_8_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, NgbDatepicker_ng_template_9_Template, 0, 0, \"ng-template\", 6);\n } if (rf & 2) {\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigation !== \"none\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ngb-dp-months\", !ctx.contentTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.contentTemplate == null ? null : ctx.contentTemplate.templateRef) || _r2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.footerTemplate);\n } }, directives: function () { return [NgbDatepickerDayView, ɵngcc1.NgForOf, ɵngcc1.NgIf, NgbDatepickerMonth, NgbDatepickerNavigation, ɵngcc1.NgTemplateOutlet]; }, styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepicker.ctorParameters = () => [\n { type: NgbDatepickerService },\n { type: NgbCalendar },\n { type: NgbDatepickerI18n },\n { type: NgbDatepickerConfig },\n { type: ChangeDetectorRef },\n { type: ElementRef },\n { type: NgbDateAdapter },\n { type: NgZone }\n];\n__decorate([\n ViewChild('defaultDayTemplate', { static: true })\n], NgbDatepicker.prototype, \"_defaultDayTemplate\", void 0);\n__decorate([\n ViewChild('content', { static: true })\n], NgbDatepicker.prototype, \"_contentEl\", void 0);\n__decorate([\n ContentChild(NgbDatepickerContent, { static: true })\n], NgbDatepicker.prototype, \"contentTemplate\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"dayTemplate\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"dayTemplateData\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"displayMonths\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"firstDayOfWeek\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"footerTemplate\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"markDisabled\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"maxDate\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"minDate\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"navigation\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"outsideDays\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"showWeekdays\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"showWeekNumbers\", void 0);\n__decorate([\n Input()\n], NgbDatepicker.prototype, \"startDate\", void 0);\n__decorate([\n Output()\n], NgbDatepicker.prototype, \"navigate\", void 0);\n__decorate([\n Output()\n], NgbDatepicker.prototype, \"dateSelect\", void 0);\n__decorate([\n Output()\n], NgbDatepicker.prototype, \"select\", void 0);\n\nvar Key;\n(function (Key) {\n Key[Key[\"Tab\"] = 9] = \"Tab\";\n Key[Key[\"Enter\"] = 13] = \"Enter\";\n Key[Key[\"Escape\"] = 27] = \"Escape\";\n Key[Key[\"Space\"] = 32] = \"Space\";\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\n Key[Key[\"End\"] = 35] = \"End\";\n Key[Key[\"Home\"] = 36] = \"Home\";\n Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\n})(Key || (Key = {}));\n\n/**\n * A service that represents the keyboard navigation.\n *\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\n *\n * @since 5.2.0\n */\nlet NgbDatepickerKeyboardService = class NgbDatepickerKeyboardService {\n /**\n * Processes a keyboard event.\n */\n processKey(event, datepicker) {\n const { state, calendar } = datepicker;\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.PageUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.PageDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.End:\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n break;\n case Key.ArrowLeft:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.ArrowRight:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.Enter:\n case Key.Space:\n datepicker.focusSelect();\n break;\n default:\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }\n};\nNgbDatepickerKeyboardService.ɵfac = function NgbDatepickerKeyboardService_Factory(t) { return new (t || NgbDatepickerKeyboardService)(); };\nNgbDatepickerKeyboardService.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerKeyboardService_Factory() { return new NgbDatepickerKeyboardService(); }, token: NgbDatepickerKeyboardService, providedIn: \"root\" });\n\n/**\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\n * the `` when you want to customize months layout.\n *\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\n *\n * @since 5.3.0\n */\nlet NgbDatepickerMonth = class NgbDatepickerMonth {\n constructor(i18n, datepicker, _keyboardService, _service) {\n this.i18n = i18n;\n this.datepicker = datepicker;\n this._keyboardService = _keyboardService;\n this._service = _service;\n }\n /**\n * The first date of month to be rendered.\n *\n * This month must one of the months present in the\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n */\n set month(month) {\n this.viewModel = this._service.getMonth(month);\n }\n onKeyDown(event) { this._keyboardService.processKey(event, this.datepicker); }\n doSelect(day) {\n if (!day.context.disabled && !day.hidden) {\n this.datepicker.onDateSelect(day.date);\n }\n }\n};\nNgbDatepickerMonth.ɵfac = function NgbDatepickerMonth_Factory(t) { return new (t || NgbDatepickerMonth)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepicker), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerKeyboardService), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService)); };\nNgbDatepickerMonth.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerMonth, selectors: [[\"ngb-datepicker-month\"]], hostAttrs: [\"role\", \"grid\"], hostBindings: function NgbDatepickerMonth_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function NgbDatepickerMonth_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } }, inputs: { month: \"month\" }, decls: 2, vars: 2, consts: [[\"class\", \"ngb-dp-week ngb-dp-weekdays\", \"role\", \"row\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"row\", 1, \"ngb-dp-week\", \"ngb-dp-weekdays\"], [\"class\", \"ngb-dp-weekday ngb-dp-showweek\", 4, \"ngIf\"], [\"class\", \"ngb-dp-weekday small\", \"role\", \"columnheader\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-weekday\", \"ngb-dp-showweek\"], [\"role\", \"columnheader\", 1, \"ngb-dp-weekday\", \"small\"], [\"class\", \"ngb-dp-week\", \"role\", \"row\", 4, \"ngIf\"], [\"role\", \"row\", 1, \"ngb-dp-week\"], [\"class\", \"ngb-dp-week-number small text-muted\", 4, \"ngIf\"], [\"class\", \"ngb-dp-day\", \"role\", \"gridcell\", 3, \"disabled\", \"tabindex\", \"hidden\", \"ngb-dp-today\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-week-number\", \"small\", \"text-muted\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"tabindex\", \"click\"], [3, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbDatepickerMonth_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_div_0_Template, 3, 2, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.datepicker.showWeekdays);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.viewModel.weeks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"], encapsulation: 2 });\nNgbDatepickerMonth.ctorParameters = () => [\n { type: NgbDatepickerI18n },\n { type: NgbDatepicker },\n { type: NgbDatepickerKeyboardService },\n { type: NgbDatepickerService }\n];\n__decorate([\n Input()\n], NgbDatepickerMonth.prototype, \"month\", null);\n\nlet NgbDatepickerNavigation = class NgbDatepickerNavigation {\n constructor(i18n) {\n this.i18n = i18n;\n this.navigation = NavigationEvent;\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n onClickPrev(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.PREV);\n }\n onClickNext(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.NEXT);\n }\n};\nNgbDatepickerNavigation.ɵfac = function NgbDatepickerNavigation_Factory(t) { return new (t || NgbDatepickerNavigation)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerNavigation.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigation, selectors: [[\"ngb-datepicker-navigation\"]], inputs: { months: \"months\", date: \"date\", disabled: \"disabled\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, outputs: { navigate: \"navigate\", select: \"select\" }, decls: 8, vars: 4, consts: function () { let i18n_10; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_11 = goog.getMsg(\"Previous month\");\n i18n_10 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_11;\n }\n else {\n i18n_10 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13 = goog.getMsg(\"Previous month\");\n i18n_12 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13;\n }\n else {\n i18n_12 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_15 = goog.getMsg(\"Next month\");\n i18n_14 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_15;\n }\n else {\n i18n_14 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17 = goog.getMsg(\"Next month\");\n i18n_16 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17;\n }\n else {\n i18n_16 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } return [[1, \"ngb-dp-arrow\"], [\"type\", \"button\", \"aria-label\", i18n_10, \"title\", i18n_12, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-chevron\"], [\"class\", \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"ngb-dp-arrow\", \"right\"], [\"type\", \"button\", \"aria-label\", i18n_14, \"title\", i18n_16, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"ngb-dp-arrow\", 4, \"ngIf\"], [1, \"ngb-dp-month-name\"]]; }, template: function NgbDatepickerNavigation_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_1_listener($event) { return ctx.onClickPrev($event); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template, 1, 4, \"ngb-datepicker-navigation-select\", 3);\n ɵngcc0.ɵɵtemplate(4, NgbDatepickerNavigation_4_Template, 1, 1, null, 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5)(6, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_6_listener($event) { return ctx.onClickNext($event); });\n ɵngcc0.ɵɵelement(7, \"span\", 2);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.prevDisabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSelect);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.showSelect);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.nextDisabled);\n } }, directives: function () { return [ɵngcc1.NgIf, NgbDatepickerNavigationSelect, ɵngcc1.NgForOf]; }, styles: [\"ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepickerNavigation.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\n__decorate([\n Input()\n], NgbDatepickerNavigation.prototype, \"date\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigation.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigation.prototype, \"months\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigation.prototype, \"showSelect\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigation.prototype, \"prevDisabled\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigation.prototype, \"nextDisabled\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigation.prototype, \"selectBoxes\", void 0);\n__decorate([\n Output()\n], NgbDatepickerNavigation.prototype, \"navigate\", void 0);\n__decorate([\n Output()\n], NgbDatepickerNavigation.prototype, \"select\", void 0);\n\nconst isContainedIn = (element, array) => array ? array.some(item => item.contains(element)) : false;\nconst ɵ0 = isContainedIn;\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\nconst ɵ1 = matchesSelectorIfAny;\nconst ɵ2 = () => {\n const isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n const isAndroid = () => /Android/.test(navigator.userAgent);\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\n};\n// we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\nconst isMobile = (ɵ2)();\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\n// when tapping on the triggering element\nconst wrapAsyncForMobile = fn => isMobile ? () => setTimeout(() => fn(), 100) : fn;\nconst ɵ3 = wrapAsyncForMobile;\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(wrapAsyncForMobile(() => {\n const shouldCloseOnClick = (event) => {\n const element = event.target;\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n }\n else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n }\n else /* if (type === true) */ {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n };\n const escapes$ = fromEvent(document, 'keydown')\n .pipe(takeUntil(closed$), \n // tslint:disable-next-line:deprecation\n filter(e => e.which === Key.Escape), tap(e => e.preventDefault()));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n // because on 'mouseup' DOM nodes might be detached\n const mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\n const closeableClicks$ = fromEvent(document, 'mouseup')\n .pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(0), takeUntil(closed$));\n race([escapes$, closeableClicks$]).subscribe(() => zone.run(close));\n }));\n }\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nfunction getFocusableBoundaryElements(element) {\n const list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))\n .filter(el => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param zone Angular zone\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nconst ngbFocusTrap = (zone, element, stopFocusTrap$, refocusOnClick = false) => {\n zone.runOutsideAngular(() => {\n // last focused element\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown')\n .pipe(takeUntil(stopFocusTrap$), \n // tslint:disable:deprecation\n filter(e => e.which === Key.Tab), \n // tslint:enable:deprecation\n withLatestFrom(lastFocusedElement$))\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => arr[1]))\n .subscribe(lastFocusedElement => lastFocusedElement.focus());\n }\n });\n};\n\n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nclass Positioning {\n getAllStyles(element) { return window.getComputedStyle(element); }\n getStyle(element, prop) { return this.getAllStyles(element)[prop]; }\n isStaticPositioned(element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n }\n offsetParent(element) {\n let offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n }\n position(element, round = true) {\n let elPosition;\n let parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n const offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n }\n offset(element, round = true) {\n const elBcr = element.getBoundingClientRect();\n const viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n let elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n }\n /*\n Return false if the element to position is outside the viewport\n */\n positionElements(hostElement, targetElement, placement, appendToBody) {\n const [placementPrimary = 'top', placementSecondary = 'center'] = placement.split('-');\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n const targetElStyles = this.getAllStyles(targetElement);\n const marginTop = parseFloat(targetElStyles.marginTop);\n const marginBottom = parseFloat(targetElStyles.marginBottom);\n const marginLeft = parseFloat(targetElStyles.marginLeft);\n const marginRight = parseFloat(targetElStyles.marginRight);\n let topPosition = 0;\n let leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = `translate(${Math.round(leftPosition)}px, ${Math.round(topPosition)}px)`;\n // Check if the targetElement is inside the viewport\n const targetElBCR = targetElement.getBoundingClientRect();\n const html = document.documentElement;\n const windowHeight = window.innerHeight || html.clientHeight;\n const windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n }\n}\nconst placementSeparator = /\\s+/;\nconst positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n let placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n const allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n const classList = targetElement.classList;\n const addClassesToTarget = (targetPlacement) => {\n const [primary, secondary] = targetPlacement.split('-');\n const classes = [];\n if (baseClass) {\n classes.push(`${baseClass}-${primary}`);\n if (secondary) {\n classes.push(`${baseClass}-${primary}-${secondary}`);\n }\n classes.forEach((classname) => { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach((placementToRemove) => { classList.remove(`${baseClass}-${placementToRemove}`); });\n }\n // replace auto placement with other placements\n let hasAuto = placementVals.findIndex(val => val === 'auto');\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n const style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n let testPlacement;\n let isInViewport = false;\n for (testPlacement of placementVals) {\n let addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach((classname) => { classList.remove(classname); });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\nlet NgbDateParserFormatter = class NgbDateParserFormatter {\n};\nNgbDateParserFormatter.ɵfac = function NgbDateParserFormatter_Factory(t) { return new (t || NgbDateParserFormatter)(); };\nNgbDateParserFormatter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\nlet NgbDateISOParserFormatter = class NgbDateISOParserFormatter extends NgbDateParserFormatter {\n parse(value) {\n if (value) {\n const dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return { year: toInteger(dateParts[0]), month: null, day: null };\n }\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n }\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n }\n }\n return null;\n }\n format(date) {\n return date ?\n `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}` :\n '';\n }\n};\nNgbDateISOParserFormatter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateISOParserFormatter_BaseFactory; return function NgbDateISOParserFormatter_Factory(t) { return (ɵNgbDateISOParserFormatter_BaseFactory || (ɵNgbDateISOParserFormatter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter)))(t || NgbDateISOParserFormatter); }; }();\nNgbDateISOParserFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateISOParserFormatter, factory: function (t) { return NgbDateISOParserFormatter.ɵfac(t); } });\n\n/**\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepicker inputs used in the application.\n *\n * @since 5.2.0\n */\nlet NgbInputDatepickerConfig = class NgbInputDatepickerConfig extends NgbDatepickerConfig {\n constructor() {\n super(...arguments);\n this.autoClose = true;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n this.restoreFocus = true;\n }\n};\nNgbInputDatepickerConfig.ɵfac = /*@__PURE__*/ function () { let ɵNgbInputDatepickerConfig_BaseFactory; return function NgbInputDatepickerConfig_Factory(t) { return (ɵNgbInputDatepickerConfig_BaseFactory || (ɵNgbInputDatepickerConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbInputDatepickerConfig)))(t || NgbInputDatepickerConfig); }; }();\nNgbInputDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbInputDatepickerConfig_Factory() { return new NgbInputDatepickerConfig(); }, token: NgbInputDatepickerConfig, providedIn: \"root\" });\n\nconst NGB_DATEPICKER_VALUE_ACCESSOR$1 = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbInputDatepicker),\n multi: true\n};\nconst NGB_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NgbInputDatepicker),\n multi: true\n};\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nlet NgbInputDatepicker = class NgbInputDatepicker {\n constructor(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _calendar, _dateAdapter, _document, _changeDetector, config) {\n this._parserFormatter = _parserFormatter;\n this._elRef = _elRef;\n this._vcRef = _vcRef;\n this._renderer = _renderer;\n this._cfr = _cfr;\n this._ngZone = _ngZone;\n this._calendar = _calendar;\n this._dateAdapter = _dateAdapter;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._cRef = null;\n this._disabled = false;\n this._elWithFocus = null;\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * @since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = (_) => { };\n this._onTouched = () => { };\n this._validatorChange = () => { };\n ['autoClose', 'container', 'positionTarget', 'placement'].forEach(input => this[input] = config[input]);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => this._updatePopupPosition());\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value === '' || (value && value !== 'false');\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n }\n registerOnChange(fn) { this._onChange = fn; }\n registerOnTouched(fn) { this._onTouched = fn; }\n registerOnValidatorChange(fn) { this._validatorChange = fn; }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n validate(c) {\n const { value } = c;\n if (value === null || value === undefined) {\n return null;\n }\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!this._calendar.isValid(ngbDate)) {\n return { 'ngbDate': { invalid: value } };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return { 'ngbDate': { minDate: { minDate: this.minDate, actual: value } } };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return { 'ngbDate': { maxDate: { maxDate: this.maxDate, actual: value } } };\n }\n }\n writeValue(value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n }\n manualDateChange(value, updateView = false) {\n const inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n }\n isOpen() { return !!this._cRef; }\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n */\n open() {\n if (!this.isOpen()) {\n const cf = this._cfr.resolveComponentFactory(NgbDatepicker);\n this._cRef = this._vcRef.createComponent(cf);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef.instance);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange((selectedDate) => {\n this.writeValue(selectedDate);\n this._onChange(selectedDate);\n this._onTouched();\n });\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n this._elWithFocus = this._document.activeElement;\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n this._cRef.instance.focus();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n }\n /**\n * Closes the datepicker popup.\n */\n close() {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this.closed.emit();\n this._changeDetector.markForCheck();\n // restore focus\n let elementToFocus = this._elWithFocus;\n if (isString(this.restoreFocus)) {\n elementToFocus = this._document.querySelector(this.restoreFocus);\n }\n else if (this.restoreFocus !== undefined) {\n elementToFocus = this.restoreFocus;\n }\n // in IE document.activeElement can contain an object without 'focus()' sometimes\n if (elementToFocus && elementToFocus['focus']) {\n elementToFocus.focus();\n }\n else {\n this._document.body.focus();\n }\n }\n }\n /**\n * Toggles the datepicker popup.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n }\n onBlur() { this._onTouched(); }\n onFocus() { this._elWithFocus = this._elRef.nativeElement; }\n ngOnChanges(changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n if (this.isOpen()) {\n if (changes['minDate']) {\n this._cRef.instance.minDate = this._dateAdapter.toModel(changes.minDate.currentValue);\n }\n if (changes['maxDate']) {\n this._cRef.instance.maxDate = this._dateAdapter.toModel(changes.maxDate.currentValue);\n }\n this._cRef.instance.ngOnChanges(changes);\n }\n }\n }\n ngOnDestroy() {\n this.close();\n this._zoneSubscription.unsubscribe();\n }\n _applyDatepickerInputs(datepickerInstance) {\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekdays', 'showWeekNumbers']\n .forEach((optionName) => {\n if (this[optionName] !== undefined) {\n datepickerInstance[optionName] = this[optionName];\n }\n });\n datepickerInstance.startDate = this.startDate || this._model;\n }\n _applyPopupStyling(nativeElement) {\n this._renderer.addClass(nativeElement, 'dropdown-menu');\n this._renderer.addClass(nativeElement, 'show');\n if (this.container === 'body') {\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\n }\n }\n _subscribeForDatepickerOutputs(datepickerInstance) {\n datepickerInstance.navigate.subscribe(navigateEvent => this.navigate.emit(navigateEvent));\n datepickerInstance.dateSelect.subscribe(date => {\n this.dateSelect.emit(date);\n if (this.autoClose === true || this.autoClose === 'inside') {\n this.close();\n }\n });\n }\n _writeModelValue(model) {\n const value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n }\n _fromDateStruct(date) {\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n }\n _updatePopupPosition() {\n if (!this._cRef) {\n return;\n }\n let hostElement;\n if (isString(this.positionTarget)) {\n hostElement = this._document.querySelector(this.positionTarget);\n }\n else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n }\n else {\n hostElement = this._elRef.nativeElement;\n }\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\n }\n};\nNgbInputDatepicker.ɵfac = function NgbInputDatepicker_Factory(t) { return new (t || NgbInputDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDateParserFormatter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbInputDatepickerConfig)); };\nNgbInputDatepicker.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbInputDatepicker, selectors: [[\"input\", \"ngbDatepicker\", \"\"]], hostVars: 1, hostBindings: function NgbInputDatepicker_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function NgbInputDatepicker_input_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value); })(\"change\", function NgbInputDatepicker_change_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value, true); })(\"focus\", function NgbInputDatepicker_focus_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function NgbInputDatepicker_blur_HostBindingHandler() { return ctx.onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", autoClose: \"autoClose\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", placement: \"placement\", restoreFocus: \"restoreFocus\", showWeekdays: \"showWeekdays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", container: \"container\", positionTarget: \"positionTarget\" }, outputs: { dateSelect: \"dateSelect\", navigate: \"navigate\", closed: \"closed\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n NGB_DATEPICKER_VALUE_ACCESSOR$1, NGB_DATEPICKER_VALIDATOR,\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]), ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbInputDatepicker.ctorParameters = () => [\n { type: NgbDateParserFormatter },\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: NgZone },\n { type: NgbCalendar },\n { type: NgbDateAdapter },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: NgbInputDatepickerConfig }\n];\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"autoClose\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"dayTemplate\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"dayTemplateData\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"displayMonths\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"firstDayOfWeek\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"footerTemplate\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"markDisabled\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"minDate\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"maxDate\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"navigation\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"outsideDays\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"placement\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"restoreFocus\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"showWeekdays\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"showWeekNumbers\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"startDate\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"container\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"positionTarget\", void 0);\n__decorate([\n Output()\n], NgbInputDatepicker.prototype, \"dateSelect\", void 0);\n__decorate([\n Output()\n], NgbInputDatepicker.prototype, \"navigate\", void 0);\n__decorate([\n Output()\n], NgbInputDatepicker.prototype, \"closed\", void 0);\n__decorate([\n Input()\n], NgbInputDatepicker.prototype, \"disabled\", null);\nNgbInputDatepicker = __decorate([ __param(8, Inject(DOCUMENT))\n], NgbInputDatepicker);\n\nlet NgbDatepickerDayView = class NgbDatepickerDayView {\n constructor(i18n) {\n this.i18n = i18n;\n }\n isMuted() { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); }\n};\nNgbDatepickerDayView.ɵfac = function NgbDatepickerDayView_Factory(t) { return new (t || NgbDatepickerDayView)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerDayView.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerDayView, selectors: [[\"\", \"ngbDatepickerDayView\", \"\"]], hostAttrs: [1, \"btn-light\"], hostVars: 10, hostBindings: function NgbDatepickerDayView_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"bg-primary\", ctx.selected)(\"text-white\", ctx.selected)(\"text-muted\", ctx.isMuted())(\"outside\", ctx.isMuted())(\"active\", ctx.focused);\n } }, inputs: { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, attrs: _c18, decls: 1, vars: 1, template: function NgbDatepickerDayView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ctx.i18n.getDayNumerals(ctx.date));\n } }, styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepickerDayView.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\n__decorate([\n Input()\n], NgbDatepickerDayView.prototype, \"currentMonth\", void 0);\n__decorate([\n Input()\n], NgbDatepickerDayView.prototype, \"date\", void 0);\n__decorate([\n Input()\n], NgbDatepickerDayView.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgbDatepickerDayView.prototype, \"focused\", void 0);\n__decorate([\n Input()\n], NgbDatepickerDayView.prototype, \"selected\", void 0);\n\nlet NgbDatepickerNavigationSelect = class NgbDatepickerNavigationSelect {\n constructor(i18n, _renderer) {\n this.i18n = i18n;\n this._renderer = _renderer;\n this.select = new EventEmitter();\n this._month = -1;\n this._year = -1;\n }\n changeMonth(month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); }\n changeYear(year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); }\n ngAfterViewChecked() {\n if (this.date) {\n if (this.date.month !== this._month) {\n this._month = this.date.month;\n this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\n }\n if (this.date.year !== this._year) {\n this._year = this.date.year;\n this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\n }\n }\n }\n};\nNgbDatepickerNavigationSelect.ɵfac = function NgbDatepickerNavigationSelect_Factory(t) { return new (t || NgbDatepickerNavigationSelect)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgbDatepickerNavigationSelect.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigationSelect, selectors: [[\"ngb-datepicker-navigation-select\"]], viewQuery: function NgbDatepickerNavigationSelect_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c19, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c20, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthSelect = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearSelect = _t.first);\n } }, inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, outputs: { select: \"select\" }, decls: 6, vars: 4, consts: function () { let i18n_21; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_22 = goog.getMsg(\"Select month\");\n i18n_21 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_22;\n }\n else {\n i18n_21 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24 = goog.getMsg(\"Select month\");\n i18n_23 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24;\n }\n else {\n i18n_23 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_25; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_26 = goog.getMsg(\"Select year\");\n i18n_25 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_26;\n }\n else {\n i18n_25 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } let i18n_27; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28 = goog.getMsg(\"Select year\");\n i18n_27 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28;\n }\n else {\n i18n_27 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } return [[\"aria-label\", i18n_21, \"title\", i18n_23, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"month\", \"\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"aria-label\", i18n_25, \"title\", i18n_27, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"year\", \"\"], [3, \"value\"]]; }, template: function NgbDatepickerNavigationSelect_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"select\", 0, 1);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_0_listener($event) { return ctx.changeMonth($event.target.value); });\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerNavigationSelect_option_2_Template, 2, 3, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"select\", 3, 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_3_listener($event) { return ctx.changeYear($event.target.value); });\n ɵngcc0.ɵɵtemplate(5, NgbDatepickerNavigationSelect_option_5_Template, 2, 2, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.months);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.years);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc2.NgSelectOption, ɵngcc2.ɵNgSelectMultipleOption], styles: [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepickerNavigationSelect.ctorParameters = () => [\n { type: NgbDatepickerI18n },\n { type: Renderer2 }\n];\n__decorate([\n Input()\n], NgbDatepickerNavigationSelect.prototype, \"date\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigationSelect.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigationSelect.prototype, \"months\", void 0);\n__decorate([\n Input()\n], NgbDatepickerNavigationSelect.prototype, \"years\", void 0);\n__decorate([\n Output()\n], NgbDatepickerNavigationSelect.prototype, \"select\", void 0);\n__decorate([\n ViewChild('month', { static: true, read: ElementRef })\n], NgbDatepickerNavigationSelect.prototype, \"monthSelect\", void 0);\n__decorate([\n ViewChild('year', { static: true, read: ElementRef })\n], NgbDatepickerNavigationSelect.prototype, \"yearSelect\", void 0);\n\nlet NgbCalendarHijri = class NgbCalendarHijri extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return this.fromGregorian(new Date()); }\n isValid(date) {\n return date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\n !isNaN(this.toGregorian(date).getTime());\n }\n _setDay(date, day) {\n day = +day;\n let mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n }\n _setMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n }\n _setYear(date, year) {\n date.year = +year;\n return date;\n }\n};\nNgbCalendarHijri.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHijri_BaseFactory; return function NgbCalendarHijri_Factory(t) { return (ɵNgbCalendarHijri_BaseFactory || (ɵNgbCalendarHijri_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHijri)))(t || NgbCalendarHijri); }; }();\nNgbCalendarHijri.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHijri, factory: function (t) { return NgbCalendarHijri.ɵfac(t); } });\n\n/**\n * Checks if islamic year is a leap year\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n */\nfunction isGregorianLeapYear(gDate) {\n const year = gDate.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n */\nconst GREGORIAN_EPOCH = 1721425.5;\nconst ISLAMIC_EPOCH = 1948439.5;\nlet NgbCalendarIslamicCivil = class NgbCalendarIslamicCivil extends NgbCalendarHijri {\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n const gYear = gDate.getFullYear(), gMonth = gDate.getMonth(), gDay = gDate.getDate();\n let julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n const days = julianDay - ISLAMIC_EPOCH;\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n const wjd = Math.floor(julianDay - 0.5) + 0.5, depoch = wjd - GREGORIAN_EPOCH, quadricent = Math.floor(depoch / 146097), dqc = mod(depoch, 146097), cent = Math.floor(dqc / 36524), dcent = mod(dqc, 36524), quad = Math.floor(dcent / 1461), dquad = mod(dcent, 1461), yindex = Math.floor(dquad / 365);\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n const gYearStart = GREGORIAN_EPOCH + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400);\n const yearday = wjd - gYearStart;\n const tjd = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n const tjd2 = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) +\n 1);\n const day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n }\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n */\n getDaysPerMonth(month, year) {\n year = year + Math.floor(month / 13);\n month = ((month - 1) % 12) + 1;\n let length = 29 + month % 2;\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n }\n};\nNgbCalendarIslamicCivil.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicCivil_BaseFactory; return function NgbCalendarIslamicCivil_Factory(t) { return (ɵNgbCalendarIslamicCivil_BaseFactory || (ɵNgbCalendarIslamicCivil_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil)))(t || NgbCalendarIslamicCivil); }; }();\nNgbCalendarIslamicCivil.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicCivil, factory: function (t) { return NgbCalendarIslamicCivil.ɵfac(t); } });\n\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n */\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\nconst HIJRI_BEGIN = 1300;\nconst HIJRI_END = 1600;\nconst ONE_DAY = 1000 * 60 * 60 * 24;\nconst MONTH_LENGTH = [\n // 1300-1304\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n // 1305-1309\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n // 1310-1314\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n // 1315-1319\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n // 1320-1324\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n // 1325-1329\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n // 1330-1334\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n // 1335-1339\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n // 1340-1344\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n // 1345-1349\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n // 1350-1354\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n // 1355-1359\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n // 1360-1364\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n // 1365-1369\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n // 1370-1374\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n // 1375-1379\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n // 1380-1384\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n // 1385-1389\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n // 1390-1394\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n // 1395-1399\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n // 1400-1404\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n // 1405-1409\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n // 1410-1414\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n // 1415-1419\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n // 1420-1424\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n // 1425-1429\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n // 1430-1434\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n // 1435-1439\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n // 1440-1444\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n // 1445-1449\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n // 1450-1454\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n // 1455-1459\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n // 1460-1464\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n // 1465-1469\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n // 1470-1474\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n // 1475-1479\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n // 1480-1484\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n // 1485-1489\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n // 1490-1494\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n // 1495-1499\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n // 1500-1504\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n // 1505-1509\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n // 1510-1514\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n // 1515-1519\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n // 1520-1524\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n // 1525-1529\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n // 1530-1534\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n // 1535-1539\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n // 1540-1544\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n // 1545-1549\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n // 1550-1554\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n // 1555-1559\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n // 1560-1564\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n // 1565-1569\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n // 1570-1574\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n // 1575-1579\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n // 1580-1584\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n // 1585-1589\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n // 1590-1594\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n // 1595-1599\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n // 1600\n '001010011101'\n];\nfunction getDaysDiff(date1, date2) {\n // Ignores the time part in date1 and date2:\n const time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n const diff = Math.abs(time1 - time2);\n return Math.round(diff / ONE_DAY);\n}\nlet NgbCalendarIslamicUmalqura = class NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n let hDay = 1, hMonth = 0, hYear = 1300;\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n let year = 1300;\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (let j = 0; j < 12; j++) {\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n }\n else {\n return super.fromGregorian(gDate);\n }\n }\n /**\n * Converts the current Hijri date to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n let gDate = new Date(GREGORIAN_FIRST_DATE);\n let dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (let m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (let m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n }\n else {\n gDate = super.toGregorian(hDate);\n }\n return gDate;\n }\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n getDaysPerMonth(hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n const pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return super.getDaysPerMonth(hMonth, hYear);\n }\n};\nNgbCalendarIslamicUmalqura.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicUmalqura_BaseFactory; return function NgbCalendarIslamicUmalqura_Factory(t) { return (ɵNgbCalendarIslamicUmalqura_BaseFactory || (ɵNgbCalendarIslamicUmalqura_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura)))(t || NgbCalendarIslamicUmalqura); }; }();\nNgbCalendarIslamicUmalqura.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicUmalqura, factory: function (t) { return NgbCalendarIslamicUmalqura.ɵfac(t); } });\n\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n */\nfunction toGregorian(jalaliDate) {\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n let date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\nfunction fromGregorian(gdate) {\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n}\nfunction setJalaliDay(date, day) {\n let mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n const breaksLength = breaks.length;\n const gYear = jalaliYear + 621;\n let leapJ = -14;\n let jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n let jump;\n for (let i = 1; i < breaksLength; i += 1) {\n const jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod$1(jump, 33), 4);\n jp = jm;\n }\n let n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod$1(n, 33) + 3, 4);\n if (mod$1(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n let leap = mod$1(mod$1(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return { leap: leap, gy: gYear, march: march };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\nfunction julianToGregorian(julianDayNumber) {\n let j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n const i = div(mod$1(j, 1461), 4) * 5 + 308;\n const gDay = div(mod$1(i, 153), 5) + 1;\n const gMonth = mod$1(div(i, 153), 12) + 1;\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction gregorianToJulian(gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod$1(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\nfunction julianToJalali(julianDayNumber) {\n let gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n , jalaliYear = gy - 621, r = jalCal(jalaliYear), gregorianDay = gregorianToJulian(gy, 3, r.march), jalaliDay, jalaliMonth, numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod$1(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n }\n else {\n // The remaining months.\n numberOfDays -= 186;\n }\n }\n else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod$1(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n let r = jalCal(jYear);\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n */\nfunction getDaysPerMonth(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\n\nlet NgbCalendarPersian = class NgbCalendarPersian extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const startDate = toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return fromGregorian(new Date()); }\n isValid(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\n !isNaN(toGregorian(date).getTime());\n }\n};\nNgbCalendarPersian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarPersian_BaseFactory; return function NgbCalendarPersian_Factory(t) { return (ɵNgbCalendarPersian_BaseFactory || (ɵNgbCalendarPersian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarPersian)))(t || NgbCalendarPersian); }; }();\nNgbCalendarPersian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarPersian, factory: function (t) { return NgbCalendarPersian.ɵfac(t); } });\n\nconst PARTS_PER_HOUR = 1080;\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\nconst GREGORIAN_EPOCH$1 = 1721425.5;\nfunction isGregorianLeapYear$1(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nfunction numberOfFirstDayInYear(year) {\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n let dayOfWeek = dayNumber % 7; // 0 == Monday\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n }\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\nfunction getDaysInGregorianMonth(month, year) {\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear$1(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\nfunction isHebrewLeapYear(year) {\n let b = (year * 12 + 17) % 19;\n return b >= ((b < 0) ? -7 : 12);\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewMonth(month, year) {\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n let yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\n let leapYear = isHebrewLeapYear(year);\n let daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\nfunction getDayNumberInHebrewYear(date) {\n let numberOfDay = 0;\n for (let i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\nfunction setHebrewMonth(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n }\n else {\n date.month += val;\n val = 0;\n }\n }\n else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n }\n else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\nfunction setHebrewDay(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n }\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n }\n else {\n date.day += val;\n val = 0;\n }\n }\n else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n }\n else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\nfunction fromGregorian$1(gdate) {\n const date = new Date(gdate);\n const gYear = date.getFullYear(), gMonth = date.getMonth(), gDay = date.getDate();\n let julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n let daysSinceHebEpoch = julianDay - 347997;\n let monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n let hMonth = 1;\n let hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\nfunction toGregorian$1(hebrewDate) {\n const hYear = hebrewDate.year;\n const hMonth = hebrewDate.month;\n const hDay = hebrewDate.day;\n let days = numberOfFirstDayInYear(hYear);\n for (let i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n let after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n let gYear = 1970;\n let gMonth = 1;\n let gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear$1(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear) ? 366 : 365;\n gYear++;\n }\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n }\n else {\n gDay += diffDays;\n diffDays = 0;\n }\n }\n else {\n if (diffDays >= (isGregorianLeapYear$1(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear - 1) ? 366 : 365;\n gYear--;\n }\n else {\n if (gMonth > 1) {\n gMonth--;\n }\n else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n }\n else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n const hArray10_19 = [\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\n ];\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n const hArray100_900 = [\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\n '\\u05ea\\u05ea\\u05e7'\n ];\n const hArray1000_9000 = [\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\n ];\n const geresh = '\\u05f3', gershaim = '\\u05f4';\n let mem = 0;\n let result = [];\n let step = 0;\n while (numerals > 0) {\n let m = numerals % 10;\n if (step === 0) {\n mem = m;\n }\n else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n }\n else {\n result.unshift(hArray10_19[mem]);\n }\n }\n else if (step === 2) {\n result.unshift(hArray100_900[m]);\n }\n else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n }\n else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @since 3.2.0\n */\nlet NgbCalendarHebrew = class NgbCalendarHebrew extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths(year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n }\n getWeeksPerMonth() { return 6; }\n isValid(date) {\n let b = date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$1(date).getTime());\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = toGregorian$1(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n const date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n }\n getToday() { return fromGregorian$1(new Date()); }\n /**\n * @since 3.4.0\n */\n toGregorian(date) { return fromJSDate(toGregorian$1(date)); }\n /**\n * @since 3.4.0\n */\n fromGregorian(date) { return fromGregorian$1(toJSDate(date)); }\n};\nNgbCalendarHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHebrew_BaseFactory; return function NgbCalendarHebrew_Factory(t) { return (ɵNgbCalendarHebrew_BaseFactory || (ɵNgbCalendarHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHebrew)))(t || NgbCalendarHebrew); }; }();\nNgbCalendarHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHebrew, factory: function (t) { return NgbCalendarHebrew.ɵfac(t); } });\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nconst MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/**\n * @since 3.2.0\n */\nlet NgbDatepickerI18nHebrew = class NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n getMonthShortName(month, year) { return this.getMonthFullName(month, year); }\n getMonthFullName(month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] : MONTHS[month - 1];\n }\n getWeekdayShortName(weekday) { return WEEKDAYS[weekday - 1]; }\n getDayAriaLabel(date) {\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n }\n getDayNumerals(date) { return hebrewNumerals(date.day); }\n getWeekNumerals(weekNumber) { return hebrewNumerals(weekNumber); }\n getYearNumerals(year) { return hebrewNumerals(year); }\n};\nNgbDatepickerI18nHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbDatepickerI18nHebrew_BaseFactory; return function NgbDatepickerI18nHebrew_Factory(t) { return (ɵNgbDatepickerI18nHebrew_BaseFactory || (ɵNgbDatepickerI18nHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew)))(t || NgbDatepickerI18nHebrew); }; }();\nNgbDatepickerI18nHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nHebrew, factory: function (t) { return NgbDatepickerI18nHebrew.ɵfac(t); } });\n\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nlet NgbDateNativeAdapter = class NgbDateNativeAdapter extends NgbDateAdapter {\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n */\n fromModel(date) {\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\n }\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\n null;\n }\n _fromNativeDate(date) {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n }\n};\nNgbDateNativeAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeAdapter_BaseFactory; return function NgbDateNativeAdapter_Factory(t) { return (ɵNgbDateNativeAdapter_BaseFactory || (ɵNgbDateNativeAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeAdapter)))(t || NgbDateNativeAdapter); }; }();\nNgbDateNativeAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeAdapter, factory: function (t) { return NgbDateNativeAdapter.ɵfac(t); } });\n\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\nlet NgbDateNativeUTCAdapter = class NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n _fromNativeDate(date) {\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n }\n};\nNgbDateNativeUTCAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeUTCAdapter_BaseFactory; return function NgbDateNativeUTCAdapter_Factory(t) { return (ɵNgbDateNativeUTCAdapter_BaseFactory || (ɵNgbDateNativeUTCAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter)))(t || NgbDateNativeUTCAdapter); }; }();\nNgbDateNativeUTCAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeUTCAdapter, factory: function (t) { return NgbDateNativeUTCAdapter.ɵfac(t); } });\n\nlet NgbDatepickerModule = class NgbDatepickerModule {\n};\nNgbDatepickerModule.ɵfac = function NgbDatepickerModule_Factory(t) { return new (t || NgbDatepickerModule)(); };\nNgbDatepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDatepickerModule });\nNgbDatepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule]] });\n\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nlet NgbDropdownConfig = class NgbDropdownConfig {\n constructor() {\n this.autoClose = true;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n};\nNgbDropdownConfig.ɵfac = function NgbDropdownConfig_Factory(t) { return new (t || NgbDropdownConfig)(); };\nNgbDropdownConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n\nvar NgbDropdownToggle_1;\nlet NgbNavbar = class NgbNavbar {\n};\nNgbNavbar.ɵfac = function NgbNavbar_Factory(t) { return new (t || NgbNavbar)(); };\nNgbNavbar.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavbar, selectors: [[\"\", 8, \"navbar\"]] });\n/**\n * A directive you should put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * @since 4.1.0\n */\nlet NgbDropdownItem = class NgbDropdownItem {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this._disabled = false;\n }\n set disabled(value) {\n this._disabled = value === '' || value === true; // accept an empty attribute as true\n }\n get disabled() { return this._disabled; }\n};\nNgbDropdownItem.ɵfac = function NgbDropdownItem_Factory(t) { return new (t || NgbDropdownItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownItem, selectors: [[\"\", \"ngbDropdownItem\", \"\"]], hostAttrs: [1, \"dropdown-item\"], hostVars: 2, hostBindings: function NgbDropdownItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\" } });\nNgbDropdownItem.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], NgbDropdownItem.prototype, \"disabled\", null);\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nlet NgbDropdownMenu = class NgbDropdownMenu {\n constructor(dropdown) {\n this.dropdown = dropdown;\n this.placement = 'bottom';\n this.isOpen = false;\n }\n};\nNgbDropdownMenu.ɵfac = function NgbDropdownMenu_Factory(t) { return new (t || NgbDropdownMenu)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown))); };\nNgbDropdownMenu.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownMenu, selectors: [[\"\", \"ngbDropdownMenu\", \"\"]], contentQueries: function NgbDropdownMenu_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownItem, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.menuItems = _t);\n } }, hostVars: 5, hostBindings: function NgbDropdownMenu_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.ArrowUp\", function NgbDropdownMenu_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownMenu_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownMenu_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownMenu_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Enter\", function NgbDropdownMenu_keydown_Enter_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Space\", function NgbDropdownMenu_keydown_Space_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"x-placement\", ctx.placement);\n ɵngcc0.ɵɵclassProp(\"dropdown-menu\", true)(\"show\", ctx.dropdown.isOpen());\n } } });\nNgbDropdownMenu.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] }\n];\n__decorate([\n ContentChildren(NgbDropdownItem)\n], NgbDropdownMenu.prototype, \"menuItems\", void 0);\nNgbDropdownMenu = __decorate([ __param(0, Inject(forwardRef(() => NgbDropdown)))\n], NgbDropdownMenu);\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * @since 1.1.0\n */\nlet NgbDropdownAnchor = class NgbDropdownAnchor {\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this._elementRef = _elementRef;\n this.anchorEl = _elementRef.nativeElement;\n }\n getNativeElement() { return this._elementRef.nativeElement; }\n};\nNgbDropdownAnchor.ɵfac = function NgbDropdownAnchor_Factory(t) { return new (t || NgbDropdownAnchor)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownAnchor.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownAnchor, selectors: [[\"\", \"ngbDropdownAnchor\", \"\"]], hostAttrs: [\"aria-haspopup\", \"true\", 1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownAnchor_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } } });\nNgbDropdownAnchor.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\n { type: ElementRef }\n];\nNgbDropdownAnchor = __decorate([ __param(0, Inject(forwardRef(() => NgbDropdown)))\n], NgbDropdownAnchor);\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nlet NgbDropdownToggle = NgbDropdownToggle_1 = class NgbDropdownToggle extends NgbDropdownAnchor {\n constructor(dropdown, elementRef) {\n super(dropdown, elementRef);\n }\n};\nNgbDropdownToggle.ɵfac = function NgbDropdownToggle_Factory(t) { return new (t || NgbDropdownToggle)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownToggle, selectors: [[\"\", \"ngbDropdownToggle\", \"\"]], hostAttrs: [\"aria-haspopup\", \"true\", 1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbDropdownToggle_click_HostBindingHandler() { return ctx.dropdown.toggle(); })(\"keydown.ArrowUp\", function NgbDropdownToggle_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownToggle_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownToggle_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownToggle_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle_1) }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nNgbDropdownToggle.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\n { type: ElementRef }\n];\nNgbDropdownToggle = NgbDropdownToggle_1 = __decorate([ __param(0, Inject(forwardRef(() => NgbDropdown)))\n], NgbDropdownToggle);\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nlet NgbDropdown = class NgbDropdown {\n constructor(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n this._changeDetector = _changeDetector;\n this._document = _document;\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._closed$ = new Subject();\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n this.placement = config.placement;\n this.container = config.container;\n this.autoClose = config.autoClose;\n this.display = ngbNavbar ? 'static' : 'dynamic';\n this._zoneSubscription = _ngZone.onStable.subscribe(() => { this._positionMenu(); });\n }\n ngAfterContentInit() {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n });\n }\n ngOnChanges(changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.isFirstChange) {\n this._applyPlacementClasses();\n }\n }\n /**\n * Checks if the dropdown menu is open.\n */\n isOpen() { return this._open; }\n /**\n * Opens the dropdown menu.\n */\n open() {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n }\n }\n _setCloseHandlers() {\n const anchor = this._anchor;\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this._closed$, this._menu ? [this._menuElement.nativeElement] : [], anchor ? [anchor.getNativeElement()] : [], '.dropdown-item,.dropdown-divider');\n }\n /**\n * Closes the dropdown menu.\n */\n close() {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._closed$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the dropdown menu.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n ngOnDestroy() {\n this._resetContainer();\n this._closed$.next();\n this._zoneSubscription.unsubscribe();\n }\n onKeyDown(event) {\n // tslint:disable-next-line:deprecation\n const key = event.which;\n const itemElements = this._getMenuElements();\n let position = -1;\n let isEventFromItems = false;\n let itemElement = null;\n const isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach((item, index) => {\n if (item.contains(event.target)) {\n isEventFromItems = true;\n itemElement = item;\n }\n if (item === this._document.activeElement) {\n position = index;\n }\n });\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (isEventFromItems && (this.autoClose === true || this.autoClose === 'inside')) {\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n // So we have to register a one-time click handler that will fire after any user defined click handlers\n // to close the dropdown\n fromEvent(itemElement, 'click').pipe(take(1)).subscribe(() => this.close());\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || isEventFromItems) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n }\n _isDropup() { return this._elementRef.nativeElement.classList.contains('dropup'); }\n _isEventFromToggle(event) {\n return this._anchor.getNativeElement().contains(event.target);\n }\n _getMenuElements() {\n const menu = this._menu;\n if (menu == null) {\n return [];\n }\n return menu.menuItems.filter(item => !item.disabled).map(item => item.elementRef.nativeElement);\n }\n _positionMenu() {\n const menu = this._menu;\n if (this.isOpen() && menu) {\n this._applyPlacementClasses(this.display === 'dynamic' ?\n positionElements(this._anchor.anchorEl, this._bodyContainer || this._menuElement.nativeElement, this.placement, this.container === 'body') :\n this._getFirstPlacement(this.placement));\n }\n }\n _getFirstPlacement(placement) {\n return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\n }\n _resetContainer() {\n const renderer = this._renderer;\n const menuElement = this._menuElement;\n if (menuElement) {\n const dropdownElement = this._elementRef.nativeElement;\n const dropdownMenuElement = menuElement.nativeElement;\n renderer.appendChild(dropdownElement, dropdownMenuElement);\n renderer.removeStyle(dropdownMenuElement, 'position');\n renderer.removeStyle(dropdownMenuElement, 'transform');\n }\n if (this._bodyContainer) {\n renderer.removeChild(this._document.body, this._bodyContainer);\n this._bodyContainer = null;\n }\n }\n _applyContainer(container = null) {\n this._resetContainer();\n if (container === 'body') {\n const renderer = this._renderer;\n const dropdownMenuElement = this._menuElement.nativeElement;\n const bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\n // Override some styles to have the positionning working\n renderer.setStyle(bodyContainer, 'position', 'absolute');\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\n renderer.setStyle(bodyContainer, 'z-index', '1050');\n renderer.appendChild(bodyContainer, dropdownMenuElement);\n renderer.appendChild(this._document.body, bodyContainer);\n }\n }\n _applyPlacementClasses(placement) {\n const menu = this._menu;\n if (menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n const renderer = this._renderer;\n const dropdownElement = this._elementRef.nativeElement;\n // remove the current placement classes\n renderer.removeClass(dropdownElement, 'dropup');\n renderer.removeClass(dropdownElement, 'dropdown');\n menu.placement = this.display === 'static' ? null : placement;\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n renderer.addClass(dropdownElement, dropdownClass);\n const bodyContainer = this._bodyContainer;\n if (bodyContainer) {\n renderer.removeClass(bodyContainer, 'dropup');\n renderer.removeClass(bodyContainer, 'dropdown');\n renderer.addClass(bodyContainer, dropdownClass);\n }\n }\n }\n};\nNgbDropdown.ɵfac = function NgbDropdown_Factory(t) { return new (t || NgbDropdown)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbDropdownConfig), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(NgbNavbar, 8)); };\nNgbDropdown.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdown, selectors: [[\"\", \"ngbDropdown\", \"\"]], contentQueries: function NgbDropdown_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 5, ElementRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownAnchor, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menu = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menuElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._anchor = _t.first);\n } }, hostVars: 2, hostBindings: function NgbDropdown_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"show\", ctx.isOpen());\n } }, inputs: { _open: [\"open\", \"_open\"], placement: \"placement\", container: \"container\", autoClose: \"autoClose\", display: \"display\" }, outputs: { openChange: \"openChange\" }, exportAs: [\"ngbDropdown\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbDropdown.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: NgbDropdownConfig },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ElementRef },\n { type: Renderer2 },\n { type: NgbNavbar, decorators: [{ type: Optional }] }\n];\n__decorate([\n ContentChild(NgbDropdownMenu, { static: false })\n], NgbDropdown.prototype, \"_menu\", void 0);\n__decorate([\n ContentChild(NgbDropdownMenu, { read: ElementRef, static: false })\n], NgbDropdown.prototype, \"_menuElement\", void 0);\n__decorate([\n ContentChild(NgbDropdownAnchor, { static: false })\n], NgbDropdown.prototype, \"_anchor\", void 0);\n__decorate([\n Input()\n], NgbDropdown.prototype, \"autoClose\", void 0);\n__decorate([\n Input('open')\n], NgbDropdown.prototype, \"_open\", void 0);\n__decorate([\n Input()\n], NgbDropdown.prototype, \"placement\", void 0);\n__decorate([\n Input()\n], NgbDropdown.prototype, \"container\", void 0);\n__decorate([\n Input()\n], NgbDropdown.prototype, \"display\", void 0);\n__decorate([\n Output()\n], NgbDropdown.prototype, \"openChange\", void 0);\nNgbDropdown = __decorate([ __param(2, Inject(DOCUMENT)),\n __param(6, Optional())\n], NgbDropdown);\n\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\nlet NgbDropdownModule = class NgbDropdownModule {\n};\nNgbDropdownModule.ɵfac = function NgbDropdownModule_Factory(t) { return new (t || NgbDropdownModule)(); };\nNgbDropdownModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDropdownModule });\nNgbDropdownModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n*\n* @since 3.1.0\n*/\nlet NgbModalConfig = class NgbModalConfig {\n constructor() {\n this.backdrop = true;\n this.keyboard = true;\n }\n};\nNgbModalConfig.ɵfac = function NgbModalConfig_Factory(t) { return new (t || NgbModalConfig)(); };\nNgbModalConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(); }, token: NgbModalConfig, providedIn: \"root\" });\n\nclass ContentRef {\n constructor(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\nclass PopupService {\n constructor(_type, _injector, _viewContainerRef, _renderer, _componentFactoryResolver, _applicationRef) {\n this._type = _type;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._applicationRef = _applicationRef;\n }\n open(content, context) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), this._viewContainerRef.length, this._injector, this._contentRef.nodes);\n }\n return this._windowRef;\n }\n close() {\n if (this._windowRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n if (this._contentRef.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }\n }\n _getContentRef(content, context) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n else {\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n }\n}\n\nconst noop = () => { };\nconst ɵ0$1 = noop;\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n */\nlet ScrollBar = class ScrollBar {\n constructor(_document) {\n this._document = _document;\n }\n /**\n * To be called right before a potential vertical scrollbar would be removed:\n *\n * - if there was a scrollbar, adds some compensation padding to the body\n * to keep the same layout as when the scrollbar is there\n * - if there was none, there is nothing to do\n *\n * @return a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n compensate() {\n const width = this._getWidth();\n return !this._isPresent(width) ? noop : this._adjustBody(width);\n }\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @return a callback used to revert the padding to its previous value\n */\n _adjustBody(scrollbarWidth) {\n const body = this._document.body;\n const userSetPaddingStyle = body.style.paddingRight;\n const actualPadding = parseFloat(window.getComputedStyle(body)['padding-right']);\n body.style['padding-right'] = `${actualPadding + scrollbarWidth}px`;\n return () => body.style['padding-right'] = userSetPaddingStyle;\n }\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return true if scrollbar is present, false otherwise\n */\n _isPresent(scrollbarWidth) {\n const rect = this._document.body.getBoundingClientRect();\n const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\n const uncertainty = 0.1 * scrollbarWidth;\n return bodyToViewportGap >= scrollbarWidth - uncertainty;\n }\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return the width of a scrollbar on this page\n */\n _getWidth() {\n const measurer = this._document.createElement('div');\n measurer.className = 'modal-scrollbar-measure';\n const body = this._document.body;\n body.appendChild(measurer);\n const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n body.removeChild(measurer);\n return width;\n }\n};\nScrollBar.ɵfac = function ScrollBar_Factory(t) { return new (t || ScrollBar)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nScrollBar.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nScrollBar.ɵprov = ɵɵdefineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(ɵɵinject(DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\nScrollBar = __decorate([ __param(0, Inject(DOCUMENT))\n], ScrollBar);\n\nlet NgbModalBackdrop = class NgbModalBackdrop {\n};\nNgbModalBackdrop.ɵfac = function NgbModalBackdrop_Factory(t) { return new (t || NgbModalBackdrop)(); };\nNgbModalBackdrop.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalBackdrop, selectors: [[\"ngb-modal-backdrop\"]], hostAttrs: [2, \"z-index\", \"1050\"], hostVars: 2, hostBindings: function NgbModalBackdrop_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-backdrop fade show\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n } }, inputs: { backdropClass: \"backdropClass\" }, decls: 0, vars: 0, template: function NgbModalBackdrop_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n Input()\n], NgbModalBackdrop.prototype, \"backdropClass\", void 0);\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nclass NgbActiveModal {\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) { }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) { }\n}\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nclass NgbModalRef {\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n _windowCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => { });\n }\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._windowCmptRef) {\n this._resolve(result);\n this._removeModalElements();\n }\n }\n _dismiss(reason) {\n this._reject(reason);\n this._removeModalElements();\n }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(result => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeModalElements() {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n\nvar ModalDismissReasons;\n(function (ModalDismissReasons) {\n ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\n})(ModalDismissReasons || (ModalDismissReasons = {}));\n\nlet NgbModalWindow = class NgbModalWindow {\n constructor(_document, _elRef, _zone) {\n this._document = _document;\n this._elRef = _elRef;\n this._zone = _zone;\n this._closed$ = new Subject();\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n }\n dismiss(reason) { this.dismissEvent.emit(reason); }\n ngOnInit() { this._elWithFocus = this._document.activeElement; }\n ngAfterViewInit() {\n const { nativeElement } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown')\n .pipe(takeUntil(this._closed$), \n // tslint:disable-next-line:deprecation\n filter(e => e.which === Key.Escape && this.keyboard))\n .subscribe(event => requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n }\n }));\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n // inside the modal dialog and releasing it outside\n let preventClose = false;\n fromEvent(this._dialogEl.nativeElement, 'mousedown')\n .pipe(takeUntil(this._closed$), tap(() => preventClose = false), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({ target }) => nativeElement === target))\n .subscribe(() => { preventClose = true; });\n // We're listening to 'click' to dismiss modal on modal window click, except when:\n // 1. clicking on modal dialog itself\n // 2. closing was prevented by mousedown/up handlers\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n fromEvent(nativeElement, 'click').pipe(takeUntil(this._closed$)).subscribe(({ target }) => {\n if (this.backdrop === true && nativeElement === target && !preventClose) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n }\n preventClose = false;\n });\n });\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n ngOnDestroy() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n this._closed$.next();\n }\n};\nNgbModalWindow.ɵfac = function NgbModalWindow_Factory(t) { return new (t || NgbModalWindow)(ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbModalWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalWindow, selectors: [[\"ngb-modal-window\"]], viewQuery: function NgbModalWindow_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c29, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._dialogEl = _t.first);\n } }, hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"], hostVars: 4, hostBindings: function NgbModalWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy);\n ɵngcc0.ɵɵclassMap(\"modal fade show d-block\" + (ctx.windowClass ? \" \" + ctx.windowClass : \"\"));\n } }, inputs: { backdrop: \"backdrop\", keyboard: \"keyboard\", ariaLabelledBy: \"ariaLabelledBy\", centered: \"centered\", scrollable: \"scrollable\", size: \"size\", windowClass: \"windowClass\" }, outputs: { dismissEvent: \"dismiss\" }, ngContentSelectors: _c3, decls: 4, vars: 2, consts: [[\"role\", \"document\"], [\"dialog\", \"\"], [1, \"modal-content\"]], template: function NgbModalWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1)(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-dialog\" + (ctx.size ? \" modal-\" + ctx.size : \"\") + (ctx.centered ? \" modal-dialog-centered\" : \"\") + (ctx.scrollable ? \" modal-dialog-scrollable\" : \"\"));\n } }, styles: [\"ngb-modal-window .component-host-scrollable{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden}\"], encapsulation: 2 });\nNgbModalWindow.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ElementRef },\n { type: NgZone }\n];\n__decorate([\n ViewChild('dialog', { static: true })\n], NgbModalWindow.prototype, \"_dialogEl\", void 0);\n__decorate([\n Input()\n], NgbModalWindow.prototype, \"ariaLabelledBy\", void 0);\n__decorate([\n Input()\n], NgbModalWindow.prototype, \"backdrop\", void 0);\n__decorate([\n Input()\n], NgbModalWindow.prototype, \"centered\", void 0);\n__decorate([\n Input()\n], NgbModalWindow.prototype, \"keyboard\", void 0);\n__decorate([\n Input()\n], NgbModalWindow.prototype, \"scrollable\", void 0);\n__decorate([\n Input()\n], NgbModalWindow.prototype, \"size\", void 0);\n__decorate([\n Input()\n], NgbModalWindow.prototype, \"windowClass\", void 0);\n__decorate([\n Output('dismiss')\n], NgbModalWindow.prototype, \"dismissEvent\", void 0);\nNgbModalWindow = __decorate([ __param(0, Inject(DOCUMENT))\n], NgbModalWindow);\n\nlet NgbModalStack = class NgbModalStack {\n constructor(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._rendererFactory = _rendererFactory;\n this._ngZone = _ngZone;\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._backdropAttributes = ['backdropClass'];\n this._modalRefs = [];\n this._windowAttributes = ['ariaLabelledBy', 'backdrop', 'centered', 'keyboard', 'scrollable', 'size', 'windowClass'];\n this._windowCmpts = [];\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n ngbFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n open(moduleCFR, contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ?\n this._document.querySelector(options.container) :\n this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const revertPaddingForScrollBar = this._scrollBar.compensate();\n const removeBodyClass = () => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n if (!containerEl) {\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n const activeModal = new NgbActiveModal();\n const contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : null;\n let windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n ngbModalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result) => { ngbModalRef.close(result); };\n activeModal.dismiss = (reason) => { ngbModalRef.dismiss(reason); };\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n }\n return ngbModalRef;\n }\n dismissAll(reason) { this._modalRefs.forEach(ngbModalRef => ngbModalRef.dismiss(reason)); }\n hasOpenModals() { return this._modalRefs.length > 0; }\n _attachBackdrop(moduleCFR, containerEl) {\n let backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n let backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(moduleCFR, containerEl, contentRef) {\n let windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n let windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n _applyWindowOptions(windowInstance, options) {\n this._windowAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n _getContentRef(moduleCFR, contentInjector, content, activeModal, options) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\n }\n }\n _createFromTemplateRef(content, activeModal) {\n const context = {\n $implicit: activeModal,\n close(result) { activeModal.close(result); },\n dismiss(reason) { activeModal.dismiss(reason); }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(moduleCFR, contentInjector, content, context, options) {\n const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n const modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\n const componentRef = contentCmptFactory.create(modalContentInjector);\n const componentNativeEl = componentRef.location.nativeElement;\n if (options.scrollable) {\n componentNativeEl.classList.add('component-host-scrollable');\n }\n this._applicationRef.attachView(componentRef.hostView);\n // FIXME: we should here get rid of the component nativeElement\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _setAriaHidden(element) {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach(sibling => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n _revertAriaHidden() {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n _registerModalRef(ngbModalRef) {\n const unregisterModalRef = () => {\n const index = this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(ngbModalRef);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n _registerWindowCmpt(ngbWindowCmpt) {\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n};\nNgbModalStack.ɵfac = function NgbModalStack_Factory(t) { return new (t || NgbModalStack)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ScrollBar), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nNgbModalStack.ctorParameters = () => [\n { type: ApplicationRef },\n { type: Injector },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ScrollBar },\n { type: RendererFactory2 },\n { type: NgZone }\n];\nNgbModalStack.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT), ɵɵinject(ScrollBar), ɵɵinject(RendererFactory2), ɵɵinject(NgZone)); }, token: NgbModalStack, providedIn: \"root\" });\nNgbModalStack = __decorate([ __param(2, Inject(DOCUMENT))\n], NgbModalStack);\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nlet NgbModal = class NgbModal {\n constructor(_moduleCFR, _injector, _modalStack, _config) {\n this._moduleCFR = _moduleCFR;\n this._injector = _injector;\n this._modalStack = _modalStack;\n this._config = _config;\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n */\n open(content, options = {}) {\n const combinedOptions = Object.assign({}, this._config, options);\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n }\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * @since 3.1.0\n */\n dismissAll(reason) { this._modalStack.dismissAll(reason); }\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * @since 3.3.0\n */\n hasOpenModals() { return this._modalStack.hasOpenModals(); }\n};\nNgbModal.ɵfac = function NgbModal_Factory(t) { return new (t || NgbModal)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(NgbModalStack), ɵngcc0.ɵɵinject(NgbModalConfig)); };\nNgbModal.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: Injector },\n { type: NgbModalStack },\n { type: NgbModalConfig }\n];\nNgbModal.ɵprov = ɵɵdefineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(ɵɵinject(ComponentFactoryResolver), ɵɵinject(INJECTOR), ɵɵinject(NgbModalStack), ɵɵinject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\n\nlet NgbModalModule = class NgbModalModule {\n};\nNgbModalModule.ɵfac = function NgbModalModule_Factory(t) { return new (t || NgbModalModule)(); };\nNgbModalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModalModule });\nNgbModalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [NgbModal] });\n\n/**\n * A configuration service for the [`NgbNav`](#/components/nav/api#NgbNav) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the navs used in the application.\n *\n * @since 5.2.0\n */\nlet NgbNavConfig = class NgbNavConfig {\n constructor() {\n this.destroyOnHide = true;\n this.orientation = 'horizontal';\n this.roles = 'tablist';\n }\n};\nNgbNavConfig.ɵfac = function NgbNavConfig_Factory(t) { return new (t || NgbNavConfig)(); };\nNgbNavConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbNavConfig_Factory() { return new NgbNavConfig(); }, token: NgbNavConfig, providedIn: \"root\" });\n\nconst isValidNavId = (id) => isDefined(id) && id !== '';\nconst ɵ0$2 = isValidNavId;\nlet navCounter = 0;\n/**\n * This directive must be used to wrap content to be displayed in the nav.\n *\n * @since 5.2.0\n */\nlet NgbNavContent = class NgbNavContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbNavContent.ɵfac = function NgbNavContent_Factory(t) { return new (t || NgbNavContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbNavContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavContent, selectors: [[\"ng-template\", \"ngbNavContent\", \"\"]] });\nNgbNavContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * The directive used to group nav link and related nav content. As well as set nav identifier and some options.\n *\n * @since 5.2.0\n */\nlet NgbNavItem = class NgbNavItem {\n constructor(nav, elementRef) {\n this.elementRef = elementRef;\n /**\n * If `true`, the current nav item is disabled and can't be toggled by user.\n *\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n */\n this.disabled = false;\n // TODO: cf https://github.com/angular/angular/issues/30106\n this._nav = nav;\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.contentTpl = this.contentTpls.first;\n }\n ngOnInit() {\n if (!isDefined(this.domId)) {\n this.domId = `ngb-nav-${navCounter++}`;\n }\n }\n get active() { return this._nav.activeId === this.id; }\n get id() { return isValidNavId(this._id) ? this._id : this.domId; }\n get panelDomId() { return `${this.domId}-panel`; }\n isPanelInDom() {\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n }\n};\nNgbNavItem.ɵfac = function NgbNavItem_Factory(t) { return new (t || NgbNavItem)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbNav)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavItem, selectors: [[\"\", \"ngbNavItem\", \"\"]], contentQueries: function NgbNavItem_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, hostVars: 2, hostBindings: function NgbNavItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"nav-item\", true);\n } }, inputs: { disabled: \"disabled\", domId: \"domId\", destroyOnHide: \"destroyOnHide\", _id: [\"ngbNavItem\", \"_id\"] }, exportAs: [\"ngbNavItem\"] });\nNgbNavItem.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbNav),] }] },\n { type: ElementRef }\n];\n__decorate([\n Input()\n], NgbNavItem.prototype, \"destroyOnHide\", void 0);\n__decorate([\n Input()\n], NgbNavItem.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgbNavItem.prototype, \"domId\", void 0);\n__decorate([\n Input('ngbNavItem')\n], NgbNavItem.prototype, \"_id\", void 0);\n__decorate([\n ContentChildren(NgbNavContent, { descendants: false })\n], NgbNavItem.prototype, \"contentTpls\", void 0);\nNgbNavItem = __decorate([ __param(0, Inject(forwardRef(() => NgbNav)))\n], NgbNavItem);\n/**\n * A nav directive that helps with implementing tabbed navigation components.\n *\n * @since 5.2.0\n */\nlet NgbNav = class NgbNav {\n constructor(role, config, _cd) {\n this.role = role;\n this._cd = _cd;\n /**\n * The event emitted after the active nav changes\n * The payload of the event is the newly active nav id\n *\n * If you want to prevent nav change, you should use `(navChange)` event\n */\n this.activeIdChange = new EventEmitter();\n /**\n * The nav change event emitted right before the nav change happens on user click.\n *\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n *\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n */\n this.navChange = new EventEmitter();\n this.destroyOnHide = config.destroyOnHide;\n this.orientation = config.orientation;\n this.roles = config.roles;\n }\n click(item) {\n if (!item.disabled) {\n this._updateActiveId(item.id);\n }\n }\n /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n */\n select(id) { this._updateActiveId(id, false); }\n ngAfterContentInit() {\n if (!isDefined(this.activeId)) {\n const nextId = this.items.first ? this.items.first.id : null;\n if (isValidNavId(nextId)) {\n this._updateActiveId(nextId, false);\n this._cd.detectChanges();\n }\n }\n }\n _updateActiveId(nextId, emitNavChange = true) {\n if (this.activeId !== nextId) {\n let defaultPrevented = false;\n if (emitNavChange) {\n this.navChange.emit({ activeId: this.activeId, nextId, preventDefault: () => { defaultPrevented = true; } });\n }\n if (!defaultPrevented) {\n this.activeId = nextId;\n this.activeIdChange.emit(nextId);\n }\n }\n }\n};\nNgbNav.ɵfac = function NgbNav_Factory(t) { return new (t || NgbNav)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbNav.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNav, selectors: [[\"\", \"ngbNav\", \"\"]], contentQueries: function NgbNav_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavItem, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n } }, hostVars: 6, hostBindings: function NgbNav_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.orientation === \"vertical\" && ctx.roles === \"tablist\" ? \"vertical\" : undefined)(\"role\", ctx.role ? ctx.role : ctx.roles ? \"tablist\" : undefined);\n ɵngcc0.ɵɵclassProp(\"nav\", true)(\"flex-column\", ctx.orientation === \"vertical\");\n } }, inputs: { destroyOnHide: \"destroyOnHide\", orientation: \"orientation\", roles: \"roles\", activeId: \"activeId\" }, outputs: { activeIdChange: \"activeIdChange\", navChange: \"navChange\" }, exportAs: [\"ngbNav\"] });\nNgbNav.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\n { type: NgbNavConfig },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], NgbNav.prototype, \"activeId\", void 0);\n__decorate([\n Output()\n], NgbNav.prototype, \"activeIdChange\", void 0);\n__decorate([\n Input()\n], NgbNav.prototype, \"destroyOnHide\", void 0);\n__decorate([\n Input()\n], NgbNav.prototype, \"orientation\", void 0);\n__decorate([\n Input()\n], NgbNav.prototype, \"roles\", void 0);\n__decorate([\n ContentChildren(NgbNavItem)\n], NgbNav.prototype, \"items\", void 0);\n__decorate([\n Output()\n], NgbNav.prototype, \"navChange\", void 0);\nNgbNav = __decorate([ __param(0, Attribute('role'))\n], NgbNav);\n/**\n * A directive to put on the nav link.\n *\n * @since 5.2.0\n */\nlet NgbNavLink = class NgbNavLink {\n constructor(role, navItem, nav) {\n this.role = role;\n this.navItem = navItem;\n this.nav = nav;\n }\n hasNavItemClass() {\n // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\n return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\n }\n};\nNgbNavLink.ɵfac = function NgbNavLink_Factory(t) { return new (t || NgbNavLink)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavItem), ɵngcc0.ɵɵdirectiveInject(NgbNav)); };\nNgbNavLink.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavLink, selectors: [[\"a\", \"ngbNavLink\", \"\"]], hostAttrs: [\"href\", \"\"], hostVars: 14, hostBindings: function NgbNavLink_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbNavLink_click_HostBindingHandler($event) { ctx.nav.click(ctx.navItem); return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.navItem.domId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tab\" : undefined)(\"tabindex\", ctx.navItem.disabled ? -1 : undefined)(\"aria-controls\", ctx.navItem.isPanelInDom() ? ctx.navItem.panelDomId : null)(\"aria-selected\", ctx.navItem.active)(\"aria-disabled\", ctx.navItem.disabled);\n ɵngcc0.ɵɵclassProp(\"nav-link\", true)(\"nav-item\", ctx.hasNavItemClass())(\"active\", ctx.navItem.active)(\"disabled\", ctx.navItem.disabled);\n } } });\nNgbNavLink.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\n { type: NgbNavItem },\n { type: NgbNav }\n];\nNgbNavLink = __decorate([ __param(0, Attribute('role'))\n], NgbNavLink);\n\n/**\n * The outlet where currently active nav content will be displayed.\n *\n * @since 5.2.0\n */\nlet NgbNavOutlet = class NgbNavOutlet {\n};\nNgbNavOutlet.ɵfac = function NgbNavOutlet_Factory(t) { return new (t || NgbNavOutlet)(); };\nNgbNavOutlet.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbNavOutlet, selectors: [[\"\", \"ngbNavOutlet\", \"\"]], hostVars: 2, hostBindings: function NgbNavOutlet_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"tab-content\", true);\n } }, inputs: { paneRole: \"paneRole\", nav: [\"ngbNavOutlet\", \"nav\"] }, attrs: _c30, decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"tab-pane\", 3, \"id\", \"active\", 4, \"ngIf\"], [1, \"tab-pane\", 3, \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbNavOutlet_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_Template, 1, 1, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.nav.items);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input()\n], NgbNavOutlet.prototype, \"paneRole\", void 0);\n__decorate([\n Input('ngbNavOutlet')\n], NgbNavOutlet.prototype, \"nav\", void 0);\n\nconst NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet];\nlet NgbNavModule = class NgbNavModule {\n};\nNgbNavModule.ɵfac = function NgbNavModule_Factory(t) { return new (t || NgbNavModule)(); };\nNgbNavModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbNavModule });\nNgbNavModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nlet NgbPaginationConfig = class NgbPaginationConfig {\n constructor() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n};\nNgbPaginationConfig.ɵfac = function NgbPaginationConfig_Factory(t) { return new (t || NgbPaginationConfig)(); };\nNgbPaginationConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n\n/**\n * A directive to match the 'ellipsis' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationEllipsis = class NgbPaginationEllipsis {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPaginationEllipsis.ɵfac = function NgbPaginationEllipsis_Factory(t) { return new (t || NgbPaginationEllipsis)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationEllipsis.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationEllipsis, selectors: [[\"ng-template\", \"ngbPaginationEllipsis\", \"\"]] });\nNgbPaginationEllipsis.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive to match the 'first' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationFirst = class NgbPaginationFirst {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPaginationFirst.ɵfac = function NgbPaginationFirst_Factory(t) { return new (t || NgbPaginationFirst)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationFirst.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationFirst, selectors: [[\"ng-template\", \"ngbPaginationFirst\", \"\"]] });\nNgbPaginationFirst.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive to match the 'last' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationLast = class NgbPaginationLast {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPaginationLast.ɵfac = function NgbPaginationLast_Factory(t) { return new (t || NgbPaginationLast)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationLast.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationLast, selectors: [[\"ng-template\", \"ngbPaginationLast\", \"\"]] });\nNgbPaginationLast.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive to match the 'next' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationNext = class NgbPaginationNext {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPaginationNext.ɵfac = function NgbPaginationNext_Factory(t) { return new (t || NgbPaginationNext)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNext.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNext, selectors: [[\"ng-template\", \"ngbPaginationNext\", \"\"]] });\nNgbPaginationNext.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive to match the page 'number' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationNumber = class NgbPaginationNumber {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPaginationNumber.ɵfac = function NgbPaginationNumber_Factory(t) { return new (t || NgbPaginationNumber)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNumber.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNumber, selectors: [[\"ng-template\", \"ngbPaginationNumber\", \"\"]] });\nNgbPaginationNumber.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive to match the 'previous' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationPrevious = class NgbPaginationPrevious {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbPaginationPrevious.ɵfac = function NgbPaginationPrevious_Factory(t) { return new (t || NgbPaginationPrevious)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPrevious.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPrevious, selectors: [[\"ng-template\", \"ngbPaginationPrevious\", \"\"]] });\nNgbPaginationPrevious.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nlet NgbPagination = class NgbPagination {\n constructor(config) {\n this.pageCount = 0;\n this.pages = [];\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n this.disabled = config.disabled;\n this.boundaryLinks = config.boundaryLinks;\n this.directionLinks = config.directionLinks;\n this.ellipses = config.ellipses;\n this.maxSize = config.maxSize;\n this.pageSize = config.pageSize;\n this.rotate = config.rotate;\n this.size = config.size;\n }\n hasPrevious() { return this.page > 1; }\n hasNext() { return this.page < this.pageCount; }\n nextDisabled() { return !this.hasNext() || this.disabled; }\n previousDisabled() { return !this.hasPrevious() || this.disabled; }\n selectPage(pageNumber) { this._updatePages(pageNumber); }\n ngOnChanges(changes) { this._updatePages(this.page); }\n isEllipsis(pageNumber) { return pageNumber === -1; }\n /**\n * Appends ellipses and first/last page number to the displayed pages\n */\n _applyEllipses(start, end) {\n if (this.ellipses) {\n if (start > 0) {\n // The first page will always be included. If the displayed range\n // starts after the third page, then add ellipsis. But if the range\n // starts on the third page, then add the second page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (start > 2) {\n this.pages.unshift(-1);\n }\n else if (start === 2) {\n this.pages.unshift(2);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n // The last page will always be included. If the displayed range\n // ends before the third-last page, then add ellipsis. But if the range\n // ends on third-last page, then add the second-last page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (end < (this.pageCount - 2)) {\n this.pages.push(-1);\n }\n else if (end === (this.pageCount - 2)) {\n this.pages.push(this.pageCount - 1);\n }\n this.pages.push(this.pageCount);\n }\n }\n }\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n */\n _applyRotation() {\n let start = 0;\n let end = this.pageCount;\n let leftOffset = Math.floor(this.maxSize / 2);\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n }\n else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n }\n else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n }\n /**\n * Paginates page numbers based on maxSize items per page.\n */\n _applyPagination() {\n let page = Math.ceil(this.page / this.maxSize) - 1;\n let start = page * this.maxSize;\n let end = start + this.maxSize;\n return [start, end];\n }\n _setPageInRange(newPageNo) {\n const prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n }\n _updatePages(newPage) {\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (let i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n let start = 0;\n let end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n [start, end] = this._applyRotation();\n }\n else {\n [start, end] = this._applyPagination();\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n }\n};\nNgbPagination.ɵfac = function NgbPagination_Factory(t) { return new (t || NgbPagination)(ɵngcc0.ɵɵdirectiveInject(NgbPaginationConfig)); };\nNgbPagination.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPagination, selectors: [[\"ngb-pagination\"]], contentQueries: function NgbPagination_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationEllipsis, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationFirst, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationLast, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNext, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNumber, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPrevious, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplEllipsis = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplFirst = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplLast = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNext = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNumber = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPrevious = _t.first);\n } }, hostAttrs: [\"role\", \"navigation\"], inputs: { page: \"page\", disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", maxSize: \"maxSize\", pageSize: \"pageSize\", rotate: \"rotate\", size: \"size\", collectionSize: \"collectionSize\" }, outputs: { pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 18, vars: 7, consts: function () { let i18n_32; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__33 = goog.getMsg(\"\\u00AB\\u00AB\");\n i18n_32 = MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__33;\n }\n else {\n i18n_32 = $localize `:@@ngb.pagination.first␟656506dfd46380956a655f919f1498d018f75ca0␟6867721956102594380:««`;\n } let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__35 = goog.getMsg(\"\\u00AB\");\n i18n_34 = MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__35;\n }\n else {\n i18n_34 = $localize `:@@ngb.pagination.previous␟6e52b6ee77a4848d899dd21b591c6fd499e3aef3␟6479320895410098858:«`;\n } let i18n_36; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__37 = goog.getMsg(\"\\u00BB\");\n i18n_36 = MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__37;\n }\n else {\n i18n_36 = $localize `:@@ngb.pagination.next␟ba9cbb4ff311464308a3627e4f1c3345d9fe6d7d␟5458177150283468089:»`;\n } let i18n_38; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__39 = goog.getMsg(\"\\u00BB\\u00BB\");\n i18n_38 = MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__39;\n }\n else {\n i18n_38 = $localize `:@@ngb.pagination.last␟49f27a460bc97e7e00be5b37098bfa79884fc7d9␟5277020320267646988:»»`;\n } let i18n_40; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__41 = goog.getMsg(\"First\");\n i18n_40 = MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__41;\n }\n else {\n i18n_40 = $localize `:@@ngb.pagination.first-aria␟f2f852318759c6396b5d3d17031d53817d7b38cc␟2241508602425256033:First`;\n } let i18n_43; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__44 = goog.getMsg(\"Previous\");\n i18n_43 = MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__44;\n }\n else {\n i18n_43 = $localize `:@@ngb.pagination.previous-aria␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_48; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__49 = goog.getMsg(\"Next\");\n i18n_48 = MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__49;\n }\n else {\n i18n_48 = $localize `:@@ngb.pagination.next-aria␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } let i18n_50; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__51 = goog.getMsg(\"Last\");\n i18n_50 = MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__51;\n }\n else {\n i18n_50 = $localize `:@@ngb.pagination.last-aria␟5c729788ba138508aca1bec050b610f7bf81db3e␟4882268002141858767:Last`;\n } return [[\"first\", \"\"], [\"previous\", \"\"], [\"next\", \"\"], [\"last\", \"\"], [\"ellipsis\", \"\"], [\"defaultNumber\", \"\"], [\"class\", \"page-item\", 3, \"disabled\", 4, \"ngIf\"], [\"class\", \"page-item\", 3, \"active\", \"disabled\", 4, \"ngFor\", \"ngForOf\"], [\"aria-hidden\", \"true\"], i18n_32, i18n_34, i18n_36, i18n_38, [\"class\", \"sr-only\", 4, \"ngIf\"], [1, \"sr-only\"], [1, \"page-item\"], [\"aria-label\", i18n_40, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-label\", i18n_43, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"class\", \"page-link\", \"tabindex\", \"-1\", \"aria-disabled\", \"true\", 4, \"ngIf\"], [\"class\", \"page-link\", \"href\", \"\", 3, \"click\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"aria-disabled\", \"true\", 1, \"page-link\"], [\"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_48, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_50, \"href\", \"\", 1, \"page-link\", 3, \"click\"]]; }, template: function NgbPagination_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, NgbPagination_ng_template_4_Template, 2, 0, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(6, NgbPagination_ng_template_6_Template, 2, 0, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(8, NgbPagination_ng_template_8_Template, 1, 0, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(10, NgbPagination_ng_template_10_Template, 2, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(12, \"ul\");\n ɵngcc0.ɵɵtemplate(13, NgbPagination_li_13_Template, 3, 9, \"li\", 6);\n ɵngcc0.ɵɵtemplate(14, NgbPagination_li_14_Template, 3, 8, \"li\", 6);\n ɵngcc0.ɵɵtemplate(15, NgbPagination_li_15_Template, 3, 7, \"li\", 7);\n ɵngcc0.ɵɵtemplate(16, NgbPagination_li_16_Template, 3, 9, \"li\", 6);\n ɵngcc0.ɵɵtemplate(17, NgbPagination_li_17_Template, 3, 9, \"li\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(12);\n ɵngcc0.ɵɵclassMap(\"pagination\" + (ctx.size ? \" pagination-\" + ctx.size : \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.pages);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\nNgbPagination.ctorParameters = () => [\n { type: NgbPaginationConfig }\n];\n__decorate([\n ContentChild(NgbPaginationEllipsis, { static: false })\n], NgbPagination.prototype, \"tplEllipsis\", void 0);\n__decorate([\n ContentChild(NgbPaginationFirst, { static: false })\n], NgbPagination.prototype, \"tplFirst\", void 0);\n__decorate([\n ContentChild(NgbPaginationLast, { static: false })\n], NgbPagination.prototype, \"tplLast\", void 0);\n__decorate([\n ContentChild(NgbPaginationNext, { static: false })\n], NgbPagination.prototype, \"tplNext\", void 0);\n__decorate([\n ContentChild(NgbPaginationNumber, { static: false })\n], NgbPagination.prototype, \"tplNumber\", void 0);\n__decorate([\n ContentChild(NgbPaginationPrevious, { static: false })\n], NgbPagination.prototype, \"tplPrevious\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"boundaryLinks\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"directionLinks\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"ellipses\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"rotate\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"collectionSize\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"maxSize\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"page\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"pageSize\", void 0);\n__decorate([\n Output()\n], NgbPagination.prototype, \"pageChange\", void 0);\n__decorate([\n Input()\n], NgbPagination.prototype, \"size\", void 0);\n\nconst DIRECTIVES = [\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious\n];\nlet NgbPaginationModule = class NgbPaginationModule {\n};\nNgbPaginationModule.ɵfac = function NgbPaginationModule_Factory(t) { return new (t || NgbPaginationModule)(); };\nNgbPaginationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPaginationModule });\nNgbPaginationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nclass Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close;\n if (!close) {\n this.close = open;\n }\n }\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\n}\nconst DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focusin', 'focusout'],\n};\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\n let alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw 'Triggers parse error: only one manual trigger is allowed';\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n }\n return parsedTriggers;\n}\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n return new Observable(subscriber => {\n const listeners = [];\n const openFn = () => subscriber.next(true);\n const closeFn = () => subscriber.next(false);\n const toggleFn = () => subscriber.next(!isOpenedFn());\n triggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n }\n else {\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\n });\n}\nconst delayOrNoop = (time) => time > 0 ? delay(time) : (a) => a;\nconst ɵ0$3 = delayOrNoop;\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n return (input$) => {\n let pending = null;\n const filteredInput$ = input$.pipe(map(open => ({ open })), filter(event => {\n const currentlyOpen = isOpenedFn();\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n pending = event;\n return true;\n }\n if (pending && pending.open !== event.open) {\n pending = null;\n }\n return false;\n }), share());\n const delayedOpen$ = filteredInput$.pipe(filter(event => event.open), delayOrNoop(openDelay));\n const delayedClose$ = filteredInput$.pipe(filter(event => !event.open), delayOrNoop(closeDelay));\n return merge(delayedOpen$, delayedClose$)\n .pipe(filter(event => {\n if (event === pending) {\n pending = null;\n return event.open !== isOpenedFn();\n }\n return false;\n }), map(event => event.open));\n };\n}\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay = 0, closeDelay = 0) {\n const parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return () => { };\n }\n const subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n .subscribe(open => (open ? openFn() : closeFn()));\n return () => subscription.unsubscribe();\n}\n\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nlet NgbPopoverConfig = class NgbPopoverConfig {\n constructor() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n};\nNgbPopoverConfig.ɵfac = function NgbPopoverConfig_Factory(t) { return new (t || NgbPopoverConfig)(); };\nNgbPopoverConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(); }, token: NgbPopoverConfig, providedIn: \"root\" });\n\nlet nextId$3 = 0;\nlet NgbPopoverWindow = class NgbPopoverWindow {\n isTitleTemplate() { return this.title instanceof TemplateRef; }\n};\nNgbPopoverWindow.ɵfac = function NgbPopoverWindow_Factory(t) { return new (t || NgbPopoverWindow)(); };\nNgbPopoverWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPopoverWindow, selectors: [[\"ngb-popover-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 3, hostBindings: function NgbPopoverWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"popover\" + (ctx.popoverClass ? \" \" + ctx.popoverClass : \"\"));\n } }, inputs: { title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, ngContentSelectors: _c3, decls: 4, vars: 1, consts: [[1, \"arrow\"], [\"class\", \"popover-header\", 4, \"ngIf\"], [1, \"popover-body\"], [1, \"popover-header\"], [\"simpleTitle\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbPopoverWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_Template, 4, 2, \"h3\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title != null);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], NgbPopoverWindow.prototype, \"title\", void 0);\n__decorate([\n Input()\n], NgbPopoverWindow.prototype, \"id\", void 0);\n__decorate([\n Input()\n], NgbPopoverWindow.prototype, \"popoverClass\", void 0);\n__decorate([\n Input()\n], NgbPopoverWindow.prototype, \"context\", void 0);\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nlet NgbPopover = class NgbPopover {\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the popover is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbPopoverWindowId = `ngb-popover-${nextId$3++}`;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this.popoverClass = config.popoverClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-popover');\n }\n });\n }\n _isDisabled() {\n if (this.disablePopover) {\n return true;\n }\n if (!this.ngbPopover && !this.popoverTitle) {\n return true;\n }\n return false;\n }\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n */\n open(context) {\n if (!this._windowRef && !this._isDisabled()) {\n this._windowRef = this._popupService.open(this.ngbPopover, context);\n this._windowRef.instance.title = this.popoverTitle;\n this._windowRef.instance.context = context;\n this._windowRef.instance.popoverClass = this.popoverClass;\n this._windowRef.instance.id = this._ngbPopoverWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n }\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n close() {\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() { return this._windowRef != null; }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ ngbPopover, popoverTitle, disablePopover, popoverClass }) {\n if (popoverClass && this.isOpen()) {\n this._windowRef.instance.popoverClass = popoverClass.currentValue;\n }\n // close popover if title and content become empty, or disablePopover set to true\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n this.close();\n }\n }\n ngOnDestroy() {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n }\n};\nNgbPopover.ɵfac = function NgbPopover_Factory(t) { return new (t || NgbPopover)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbPopoverConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbPopover.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPopover, selectors: [[\"\", \"ngbPopover\", \"\"]], inputs: { autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disablePopover: \"disablePopover\", popoverClass: \"popoverClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbPopover: \"ngbPopover\", popoverTitle: \"popoverTitle\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbPopover\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbPopover.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbPopoverConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\n__decorate([\n Input()\n], NgbPopover.prototype, \"autoClose\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"ngbPopover\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"popoverTitle\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"placement\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"triggers\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"container\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"disablePopover\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"popoverClass\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"openDelay\", void 0);\n__decorate([\n Input()\n], NgbPopover.prototype, \"closeDelay\", void 0);\n__decorate([\n Output()\n], NgbPopover.prototype, \"shown\", void 0);\n__decorate([\n Output()\n], NgbPopover.prototype, \"hidden\", void 0);\nNgbPopover = __decorate([ __param(7, Inject(DOCUMENT))\n], NgbPopover);\n\nlet NgbPopoverModule = class NgbPopoverModule {\n};\nNgbPopoverModule.ɵfac = function NgbPopoverModule_Factory(t) { return new (t || NgbPopoverModule)(); };\nNgbPopoverModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPopoverModule });\nNgbPopoverModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nlet NgbProgressbarConfig = class NgbProgressbarConfig {\n constructor() {\n this.max = 100;\n this.animated = false;\n this.striped = false;\n this.showValue = false;\n }\n};\nNgbProgressbarConfig.ɵfac = function NgbProgressbarConfig_Factory(t) { return new (t || NgbProgressbarConfig)(); };\nNgbProgressbarConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nlet NgbProgressbar = class NgbProgressbar {\n constructor(config) {\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n this.max = config.max;\n this.animated = config.animated;\n this.striped = config.striped;\n this.textType = config.textType;\n this.type = config.type;\n this.showValue = config.showValue;\n this.height = config.height;\n }\n /**\n * The maximal value to be displayed in the progress bar.\n *\n * Should be a positive number. Will default to 100 otherwise.\n */\n set max(max) {\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\n }\n get max() { return this._max; }\n getValue() { return getValueInRange(this.value, this.max); }\n getPercentValue() { return 100 * this.getValue() / this.max; }\n};\nNgbProgressbar.ɵfac = function NgbProgressbar_Factory(t) { return new (t || NgbProgressbar)(ɵngcc0.ɵɵdirectiveInject(NgbProgressbarConfig)); };\nNgbProgressbar.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbProgressbar, selectors: [[\"ngb-progressbar\"]], inputs: { value: \"value\", max: \"max\", animated: \"animated\", striped: \"striped\", textType: \"textType\", type: \"type\", showValue: \"showValue\", height: \"height\" }, ngContentSelectors: _c3, decls: 4, vars: 13, consts: function () { let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__53 = goog.getMsg(\"{$interpolation}%\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_52 = MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__53;\n }\n else {\n i18n_52 = $localize `:@@ngb.progressbar.value␟04d611d19c117c60c9e14d0a04399a027184bc77␟5214781723415385277:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:%`;\n } return [[1, \"progress\"], [\"role\", \"progressbar\", \"aria-valuemin\", \"0\"], [4, \"ngIf\"], i18n_52]; }, template: function NgbProgressbar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, NgbProgressbar_span_2_Template, 2, 1, \"span\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate4(\"progress-bar\", ctx.type ? \" bg-\" + ctx.type : \"\", \"\", ctx.textType ? \" text-\" + ctx.textType : \"\", \"\\n \", ctx.animated ? \" progress-bar-animated\" : \"\", \"\", ctx.striped ? \" progress-bar-striped\" : \"\", \"\");\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.getPercentValue(), \"%\");\n ɵngcc0.ɵɵattribute(\"aria-valuenow\", ctx.getValue())(\"aria-valuemax\", ctx.max);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showValue);\n } }, directives: [ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\nNgbProgressbar.ctorParameters = () => [\n { type: NgbProgressbarConfig }\n];\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"max\", null);\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"animated\", void 0);\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"striped\", void 0);\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"showValue\", void 0);\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"textType\", void 0);\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"type\", void 0);\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"value\", void 0);\n__decorate([\n Input()\n], NgbProgressbar.prototype, \"height\", void 0);\n\nlet NgbProgressbarModule = class NgbProgressbarModule {\n};\nNgbProgressbarModule.ɵfac = function NgbProgressbarModule_Factory(t) { return new (t || NgbProgressbarModule)(); };\nNgbProgressbarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbProgressbarModule });\nNgbProgressbarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nlet NgbRatingConfig = class NgbRatingConfig {\n constructor() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n }\n};\nNgbRatingConfig.ɵfac = function NgbRatingConfig_Factory(t) { return new (t || NgbRatingConfig)(); };\nNgbRatingConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n\nconst NGB_RATING_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbRating),\n multi: true\n};\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nlet NgbRating = class NgbRating {\n constructor(config, _changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this.contexts = [];\n this.disabled = false;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the user selects a new rating.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.max = config.max;\n this.readonly = config.readonly;\n }\n ariaValueText() { return `${this.nextRate} out of ${this.max}`; }\n enter(value) {\n if (!this.readonly && !this.disabled) {\n this._updateState(value);\n }\n this.hover.emit(value);\n }\n handleBlur() { this.onTouched(); }\n handleClick(value) {\n if (!this.readonly && !this.disabled) {\n this.update(this.resettable && this.rate === value ? 0 : value);\n }\n }\n handleKeyDown(event) {\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n }\n ngOnChanges(changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n }\n ngOnInit() {\n this.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k }));\n this._updateState(this.rate);\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n reset() {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n update(value, internalChange = true) {\n const newRate = getValueInRange(value, this.max, 0);\n if (!this.readonly && !this.disabled && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n }\n writeValue(value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n }\n _getFillValue(index) {\n const diff = this.nextRate - index;\n if (diff >= 1) {\n return 100;\n }\n if (diff < 1 && diff > 0) {\n return parseInt((diff * 100).toFixed(2), 10);\n }\n return 0;\n }\n _updateState(nextValue) {\n this.nextRate = nextValue;\n this.contexts.forEach((context, index) => context.fill = this._getFillValue(index));\n }\n};\nNgbRating.ɵfac = function NgbRating_Factory(t) { return new (t || NgbRating)(ɵngcc0.ɵɵdirectiveInject(NgbRatingConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRating.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbRating, selectors: [[\"ngb-rating\"]], contentQueries: function NgbRating_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.starTemplateFromContent = _t.first);\n } }, hostAttrs: [\"role\", \"slider\", \"aria-valuemin\", \"0\", 1, \"d-inline-flex\"], hostVars: 5, hostBindings: function NgbRating_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbRating_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbRating_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); })(\"mouseleave\", function NgbRating_mouseleave_HostBindingHandler() { return ctx.reset(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"tabindex\", ctx.disabled ? -1 : 0);\n ɵngcc0.ɵɵattribute(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.nextRate)(\"aria-valuetext\", ctx.ariaValueText())(\"aria-disabled\", ctx.readonly ? true : null);\n } }, inputs: { max: \"max\", readonly: \"readonly\", rate: \"rate\", resettable: \"resettable\", starTemplate: \"starTemplate\" }, outputs: { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_RATING_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [[\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"sr-only\"], [3, \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbRating_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbRating_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbRating_ng_template_2_Template, 4, 5, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.contexts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\nNgbRating.ctorParameters = () => [\n { type: NgbRatingConfig },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], NgbRating.prototype, \"max\", void 0);\n__decorate([\n Input()\n], NgbRating.prototype, \"rate\", void 0);\n__decorate([\n Input()\n], NgbRating.prototype, \"readonly\", void 0);\n__decorate([\n Input()\n], NgbRating.prototype, \"resettable\", void 0);\n__decorate([\n Input()\n], NgbRating.prototype, \"starTemplate\", void 0);\n__decorate([\n ContentChild(TemplateRef, { static: false })\n], NgbRating.prototype, \"starTemplateFromContent\", void 0);\n__decorate([\n Output()\n], NgbRating.prototype, \"hover\", void 0);\n__decorate([\n Output()\n], NgbRating.prototype, \"leave\", void 0);\n__decorate([\n Output()\n], NgbRating.prototype, \"rateChange\", void 0);\n\nlet NgbRatingModule = class NgbRatingModule {\n};\nNgbRatingModule.ɵfac = function NgbRatingModule_Factory(t) { return new (t || NgbRatingModule)(); };\nNgbRatingModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbRatingModule });\nNgbRatingModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * A configuration service for the [`NgbTabset`](#/components/tabset/api#NgbTabset) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tabsets used in the application.\n *\n * @deprecated 6.0.0 Please use NgbNav instead\n */\nlet NgbTabsetConfig = class NgbTabsetConfig {\n constructor() {\n this.justify = 'start';\n this.orientation = 'horizontal';\n this.type = 'tabs';\n }\n};\nNgbTabsetConfig.ɵfac = function NgbTabsetConfig_Factory(t) { return new (t || NgbTabsetConfig)(); };\nNgbTabsetConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTabsetConfig_Factory() { return new NgbTabsetConfig(); }, token: NgbTabsetConfig, providedIn: \"root\" });\n\nlet nextId$4 = 0;\n/**\n * A directive to wrap tab titles that need to contain HTML markup or other directives.\n *\n * Alternatively you could use the `NgbTab.title` input for string titles.\n *\n * @deprecated 6.0.0 Please use NgbNav instead\n */\nlet NgbTabTitle = class NgbTabTitle {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbTabTitle.ɵfac = function NgbTabTitle_Factory(t) { return new (t || NgbTabTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbTabTitle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTabTitle, selectors: [[\"ng-template\", \"ngbTabTitle\", \"\"]] });\nNgbTabTitle.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive to wrap content to be displayed in a tab.\n *\n * @deprecated 6.0.0 Please use NgbNav instead\n */\nlet NgbTabContent = class NgbTabContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n};\nNgbTabContent.ɵfac = function NgbTabContent_Factory(t) { return new (t || NgbTabContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbTabContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTabContent, selectors: [[\"ng-template\", \"ngbTabContent\", \"\"]] });\nNgbTabContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n/**\n * A directive representing an individual tab.\n *\n * @deprecated 6.0.0 Please use NgbNav instead\n */\nlet NgbTab = class NgbTab {\n constructor() {\n /**\n * The tab identifier.\n *\n * Must be unique for the entire document for proper accessibility support.\n */\n this.id = `ngb-tab-${nextId$4++}`;\n /**\n * If `true`, the current tab is disabled and can't be toggled.\n */\n this.disabled = false;\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n};\nNgbTab.ɵfac = function NgbTab_Factory(t) { return new (t || NgbTab)(); };\nNgbTab.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTab, selectors: [[\"ngb-tab\"]], contentQueries: function NgbTab_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbTabTitle, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbTabContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, inputs: { id: \"id\", disabled: \"disabled\", title: \"title\" } });\n__decorate([\n Input()\n], NgbTab.prototype, \"id\", void 0);\n__decorate([\n Input()\n], NgbTab.prototype, \"title\", void 0);\n__decorate([\n Input()\n], NgbTab.prototype, \"disabled\", void 0);\n__decorate([\n ContentChildren(NgbTabTitle, { descendants: false })\n], NgbTab.prototype, \"titleTpls\", void 0);\n__decorate([\n ContentChildren(NgbTabContent, { descendants: false })\n], NgbTab.prototype, \"contentTpls\", void 0);\n/**\n * A component that makes it easy to create tabbed interface.\n *\n * @deprecated 6.0.0 Please use NgbNav instead\n */\nlet NgbTabset = class NgbTabset {\n constructor(config) {\n /**\n * If `true`, non-visible tabs content will be removed from DOM. Otherwise it will just be hidden.\n */\n this.destroyOnHide = true;\n /**\n * A tab change event emitted right before the tab change happens.\n *\n * See [`NgbTabChangeEvent`](#/components/tabset/api#NgbTabChangeEvent) for payload details.\n */\n this.tabChange = new EventEmitter();\n this.type = config.type;\n this.justify = config.justify;\n this.orientation = config.orientation;\n }\n /**\n * The horizontal alignment of the tabs with flexbox utilities.\n */\n set justify(className) {\n if (className === 'fill' || className === 'justified') {\n this.justifyClass = `nav-${className}`;\n }\n else {\n this.justifyClass = `justify-content-${className}`;\n }\n }\n /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n */\n select(tabId) {\n let selectedTab = this._getTabById(tabId);\n if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {\n let defaultPrevented = false;\n this.tabChange.emit({ activeId: this.activeId, nextId: selectedTab.id, preventDefault: () => { defaultPrevented = true; } });\n if (!defaultPrevented) {\n this.activeId = selectedTab.id;\n }\n }\n }\n ngAfterContentChecked() {\n // auto-correct activeId that might have been set incorrectly as input\n let activeTab = this._getTabById(this.activeId);\n this.activeId = activeTab ? activeTab.id : (this.tabs.length ? this.tabs.first.id : null);\n }\n _getTabById(id) {\n let tabsWithId = this.tabs.filter(tab => tab.id === id);\n return tabsWithId.length ? tabsWithId[0] : null;\n }\n};\nNgbTabset.ɵfac = function NgbTabset_Factory(t) { return new (t || NgbTabset)(ɵngcc0.ɵɵdirectiveInject(NgbTabsetConfig)); };\nNgbTabset.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTabset, selectors: [[\"ngb-tabset\"]], contentQueries: function NgbTabset_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbTab, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tabs = _t);\n } }, inputs: { destroyOnHide: \"destroyOnHide\", type: \"type\", justify: \"justify\", orientation: \"orientation\", activeId: \"activeId\" }, outputs: { tabChange: \"tabChange\" }, exportAs: [\"ngbTabset\"], decls: 4, vars: 4, consts: [[\"role\", \"tablist\"], [\"class\", \"nav-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"tab-content\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"nav-item\"], [\"href\", \"\", \"role\", \"tab\", 1, \"nav-link\", 3, \"id\", \"click\"], [3, \"ngTemplateOutlet\"], [\"role\", \"tabpanel\", 3, \"class\", \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"id\"]], template: function NgbTabset_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbTabset_li_1_Template, 4, 11, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbTabset_ng_template_3_Template, 1, 1, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"nav nav-\" + ctx.type + (ctx.orientation == \"horizontal\" ? \" \" + ctx.justifyClass : \" flex-column\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.tabs);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.tabs);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgIf], encapsulation: 2 });\nNgbTabset.ctorParameters = () => [\n { type: NgbTabsetConfig }\n];\n__decorate([\n ContentChildren(NgbTab)\n], NgbTabset.prototype, \"tabs\", void 0);\n__decorate([\n Input()\n], NgbTabset.prototype, \"activeId\", void 0);\n__decorate([\n Input()\n], NgbTabset.prototype, \"destroyOnHide\", void 0);\n__decorate([\n Input()\n], NgbTabset.prototype, \"justify\", null);\n__decorate([\n Input()\n], NgbTabset.prototype, \"orientation\", void 0);\n__decorate([\n Input()\n], NgbTabset.prototype, \"type\", void 0);\n__decorate([\n Output()\n], NgbTabset.prototype, \"tabChange\", void 0);\n\nconst NGB_TABSET_DIRECTIVES = [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle];\n/**\n * @deprecated 6.0.0 Please use NgbNavModule instead\n */\nlet NgbTabsetModule = class NgbTabsetModule {\n};\nNgbTabsetModule.ɵfac = function NgbTabsetModule_Factory(t) { return new (t || NgbTabsetModule)(); };\nNgbTabsetModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTabsetModule });\nNgbTabsetModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nclass NgbTime {\n constructor(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n changeHour(step = 1) { this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step); }\n updateHour(hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n }\n else {\n this.hour = NaN;\n }\n }\n changeMinute(step = 1) { this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step); }\n updateMinute(minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n }\n else {\n this.minute = NaN;\n }\n }\n changeSecond(step = 1) { this.updateSecond((isNaN(this.second) ? 0 : this.second) + step); }\n updateSecond(second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + second % 60 : second % 60;\n this.changeMinute(Math.floor(second / 60));\n }\n else {\n this.second = NaN;\n }\n }\n isValid(checkSecs = true) {\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n }\n toString() { return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`; }\n}\n\n/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nlet NgbTimepickerConfig = class NgbTimepickerConfig {\n constructor() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n};\nNgbTimepickerConfig.ɵfac = function NgbTimepickerConfig_Factory(t) { return new (t || NgbTimepickerConfig)(); };\nNgbTimepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * @since 2.2.0\n */\nlet NgbTimeAdapter = class NgbTimeAdapter {\n};\nNgbTimeAdapter.ɵfac = function NgbTimeAdapter_Factory(t) { return new (t || NgbTimeAdapter)(); };\nNgbTimeAdapter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\nlet NgbTimeStructAdapter = class NgbTimeStructAdapter extends NgbTimeAdapter {\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n fromModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n toModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n};\nNgbTimeStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbTimeStructAdapter_BaseFactory; return function NgbTimeStructAdapter_Factory(t) { return (ɵNgbTimeStructAdapter_BaseFactory || (ɵNgbTimeStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbTimeStructAdapter)))(t || NgbTimeStructAdapter); }; }();\nNgbTimeStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimeStructAdapter, factory: function (t) { return NgbTimeStructAdapter.ɵfac(t); } });\n\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\n return new NgbTimepickerI18nDefault(locale);\n}\n/**\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\n * as explained in the Angular i18n guide.\n */\nlet NgbTimepickerI18n = class NgbTimepickerI18n {\n};\nNgbTimepickerI18n.ɵfac = function NgbTimepickerI18n_Factory(t) { return new (t || NgbTimepickerI18n)(); };\nNgbTimepickerI18n.ɵprov = ɵɵdefineInjectable({ factory: function NgbTimepickerI18n_Factory() { return NGB_TIMEPICKER_I18N_FACTORY(ɵɵinject(LOCALE_ID)); }, token: NgbTimepickerI18n, providedIn: \"root\" });\nlet NgbTimepickerI18nDefault = class NgbTimepickerI18nDefault extends NgbTimepickerI18n {\n constructor(locale) {\n super();\n this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\n }\n getMorningPeriod() { return this._periods[0]; }\n getAfternoonPeriod() { return this._periods[1]; }\n};\nNgbTimepickerI18nDefault.ɵfac = function NgbTimepickerI18nDefault_Factory(t) { return new (t || NgbTimepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbTimepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimepickerI18nDefault, factory: function (t) { return NgbTimepickerI18nDefault.ɵfac(t); } });\nNgbTimepickerI18nDefault.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nNgbTimepickerI18nDefault = __decorate([ __param(0, Inject(LOCALE_ID))\n], NgbTimepickerI18nDefault);\n\nconst FILTER_REGEX = /[^0-9]/g;\nconst NGB_TIMEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbTimepicker),\n multi: true\n};\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nlet NgbTimepicker = class NgbTimepicker {\n constructor(_config, _ngbTimeAdapter, _cd, i18n) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.i18n = i18n;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n */\n set hourStep(step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n }\n get hourStep() { return this._hourStep; }\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n */\n set minuteStep(step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n }\n get minuteStep() { return this._minuteStep; }\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n */\n set secondStep(step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n }\n get secondStep() { return this._secondStep; }\n writeValue(value) {\n const structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n changeHour(step) {\n this.model.changeHour(step);\n this.propagateModelChange();\n }\n changeMinute(step) {\n this.model.changeMinute(step);\n this.propagateModelChange();\n }\n changeSecond(step) {\n this.model.changeSecond(step);\n this.propagateModelChange();\n }\n updateHour(newVal) {\n const isPM = this.model.hour >= 12;\n const enteredHour = toInteger(newVal);\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n this.model.updateHour(enteredHour + 12);\n }\n else {\n this.model.updateHour(enteredHour);\n }\n this.propagateModelChange();\n }\n updateMinute(newVal) {\n this.model.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n }\n updateSecond(newVal) {\n this.model.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n }\n toggleMeridian() {\n if (this.meridian) {\n this.changeHour(12);\n }\n }\n formatInput(input) { input.value = input.value.replace(FILTER_REGEX, ''); }\n formatHour(value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n }\n else {\n return padNumber(value % 24);\n }\n }\n else {\n return padNumber(NaN);\n }\n }\n formatMinSec(value) { return padNumber(value); }\n get isSmallSize() { return this.size === 'small'; }\n get isLargeSize() { return this.size === 'large'; }\n ngOnChanges(changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n }\n propagateModelChange(touched = true) {\n if (touched) {\n this.onTouched();\n }\n if (this.model.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n }\n else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n }\n};\nNgbTimepicker.ɵfac = function NgbTimepicker_Factory(t) { return new (t || NgbTimepicker)(ɵngcc0.ɵɵdirectiveInject(NgbTimepickerConfig), ɵngcc0.ɵɵdirectiveInject(NgbTimeAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbTimepickerI18n)); };\nNgbTimepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTimepicker, selectors: [[\"ngb-timepicker\"]], inputs: { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_TIMEPICKER_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 16, vars: 25, consts: function () { let i18n_54; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_55 = goog.getMsg(\"HH\");\n i18n_54 = MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_55;\n }\n else {\n i18n_54 = $localize `:@@ngb.timepicker.HH␟ce676ab1d6d98f85c836381cf100a4a91ef95a1f␟4043638465245303811:HH`;\n } let i18n_56; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_57 = goog.getMsg(\"Hours\");\n i18n_56 = MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_57;\n }\n else {\n i18n_56 = $localize `:@@ngb.timepicker.hours␟3bbce5fef7e1151da052a4e529453edb340e3912␟8070396816726827304:Hours`;\n } let i18n_58; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_59 = goog.getMsg(\"MM\");\n i18n_58 = MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_59;\n }\n else {\n i18n_58 = $localize `:@@ngb.timepicker.MM␟72c8edf6a50068a05bde70991e36b1e881f4ca54␟1647282246509919852:MM`;\n } let i18n_60; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_61 = goog.getMsg(\"Minutes\");\n i18n_60 = MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_61;\n }\n else {\n i18n_60 = $localize `:@@ngb.timepicker.minutes␟41e62daa962947c0d23ded0981975d1bddf0bf38␟5531237363767747080:Minutes`;\n } let i18n_62; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__63 = goog.getMsg(\"Increment hours\");\n i18n_62 = MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__63;\n }\n else {\n i18n_62 = $localize `:@@ngb.timepicker.increment-hours␟cb74bc1d625a6c1742f0d7d47306cf495780c218␟5939278348542933629:Increment hours`;\n } let i18n_64; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__65 = goog.getMsg(\"Decrement hours\");\n i18n_64 = MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__65;\n }\n else {\n i18n_64 = $localize `:@@ngb.timepicker.decrement-hours␟147c7a19429da7d999e247d22e33fee370b1691b␟3651829882940481818:Decrement hours`;\n } let i18n_66; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__67 = goog.getMsg(\"Increment minutes\");\n i18n_66 = MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__67;\n }\n else {\n i18n_66 = $localize `:@@ngb.timepicker.increment-minutes␟f5a4a3bc05e053f6732475d0e74875ec01c3a348␟180147720391025024:Increment minutes`;\n } let i18n_68; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__69 = goog.getMsg(\"Decrement minutes\");\n i18n_68 = MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__69;\n }\n else {\n i18n_68 = $localize `:@@ngb.timepicker.decrement-minutes␟c1a6899e529c096da5b660385d4e77fe1f7ad271␟7447789825403243588:Decrement minutes`;\n } let i18n_70; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__71 = goog.getMsg(\"SS\");\n i18n_70 = MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__71;\n }\n else {\n i18n_70 = $localize `:@@ngb.timepicker.SS␟ebe38d36a40a2383c5fefa9b4608ffbda08bd4a3␟3628127143071124194:SS`;\n } let i18n_72; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__73 = goog.getMsg(\"Seconds\");\n i18n_72 = MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__73;\n }\n else {\n i18n_72 = $localize `:@@ngb.timepicker.seconds␟4f2ed9e71a7c981db3e50ae2fedb28aff2ec4e6c␟8874012390997067175:Seconds`;\n } let i18n_74; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___75 = goog.getMsg(\"Increment seconds\");\n i18n_74 = MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___75;\n }\n else {\n i18n_74 = $localize `:@@ngb.timepicker.increment-seconds␟912322ecee7d659d04dcf494a70e22e49d334b26␟5364772110539092174:Increment seconds`;\n } let i18n_76; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___77 = goog.getMsg(\"Decrement seconds\");\n i18n_76 = MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___77;\n }\n else {\n i18n_76 = $localize `:@@ngb.timepicker.decrement-seconds␟5db47ac104294243a70eb9124fbea9d0004ddf69␟753633511487974857:Decrement seconds`;\n } let i18n_78; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___79 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_78 = MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___79;\n }\n else {\n i18n_78 = $localize `:@@ngb.timepicker.PM␟8d6e691e10306c1b34c6b26805151aaea320ef7f␟3564199131264287502:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_80; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___81 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_80 = MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___81;\n }\n else {\n i18n_80 = $localize `:@@ngb.timepicker.AM␟69a1f176a93998876952adac57c3bc3863b6105e␟4592818992509942761:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[3, \"disabled\"], [1, \"ngb-tp\"], [1, \"ngb-tp-input-container\", \"ngb-tp-hour\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"class\", \"btn btn-link\", 3, \"btn-sm\", \"btn-lg\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_54, \"aria-label\", i18n_56, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [1, \"ngb-tp-spacer\"], [1, \"ngb-tp-input-container\", \"ngb-tp-minute\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_58, \"aria-label\", i18n_60, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [\"class\", \"ngb-tp-spacer\", 4, \"ngIf\"], [\"class\", \"ngb-tp-input-container ngb-tp-second\", 4, \"ngIf\"], [\"class\", \"ngb-tp-meridian\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"disabled\", \"click\"], [1, \"chevron\", \"ngb-tp-chevron\"], [1, \"sr-only\"], i18n_62, [1, \"chevron\", \"ngb-tp-chevron\", \"bottom\"], i18n_64, i18n_66, i18n_68, [1, \"ngb-tp-input-container\", \"ngb-tp-second\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_70, \"aria-label\", i18n_72, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], i18n_74, i18n_76, [1, \"ngb-tp-meridian\"], [\"type\", \"button\", 1, \"btn\", \"btn-outline-primary\", 3, \"disabled\", \"click\"], [4, \"ngIf\", \"ngIfElse\"], [\"am\", \"\"], i18n_78, i18n_80]; }, template: function NgbTimepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"fieldset\", 0)(1, \"div\", 1)(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(4, \"input\", 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_4_listener($event) { return ctx.updateHour($event.target.value); })(\"input\", function NgbTimepicker_Template_input_input_4_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_4_listener($event) { ctx.changeHour(ctx.hourStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_4_listener($event) { ctx.changeHour(-ctx.hourStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, NgbTimepicker_button_5_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵtext(7, \":\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n ɵngcc0.ɵɵtemplate(9, NgbTimepicker_button_9_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(10, \"input\", 7);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_10_listener($event) { return ctx.updateMinute($event.target.value); })(\"input\", function NgbTimepicker_Template_input_input_10_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_10_listener($event) { ctx.changeMinute(ctx.minuteStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_10_listener($event) { ctx.changeMinute(-ctx.minuteStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, NgbTimepicker_button_11_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(12, NgbTimepicker_div_12_Template, 2, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(13, NgbTimepicker_div_13_Template, 4, 9, \"div\", 9);\n ɵngcc0.ɵɵtemplate(14, NgbTimepicker_div_14_Template, 1, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(15, NgbTimepicker_div_15_Template, 5, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatHour(ctx.model == null ? null : ctx.model.hour))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatMinSec(ctx.model == null ? null : ctx.model.minute))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"], encapsulation: 2 });\nNgbTimepicker.ctorParameters = () => [\n { type: NgbTimepickerConfig },\n { type: NgbTimeAdapter },\n { type: ChangeDetectorRef },\n { type: NgbTimepickerI18n }\n];\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"meridian\", void 0);\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"spinners\", void 0);\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"seconds\", void 0);\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"hourStep\", null);\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"minuteStep\", null);\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"secondStep\", null);\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"readonlyInputs\", void 0);\n__decorate([\n Input()\n], NgbTimepicker.prototype, \"size\", void 0);\n\nlet NgbTimepickerModule = class NgbTimepickerModule {\n};\nNgbTimepickerModule.ɵfac = function NgbTimepickerModule_Factory(t) { return new (t || NgbTimepickerModule)(); };\nNgbTimepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTimepickerModule });\nNgbTimepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n * and customize the values of its properties in order to provide default values for all the toasts used in the\n * application.\n *\n * @since 5.0.0\n */\nlet NgbToastConfig = class NgbToastConfig {\n constructor() {\n this.autohide = true;\n this.delay = 500;\n this.ariaLive = 'polite';\n }\n};\nNgbToastConfig.ɵfac = function NgbToastConfig_Factory(t) { return new (t || NgbToastConfig)(); };\nNgbToastConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbToastConfig_Factory() { return new NgbToastConfig(); }, token: NgbToastConfig, providedIn: \"root\" });\n\n/**\n * This directive allows the usage of HTML markup or other directives\n * inside of the toast's header.\n *\n * @since 5.0.0\n */\nlet NgbToastHeader = class NgbToastHeader {\n};\nNgbToastHeader.ɵfac = function NgbToastHeader_Factory(t) { return new (t || NgbToastHeader)(); };\nNgbToastHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbToastHeader, selectors: [[\"\", \"ngbToastHeader\", \"\"]] });\n/**\n * Toasts provide feedback messages as notifications to the user.\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n *\n * @since 5.0.0\n */\nlet NgbToast = class NgbToast {\n constructor(ariaLive, config) {\n this.ariaLive = ariaLive;\n /**\n * A template like `` can be\n * used in the projected content to allow markup usage.\n */\n this.contentHeaderTpl = null;\n /**\n * An event fired immediately when toast's `hide()` method has been called.\n * It can only occur in 2 different scenarios:\n * - `autohide` timeout fires\n * - user clicks on a closing cross (×)\n *\n * Additionally this output is purely informative. The toast won't disappear. It's up to the user to take care of\n * that.\n */\n this.hideOutput = new EventEmitter();\n if (this.ariaLive == null) {\n this.ariaLive = config.ariaLive;\n }\n this.delay = config.delay;\n this.autohide = config.autohide;\n }\n ngAfterContentInit() { this._init(); }\n ngOnChanges(changes) {\n if ('autohide' in changes) {\n this._clearTimeout();\n this._init();\n }\n }\n hide() {\n this._clearTimeout();\n this.hideOutput.emit();\n }\n _init() {\n if (this.autohide && !this._timeoutID) {\n this._timeoutID = setTimeout(() => this.hide(), this.delay);\n }\n }\n _clearTimeout() {\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n }\n};\nNgbToast.ɵfac = function NgbToast_Factory(t) { return new (t || NgbToast)(ɵngcc0.ɵɵinjectAttribute('aria-live'), ɵngcc0.ɵɵdirectiveInject(NgbToastConfig)); };\nNgbToast.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbToast, selectors: [[\"ngb-toast\"]], contentQueries: function NgbToast_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbToastHeader, 7, TemplateRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentHeaderTpl = _t.first);\n } }, hostAttrs: [\"role\", \"alert\", \"aria-atomic\", \"true\"], hostVars: 5, hostBindings: function NgbToast_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-live\", ctx.ariaLive);\n ɵngcc0.ɵɵclassProp(\"toast\", true)(\"show\", true);\n } }, inputs: { delay: \"delay\", autohide: \"autohide\", header: \"header\" }, outputs: { hideOutput: \"hide\" }, exportAs: [\"ngbToast\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 5, vars: 1, consts: function () { let i18n_82; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__83 = goog.getMsg(\"Close\");\n i18n_82 = MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__83;\n }\n else {\n i18n_82 = $localize `:@@ngb.toast.close-aria␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"headerTpl\", \"\"], [3, \"ngIf\"], [1, \"toast-body\"], [1, \"mr-auto\"], [1, \"toast-header\"], [3, \"ngTemplateOutlet\"], [\"type\", \"button\", \"aria-label\", i18n_82, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbToast_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgbToast_ng_template_0_Template, 2, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbToast_ng_template_2_Template, 5, 1, \"ng-template\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentHeaderTpl || ctx.header);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"], encapsulation: 2 });\nNgbToast.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['aria-live',] }] },\n { type: NgbToastConfig }\n];\n__decorate([\n Input()\n], NgbToast.prototype, \"delay\", void 0);\n__decorate([\n Input()\n], NgbToast.prototype, \"autohide\", void 0);\n__decorate([\n Input()\n], NgbToast.prototype, \"header\", void 0);\n__decorate([\n ContentChild(NgbToastHeader, { read: TemplateRef, static: true })\n], NgbToast.prototype, \"contentHeaderTpl\", void 0);\n__decorate([\n Output('hide')\n], NgbToast.prototype, \"hideOutput\", void 0);\nNgbToast = __decorate([ __param(0, Attribute('aria-live'))\n], NgbToast);\n\nlet NgbToastModule = class NgbToastModule {\n};\nNgbToastModule.ɵfac = function NgbToastModule_Factory(t) { return new (t || NgbToastModule)(); };\nNgbToastModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbToastModule });\nNgbToastModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nlet NgbTooltipConfig = class NgbTooltipConfig {\n constructor() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n};\nNgbTooltipConfig.ɵfac = function NgbTooltipConfig_Factory(t) { return new (t || NgbTooltipConfig)(); };\nNgbTooltipConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(); }, token: NgbTooltipConfig, providedIn: \"root\" });\n\nlet nextId$5 = 0;\nlet NgbTooltipWindow = class NgbTooltipWindow {\n};\nNgbTooltipWindow.ɵfac = function NgbTooltipWindow_Factory(t) { return new (t || NgbTooltipWindow)(); };\nNgbTooltipWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTooltipWindow, selectors: [[\"ngb-tooltip-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 3, hostBindings: function NgbTooltipWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"tooltip show\" + (ctx.tooltipClass ? \" \" + ctx.tooltipClass : \"\"));\n } }, inputs: { id: \"id\", tooltipClass: \"tooltipClass\" }, ngContentSelectors: _c3, decls: 3, vars: 0, consts: [[1, \"arrow\"], [1, \"tooltip-inner\"]], template: function NgbTooltipWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } }, styles: [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], NgbTooltipWindow.prototype, \"id\", void 0);\n__decorate([\n Input()\n], NgbTooltipWindow.prototype, \"tooltipClass\", void 0);\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nlet NgbTooltip = class NgbTooltip {\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the tooltip is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId$5++}`;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this.tooltipClass = config.tooltipClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-tooltip');\n }\n });\n }\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n */\n set ngbTooltip(value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n }\n get ngbTooltip() { return this._ngbTooltip; }\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n */\n open(context) {\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n this._windowRef = this._popupService.open(this._ngbTooltip, context);\n this._windowRef.instance.tooltipClass = this.tooltipClass;\n this._windowRef.instance.id = this._ngbTooltipWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n }\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n close() {\n if (this._windowRef != null) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() { return this._windowRef != null; }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ tooltipClass }) {\n if (tooltipClass && this.isOpen()) {\n this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\n }\n }\n ngOnDestroy() {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n }\n};\nNgbTooltip.ɵfac = function NgbTooltip_Factory(t) { return new (t || NgbTooltip)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbTooltipConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTooltip.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTooltip, selectors: [[\"\", \"ngbTooltip\", \"\"]], inputs: { autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disableTooltip: \"disableTooltip\", tooltipClass: \"tooltipClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbTooltip: \"ngbTooltip\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbTooltip\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbTooltip.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbTooltipConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\n__decorate([\n Input()\n], NgbTooltip.prototype, \"autoClose\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"placement\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"triggers\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"container\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"disableTooltip\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"tooltipClass\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"openDelay\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"closeDelay\", void 0);\n__decorate([\n Output()\n], NgbTooltip.prototype, \"shown\", void 0);\n__decorate([\n Output()\n], NgbTooltip.prototype, \"hidden\", void 0);\n__decorate([\n Input()\n], NgbTooltip.prototype, \"ngbTooltip\", null);\nNgbTooltip = __decorate([ __param(7, Inject(DOCUMENT))\n], NgbTooltip);\n\nlet NgbTooltipModule = class NgbTooltipModule {\n};\nNgbTooltipModule.ɵfac = function NgbTooltipModule_Factory(t) { return new (t || NgbTooltipModule)(); };\nNgbTooltipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTooltipModule });\nNgbTooltipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n\n/**\n * A component that helps with text highlighting.\n *\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\n */\nlet NgbHighlight = class NgbHighlight {\n constructor() {\n /**\n * The CSS class for `` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n }\n ngOnChanges(changes) {\n const result = toString(this.result);\n const terms = Array.isArray(this.term) ? this.term : [this.term];\n const escapedTerms = terms.map(term => regExpEscape(toString(term))).filter(term => term);\n this.parts = escapedTerms.length ? result.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\n }\n};\nNgbHighlight.ɵfac = function NgbHighlight_Factory(t) { return new (t || NgbHighlight)(); };\nNgbHighlight.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbHighlight, selectors: [[\"ngb-highlight\"]], inputs: { highlightClass: \"highlightClass\", result: \"result\", term: \"term\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"class\", 4, \"ngIf\", \"ngIfElse\"], [\"even\", \"\"]], template: function NgbHighlight_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_Template, 3, 2, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.parts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], styles: [\".ngb-highlight{font-weight:700}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], NgbHighlight.prototype, \"highlightClass\", void 0);\n__decorate([\n Input()\n], NgbHighlight.prototype, \"result\", void 0);\n__decorate([\n Input()\n], NgbHighlight.prototype, \"term\", void 0);\n\nlet NgbTypeaheadWindow = class NgbTypeaheadWindow {\n constructor() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n hasActive() { return this.activeIdx > -1 && this.activeIdx < this.results.length; }\n getActive() { return this.results[this.activeIdx]; }\n markActive(activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n }\n next() {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n }\n else {\n this.activeIdx++;\n }\n this._activeChanged();\n }\n prev() {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n }\n else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n }\n else {\n this.activeIdx--;\n }\n this._activeChanged();\n }\n resetActive() {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n }\n select(item) { this.selectEvent.emit(item); }\n ngOnInit() { this.resetActive(); }\n _activeChanged() {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n }\n};\nNgbTypeaheadWindow.ɵfac = function NgbTypeaheadWindow_Factory(t) { return new (t || NgbTypeaheadWindow)(); };\nNgbTypeaheadWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTypeaheadWindow, selectors: [[\"ngb-typeahead-window\"]], hostAttrs: [\"role\", \"listbox\", 1, \"dropdown-menu\", \"show\"], hostVars: 1, hostBindings: function NgbTypeaheadWindow_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgbTypeaheadWindow_mousedown_HostBindingHandler($event) { return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n } }, inputs: { focusFirst: \"focusFirst\", formatter: \"formatter\", id: \"id\", results: \"results\", term: \"term\", resultTemplate: \"resultTemplate\" }, outputs: { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, exportAs: [\"ngbTypeaheadWindow\"], decls: 3, vars: 1, consts: [[\"rt\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"result\", \"term\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"id\", \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbTypeaheadWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbTypeaheadWindow_ng_template_0_Template, 1, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbTypeaheadWindow_ng_template_2_Template, 2, 9, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results);\n } }, directives: [NgbHighlight, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input()\n], NgbTypeaheadWindow.prototype, \"id\", void 0);\n__decorate([\n Input()\n], NgbTypeaheadWindow.prototype, \"focusFirst\", void 0);\n__decorate([\n Input()\n], NgbTypeaheadWindow.prototype, \"results\", void 0);\n__decorate([\n Input()\n], NgbTypeaheadWindow.prototype, \"term\", void 0);\n__decorate([\n Input()\n], NgbTypeaheadWindow.prototype, \"formatter\", void 0);\n__decorate([\n Input()\n], NgbTypeaheadWindow.prototype, \"resultTemplate\", void 0);\n__decorate([\n Output('select')\n], NgbTypeaheadWindow.prototype, \"selectEvent\", void 0);\n__decorate([\n Output('activeChange')\n], NgbTypeaheadWindow.prototype, \"activeChangeEvent\", void 0);\n\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\nfunction ARIA_LIVE_DELAY_FACTORY() {\n return 100;\n}\nfunction getLiveElement(document, lazyCreate = false) {\n let element = document.body.querySelector('#ngb-live');\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('sr-only');\n document.body.appendChild(element);\n }\n return element;\n}\nlet Live = class Live {\n constructor(_document, _delay) {\n this._document = _document;\n this._delay = _delay;\n }\n ngOnDestroy() {\n const element = getLiveElement(this._document);\n if (element) {\n element.parentElement.removeChild(element);\n }\n }\n say(message) {\n const element = getLiveElement(this._document, true);\n const delay = this._delay;\n element.textContent = '';\n const setText = () => element.textContent = message;\n if (delay === null) {\n setText();\n }\n else {\n setTimeout(setText, delay);\n }\n }\n};\nLive.ɵfac = function Live_Factory(t) { return new (t || Live)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ARIA_LIVE_DELAY)); };\nLive.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [ARIA_LIVE_DELAY,] }] }\n];\nLive.ɵprov = ɵɵdefineInjectable({ factory: function Live_Factory() { return new Live(ɵɵinject(DOCUMENT), ɵɵinject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\nLive = __decorate([ __param(0, Inject(DOCUMENT)), __param(1, Inject(ARIA_LIVE_DELAY))\n], Live);\n\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nlet NgbTypeaheadConfig = class NgbTypeaheadConfig {\n constructor() {\n this.editable = true;\n this.focusFirst = true;\n this.showHint = false;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n};\nNgbTypeaheadConfig.ɵfac = function NgbTypeaheadConfig_Factory(t) { return new (t || NgbTypeaheadConfig)(); };\nNgbTypeaheadConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n\nconst NGB_TYPEAHEAD_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbTypeahead),\n multi: true\n};\nlet nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nlet NgbTypeahead = class NgbTypeahead {\n constructor(_elementRef, viewContainerRef, _renderer, injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._live = _live;\n this._document = _document;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n this._closed$ = new Subject();\n /**\n * The value for the `autocomplete` attribute for the `` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * @since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * The preferred placement of the typeahead.\n *\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n * `\"right-bottom\"`\n *\n * Accepts an array of strings or a string with space separated possible values.\n *\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = 'bottom-left';\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._onTouched = () => { };\n this._onChange = (_) => { };\n this.container = config.container;\n this.editable = config.editable;\n this.focusFirst = config.focusFirst;\n this.showHint = config.showHint;\n this.placement = config.placement;\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\n .pipe(map($event => $event.target.value));\n this._resubscribeTypeahead = new BehaviorSubject(null);\n this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, applicationRef);\n this._zoneSubscription = ngZone.onStable.subscribe(() => {\n if (this.isPopupOpen()) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body');\n }\n });\n }\n ngOnInit() {\n const inputValues$ = this._valueChanges.pipe(tap(value => {\n this._inputValueBackup = this.showHint ? value : null;\n this._onChange(this.editable ? value : undefined);\n }));\n const results$ = inputValues$.pipe(this.ngbTypeahead);\n const userInput$ = this._resubscribeTypeahead.pipe(switchMap(() => results$));\n this._subscription = this._subscribeToUserInput(userInput$);\n }\n ngOnDestroy() {\n this._closePopup();\n this._unsubscribeFromUserInput();\n this._zoneSubscription.unsubscribe();\n }\n registerOnChange(fn) { this._onChange = fn; }\n registerOnTouched(fn) { this._onTouched = fn; }\n writeValue(value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n }\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * Dismisses typeahead popup window\n */\n dismissPopup() {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Returns true if the typeahead popup window is displayed\n */\n isPopupOpen() { return this._windowRef != null; }\n handleBlur() {\n this._resubscribeTypeahead.next(null);\n this._onTouched();\n }\n handleKeyDown(event) {\n if (!this.isPopupOpen()) {\n return;\n }\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab:\n const result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n }\n _openPopup() {\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._elementRef.nativeElement.value;\n this._windowRef = this._popupService.open();\n this._windowRef.instance.id = this.popupId;\n this._windowRef.instance.selectEvent.subscribe((result) => this._selectResultClosePopup(result));\n this._windowRef.instance.activeChangeEvent.subscribe((activeId) => this.activeDescendant = activeId);\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n }\n }\n _closePopup() {\n this._closed$.next();\n this._popupService.close();\n this._windowRef = null;\n this.activeDescendant = undefined;\n }\n _selectResult(result) {\n let defaultPrevented = false;\n this.selectItem.emit({ item: result, preventDefault: () => { defaultPrevented = true; } });\n this._resubscribeTypeahead.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n }\n _selectResultClosePopup(result) {\n this._selectResult(result);\n this._closePopup();\n }\n _showHint() {\n if (this.showHint && this._windowRef.instance.hasActive() && this._inputValueBackup != null) {\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n }\n else {\n this._writeInputValue(formattedVal);\n }\n }\n }\n _formatItemForInput(item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n }\n _writeInputValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n }\n _subscribeToUserInput(userInput$) {\n return userInput$.subscribe((results) => {\n if (!results || results.length === 0) {\n this._closePopup();\n }\n else {\n this._openPopup();\n this._windowRef.instance.focusFirst = this.focusFirst;\n this._windowRef.instance.results = results;\n this._windowRef.instance.term = this._elementRef.nativeElement.value;\n if (this.resultFormatter) {\n this._windowRef.instance.formatter = this.resultFormatter;\n }\n if (this.resultTemplate) {\n this._windowRef.instance.resultTemplate = this.resultTemplate;\n }\n this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n this._windowRef.changeDetectorRef.detectChanges();\n this._showHint();\n }\n // live announcer\n const count = results ? results.length : 0;\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\n });\n }\n _unsubscribeFromUserInput() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n }\n};\nNgbTypeahead.ɵfac = function NgbTypeahead_Factory(t) { return new (t || NgbTypeahead)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(NgbTypeaheadConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(Live), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTypeahead.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTypeahead, selectors: [[\"input\", \"ngbTypeahead\", \"\"]], hostAttrs: [\"autocapitalize\", \"off\", \"autocorrect\", \"off\", \"role\", \"combobox\", \"aria-multiline\", \"false\"], hostVars: 7, hostBindings: function NgbTypeahead_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbTypeahead_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbTypeahead_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"autocomplete\", ctx.autocomplete);\n ɵngcc0.ɵɵattribute(\"aria-autocomplete\", ctx.showHint ? \"both\" : \"list\")(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-owns\", ctx.isPopupOpen() ? ctx.popupId : null)(\"aria-expanded\", ctx.isPopupOpen());\n ɵngcc0.ɵɵclassProp(\"open\", ctx.isPopupOpen());\n } }, inputs: { autocomplete: \"autocomplete\", placement: \"placement\", container: \"container\", editable: \"editable\", focusFirst: \"focusFirst\", showHint: \"showHint\", inputFormatter: \"inputFormatter\", ngbTypeahead: \"ngbTypeahead\", resultFormatter: \"resultFormatter\", resultTemplate: \"resultTemplate\" }, outputs: { selectItem: \"selectItem\" }, exportAs: [\"ngbTypeahead\"], features: [ɵngcc0.ɵɵProvidersFeature([NGB_TYPEAHEAD_VALUE_ACCESSOR])] });\nNgbTypeahead.ctorParameters = () => [\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: NgbTypeaheadConfig },\n { type: NgZone },\n { type: Live },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"autocomplete\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"container\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"editable\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"focusFirst\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"inputFormatter\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"ngbTypeahead\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"resultFormatter\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"resultTemplate\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"showHint\", void 0);\n__decorate([\n Input()\n], NgbTypeahead.prototype, \"placement\", void 0);\n__decorate([\n Output()\n], NgbTypeahead.prototype, \"selectItem\", void 0);\nNgbTypeahead = __decorate([ __param(8, Inject(DOCUMENT))\n], NgbTypeahead);\n\nlet NgbTypeaheadModule = class NgbTypeaheadModule {\n};\nNgbTypeaheadModule.ɵfac = function NgbTypeaheadModule_Factory(t) { return new (t || NgbTypeaheadModule)(); };\nNgbTypeaheadModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTypeaheadModule });\nNgbTypeaheadModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n\nconst NGB_MODULES = [\n NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\n NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule,\n // tslint:disable-next-line:deprecation\n NgbTabsetModule\n];\nlet NgbModule = class NgbModule {\n};\nNgbModule.ɵfac = function NgbModule_Factory(t) { return new (t || NgbModule)(); };\nNgbModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModule });\nNgbModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule, NgbTabsetModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelHeader, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelHeader]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelTitle, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelTitle]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanel, [{\n type: Directive,\n args: [{ selector: 'ngb-panel' }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], title: [{\n type: Input\n }], type: [{\n type: Input\n }], cardClass: [{\n type: Input\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbPanelTitle, { descendants: false }]\n }], headerTpls: [{\n type: ContentChildren,\n args: [NgbPanelHeader, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbPanelContent, { descendants: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordion, [{\n type: Component,\n args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: `\n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n `\n }]\n }], function () { return [{ type: NgbAccordionConfig }]; }, { activeIds: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], type: [{\n type: Input\n }], closeOtherPanels: [{\n type: Input,\n args: ['closeOthers']\n }], panels: [{\n type: ContentChildren,\n args: [NgbPanel]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelToggle, [{\n type: Directive,\n args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n }]\n }], function () { return [{ type: NgbAccordion }, { type: NgbPanel, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { ngbPanelToggle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionModule, [{\n type: NgModule,\n args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAccordionModule, { declarations: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlert, [{\n type: Component,\n args: [{\n selector: 'ngb-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'role': 'alert', 'class': 'alert', '[class.alert-dismissible]': 'dismissible' },\n template: `\n \n \n `,\n styles: [\"ngb-alert{display:block}\"]\n }]\n }], function () { return [{ type: NgbAlertConfig }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, { close: [{\n type: Output\n }], dismissible: [{\n type: Input\n }], type: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertModule, [{\n type: NgModule,\n args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule], entryComponents: [NgbAlert] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAlertModule, { declarations: function () { return [NgbAlert]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAlert]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonLabel, [{\n type: Directive,\n args: [{\n selector: '[ngbButtonLabel]',\n host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCheckBox, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=checkbox]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '(change)': 'onInputChange($event)',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n },\n providers: [NGB_CHECKBOX_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: NgbButtonLabel }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabled: [{\n type: Input\n }], valueChecked: [{\n type: Input\n }], valueUnChecked: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadioGroup, [{\n type: Directive,\n args: [{ selector: '[ngbRadioGroup]', host: { 'role': 'radiogroup' }, providers: [NGB_RADIO_VALUE_ACCESSOR] }]\n }], function () { return []; }, { name: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadio, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=radio]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '[name]': 'nameAttr',\n '(change)': 'onChange()',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n }\n }]\n }], function () { return [{ type: NgbRadioGroup }, { type: NgbButtonLabel }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { value: [{\n type: Input,\n args: ['value']\n }], disabled: [{\n type: Input,\n args: ['disabled']\n }], name: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonsModule, [{\n type: NgModule,\n args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbButtonsModule, { declarations: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio], exports: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbSlide, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbSlide]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { id: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarousel, [{\n type: Component,\n args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(keydown.arrowLeft)': 'keyboard && prev(NgbSlideEventSource.ARROW_LEFT)',\n '(keydown.arrowRight)': 'keyboard && next(NgbSlideEventSource.ARROW_RIGHT)'\n },\n template: `\n
    \n
  1. \n
\n
\n
\n \n
\n
\n \n \n Previous\n \n \n \n Next\n \n `\n }]\n }], function () { return [{ type: NgbCarouselConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { slide: [{\n type: Output\n }], interval: [{\n type: Input\n }], wrap: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], pauseOnHover: [{\n type: Input\n }], showNavigationArrows: [{\n type: Input\n }], showNavigationIndicators: [{\n type: Input\n }], mouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], mouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], activeId: [{\n type: Input\n }], slides: [{\n type: ContentChildren,\n args: [NgbSlide]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselModule, [{\n type: NgModule,\n args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCarouselModule, { declarations: function () { return [NgbCarousel, NgbSlide]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbCarousel, NgbSlide]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapse, [{\n type: Directive,\n args: [{\n selector: '[ngbCollapse]',\n exportAs: 'ngbCollapse',\n host: { '[class.collapse]': 'true', '[class.show]': '!collapsed' }\n }]\n }], function () { return []; }, { collapsed: [{\n type: Input,\n args: ['ngbCollapse']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseModule, [{\n type: NgModule,\n args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCollapseModule, { declarations: [NgbCollapse], exports: [NgbCollapse] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendar, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarGregorian, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerService, [{\n type: Injectable\n }], function () { return [{ type: NgbCalendar }, { type: NgbDatepickerI18n }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateStructAdapter, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbDatepickerContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepicker, [{\n type: Component,\n args: [{\n exportAs: 'ngbDatepicker',\n selector: 'ngb-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n
\n
\n
\n\n \n
\n
1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\n
\n \n
\n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n `,\n providers: [NGB_DATEPICKER_VALUE_ACCESSOR, NgbDatepickerService],\n styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDatepickerI18n }, { type: NgbDatepickerConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: NgbDateAdapter }, { type: ɵngcc0.NgZone }]; }, { navigate: [{\n type: Output\n }], dateSelect: [{\n type: Output\n }], select: [{\n type: Output\n }], dayTemplate: [{\n type: Input\n }], _defaultDayTemplate: [{\n type: ViewChild,\n args: ['defaultDayTemplate', { static: true }]\n }], _contentEl: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [NgbDatepickerContent, { static: true }]\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekdays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerKeyboardService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerMonth, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-month',\n host: { 'role': 'grid', '(keydown)': 'onKeyDown($event)' },\n encapsulation: ViewEncapsulation.None,\n template: `\n
\n
\n
\n {{ i18n.getWeekdayShortName(w) }}\n
\n
\n \n
\n
{{ i18n.getWeekNumerals(week.number) }}
\n
\n \n \n \n
\n
\n
\n `,\n styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: NgbDatepicker }, { type: NgbDatepickerKeyboardService }, { type: NgbDatepickerService }]; }, { month: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigation, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n
\n \n
\n \n \n\n \n
0\">
\n
\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\n
\n
\n
\n
\n \n
\n `,\n styles: [\"ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { months: [{\n type: Input\n }], navigate: [{\n type: Output\n }], select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showSelect: [{\n type: Input\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], selectBoxes: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateParserFormatter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateISOParserFormatter, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepicker, [{\n type: Directive,\n args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [\n NGB_DATEPICKER_VALUE_ACCESSOR$1, NGB_DATEPICKER_VALIDATOR,\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]\n }]\n }], function () { return [{ type: NgbDateParserFormatter }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.NgZone }, { type: NgbCalendar }, { type: NgbDateAdapter }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbInputDatepickerConfig }]; }, { dateSelect: [{\n type: Output\n }], navigate: [{\n type: Output\n }], closed: [{\n type: Output\n }], disabled: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], placement: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], showWeekdays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], container: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerDayView, [{\n type: Component,\n args: [{\n selector: '[ngbDatepickerDayView]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n },\n template: `{{ i18n.getDayNumerals(date) }}`,\n styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { currentMonth: [{\n type: Input\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], focused: [{\n type: Input\n }], selected: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigationSelect, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n `,\n styles: [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: ɵngcc0.Renderer2 }]; }, { select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], years: [{\n type: Input\n }], monthSelect: [{\n type: ViewChild,\n args: ['month', { static: true, read: ElementRef }]\n }], yearSelect: [{\n type: ViewChild,\n args: ['year', { static: true, read: ElementRef }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHijri, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicCivil, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicUmalqura, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarPersian, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHebrew, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nHebrew, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeAdapter, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeUTCAdapter, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect,\n NgbDatepickerDayView, NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth],\n imports: [CommonModule, FormsModule],\n entryComponents: [NgbDatepicker]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDatepickerModule, { declarations: function () { return [NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView, NgbInputDatepicker]; }, imports: function () { return [CommonModule, FormsModule]; }, exports: function () { return [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavbar, [{\n type: Directive,\n args: [{ selector: '.navbar' }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownItem, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownMenu, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '[attr.x-placement]': 'placement',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }]; }, { menuItems: [{\n type: ContentChildren,\n args: [NgbDropdownItem]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownAnchor, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownAnchor]',\n host: { 'class': 'dropdown-toggle', 'aria-haspopup': 'true', '[attr.aria-expanded]': 'dropdown.isOpen()' }\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownToggle, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle_1) }]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdown, [{\n type: Directive,\n args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: NgbDropdownConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: NgbNavbar, decorators: [{\n type: Optional\n }] }]; }, { _open: [{\n type: Input,\n args: ['open']\n }], openChange: [{\n type: Output\n }], placement: [{\n type: Input\n }], container: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], display: [{\n type: Input\n }], _menu: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { static: false }]\n }], _menuElement: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { read: ElementRef, static: false }]\n }], _anchor: [{\n type: ContentChild,\n args: [NgbDropdownAnchor, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownModule, [{\n type: NgModule,\n args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDropdownModule, { declarations: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar], exports: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollBar, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalBackdrop, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: { '[class]': '\"modal-backdrop fade show\" + (backdropClass ? \" \" + backdropClass : \"\")', 'style': 'z-index: 1050' }\n }]\n }], null, { backdropClass: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-window',\n host: {\n '[class]': '\"modal fade show d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n 'role': 'dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy'\n },\n template: `\n
\n
\n
\n `,\n encapsulation: ViewEncapsulation.None,\n styles: [\"ngb-modal-window .component-host-scrollable{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden}\"]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { backdrop: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }], _dialogEl: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], ariaLabelledBy: [{\n type: Input\n }], centered: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], size: [{\n type: Input\n }], windowClass: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalStack, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: ɵngcc0.RendererFactory2 }, { type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModal, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: NgbModalStack }, { type: NgbModalConfig }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbModalBackdrop, NgbModalWindow],\n entryComponents: [NgbModalBackdrop, NgbModalWindow],\n providers: [NgbModal]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModalModule, { declarations: [NgbModalBackdrop, NgbModalWindow] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbNavContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavItem, [{\n type: Directive,\n args: [{ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', host: { '[class.nav-item]': 'true' } }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbNav)]\n }] }, { type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], domId: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], _id: [{\n type: Input,\n args: ['ngbNavItem']\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbNavContent, { descendants: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNav, [{\n type: Directive,\n args: [{\n selector: '[ngbNav]',\n exportAs: 'ngbNav',\n host: {\n '[class.nav]': 'true',\n '[class.flex-column]': `orientation === 'vertical'`,\n '[attr.aria-orientation]': `orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined`,\n '[attr.role]': `role ? role : roles ? 'tablist' : undefined`\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavConfig }, { type: ɵngcc0.ChangeDetectorRef }]; }, { activeIdChange: [{\n type: Output\n }], navChange: [{\n type: Output\n }], destroyOnHide: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roles: [{\n type: Input\n }], activeId: [{\n type: Input\n }], items: [{\n type: ContentChildren,\n args: [NgbNavItem]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavLink, [{\n type: Directive,\n args: [{\n selector: 'a[ngbNavLink]',\n host: {\n '[id]': 'navItem.domId',\n '[class.nav-link]': 'true',\n '[class.nav-item]': 'hasNavItemClass()',\n '[attr.role]': `role ? role : nav.roles ? 'tab' : undefined`,\n 'href': '',\n '[class.active]': 'navItem.active',\n '[class.disabled]': 'navItem.disabled',\n '[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n '[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n '[attr.aria-selected]': 'navItem.active',\n '[attr.aria-disabled]': 'navItem.disabled',\n '(click)': 'nav.click(navItem); $event.preventDefault()'\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavItem }, { type: NgbNav }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavOutlet, [{\n type: Component,\n args: [{\n selector: '[ngbNavOutlet]',\n host: { '[class.tab-content]': 'true' },\n encapsulation: ViewEncapsulation.None,\n template: `\n \n
\n \n
\n
\n `\n }]\n }], null, { paneRole: [{\n type: Input\n }], nav: [{\n type: Input,\n args: ['ngbNavOutlet']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavModule, [{\n type: NgModule,\n args: [{ declarations: NGB_NAV_DIRECTIVES, exports: NGB_NAV_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbNavModule, { declarations: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationEllipsis, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationEllipsis]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationFirst, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationFirst]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationLast, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationLast]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNext, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNext]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNumber, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNumber]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPrevious, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPrevious]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPagination, [{\n type: Component,\n args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: `\n ««\n «\n »\n »»\n ...\n \n {{ page }}\n (current)\n \n \n `\n }]\n }], function () { return [{ type: NgbPaginationConfig }]; }, { page: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], disabled: [{\n type: Input\n }], boundaryLinks: [{\n type: Input\n }], directionLinks: [{\n type: Input\n }], ellipses: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], rotate: [{\n type: Input\n }], size: [{\n type: Input\n }], tplEllipsis: [{\n type: ContentChild,\n args: [NgbPaginationEllipsis, { static: false }]\n }], tplFirst: [{\n type: ContentChild,\n args: [NgbPaginationFirst, { static: false }]\n }], tplLast: [{\n type: ContentChild,\n args: [NgbPaginationLast, { static: false }]\n }], tplNext: [{\n type: ContentChild,\n args: [NgbPaginationNext, { static: false }]\n }], tplNumber: [{\n type: ContentChild,\n args: [NgbPaginationNumber, { static: false }]\n }], tplPrevious: [{\n type: ContentChild,\n args: [NgbPaginationPrevious, { static: false }]\n }], collectionSize: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationModule, [{\n type: NgModule,\n args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPaginationModule, { declarations: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: `\n
\n

\n {{title}}\n \n

\n
`,\n styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"]\n }]\n }], null, { title: [{\n type: Input\n }], id: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], context: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopover, [{\n type: Directive,\n args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbPopoverConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disablePopover: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbPopover: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbPopover, NgbPopoverWindow],\n exports: [NgbPopover],\n imports: [CommonModule],\n entryComponents: [NgbPopoverWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPopoverModule, { declarations: function () { return [NgbPopover, NgbPopoverWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPopover]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbar, [{\n type: Component,\n args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n
\n
\n {{getPercentValue()}}%\n
\n
\n `\n }]\n }], function () { return [{ type: NgbProgressbarConfig }]; }, { value: [{\n type: Input\n }], max: [{\n type: Input\n }], animated: [{\n type: Input\n }], striped: [{\n type: Input\n }], textType: [{\n type: Input\n }], type: [{\n type: Input\n }], showValue: [{\n type: Input\n }], height: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarModule, [{\n type: NgModule,\n args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbProgressbarModule, { declarations: function () { return [NgbProgressbar]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbProgressbar]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRating, [{\n type: Component,\n args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'd-inline-flex',\n '[tabindex]': 'disabled ? -1 : 0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: `\n {{ fill === 100 ? '★' : '☆' }}\n \n ({{ index < nextRate ? '*' : ' ' }})\n \n \n \n \n \n `,\n providers: [NGB_RATING_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: NgbRatingConfig }, { type: ɵngcc0.ChangeDetectorRef }]; }, { hover: [{\n type: Output\n }], leave: [{\n type: Output\n }], rateChange: [{\n type: Output\n }], max: [{\n type: Input\n }], readonly: [{\n type: Input\n }], rate: [{\n type: Input\n }], resettable: [{\n type: Input\n }], starTemplate: [{\n type: Input\n }], starTemplateFromContent: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingModule, [{\n type: NgModule,\n args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbRatingModule, { declarations: function () { return [NgbRating]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbRating]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabsetConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabTitle, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbTabTitle]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbTabContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTab, [{\n type: Directive,\n args: [{ selector: 'ngb-tab' }]\n }], function () { return []; }, { id: [{\n type: Input\n }], disabled: [{\n type: Input\n }], title: [{\n type: Input\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbTabTitle, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbTabContent, { descendants: false }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabset, [{\n type: Component,\n args: [{\n selector: 'ngb-tabset',\n exportAs: 'ngbTabset',\n encapsulation: ViewEncapsulation.None,\n template: `\n \n
\n \n \n \n
\n \n \n `\n }]\n }], function () { return [{ type: NgbTabsetConfig }]; }, { destroyOnHide: [{\n type: Input\n }], tabChange: [{\n type: Output\n }], type: [{\n type: Input\n }], justify: [{\n type: Input\n }], orientation: [{\n type: Input\n }], activeId: [{\n type: Input\n }], tabs: [{\n type: ContentChildren,\n args: [NgbTab]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabsetModule, [{\n type: NgModule,\n args: [{ declarations: NGB_TABSET_DIRECTIVES, exports: NGB_TABSET_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTabsetModule, { declarations: function () { return [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeStructAdapter, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepicker, [{\n type: Component,\n args: [{\n selector: 'ngb-timepicker',\n encapsulation: ViewEncapsulation.None,\n template: `\n
\n
\n
\n \n \n \n
\n
:
\n
\n \n \n \n
\n
:
\n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n `,\n providers: [NGB_TIMEPICKER_VALUE_ACCESSOR],\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"]\n }]\n }], function () { return [{ type: NgbTimepickerConfig }, { type: NgbTimeAdapter }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbTimepickerI18n }]; }, { meridian: [{\n type: Input\n }], spinners: [{\n type: Input\n }], seconds: [{\n type: Input\n }], hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondStep: [{\n type: Input\n }], readonlyInputs: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTimepickerModule, { declarations: function () { return [NgbTimepicker]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTimepicker]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastHeader, [{\n type: Directive,\n args: [{ selector: '[ngbToastHeader]' }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToast, [{\n type: Component,\n args: [{\n selector: 'ngb-toast',\n exportAs: 'ngbToast',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'role': 'alert',\n '[attr.aria-live]': 'ariaLive',\n 'aria-atomic': 'true',\n '[class.toast]': 'true',\n '[class.show]': 'true'\n },\n template: `\n \n {{header}}\n \n \n
\n \n \n
\n
\n
\n \n
\n `,\n styles: [\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: NgbToastConfig }]; }, { contentHeaderTpl: [{\n type: ContentChild,\n args: [NgbToastHeader, { read: TemplateRef, static: true }]\n }], hideOutput: [{\n type: Output,\n args: ['hide']\n }], delay: [{\n type: Input\n }], autohide: [{\n type: Input\n }], header: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastModule, [{\n type: NgModule,\n args: [{ declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbToastModule, { declarations: function () { return [NgbToast, NgbToastHeader]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbToast, NgbToastHeader]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"tooltip show\" + (tooltipClass ? \" \" + tooltipClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: `
`,\n styles: [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"]\n }]\n }], null, { id: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltip, [{\n type: Directive,\n args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbTooltipConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disableTooltip: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbTooltip: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTooltipModule, { declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbHighlight, [{\n type: Component,\n args: [{\n selector: 'ngb-highlight',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `` +\n `{{part}}{{part}}` +\n ``,\n styles: [\".ngb-highlight{font-weight:700}\"]\n }]\n }], function () { return []; }, { highlightClass: [{\n type: Input\n }], result: [{\n type: Input\n }], term: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n encapsulation: ViewEncapsulation.None,\n host: { '(mousedown)': '$event.preventDefault()', 'class': 'dropdown-menu show', 'role': 'listbox', '[id]': 'id' },\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return []; }, { focusFirst: [{\n type: Input\n }], formatter: [{\n type: Input\n }], selectEvent: [{\n type: Output,\n args: ['select']\n }], activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }], id: [{\n type: Input\n }], results: [{\n type: Input\n }], term: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Live, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ARIA_LIVE_DELAY]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeahead, [{\n type: Directive,\n args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [NGB_TYPEAHEAD_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: NgbTypeaheadConfig }, { type: ɵngcc0.NgZone }, { type: Live }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { autocomplete: [{\n type: Input\n }], placement: [{\n type: Input\n }], selectItem: [{\n type: Output\n }], container: [{\n type: Input\n }], editable: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], showHint: [{\n type: Input\n }], inputFormatter: [{\n type: Input\n }], ngbTypeahead: [{\n type: Input\n }], resultFormatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n entryComponents: [NgbTypeaheadWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTypeaheadModule, { declarations: function () { return [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTypeahead, NgbHighlight]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModule, [{\n type: NgModule,\n args: [{ imports: NGB_MODULES, exports: NGB_MODULES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModule, { imports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule, NgbTabsetModule], exports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule, NgbTabsetModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbButtonLabel, NgbButtonsModule, NgbCalendar, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCheckBox, NgbCollapse, NgbCollapseModule, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavbar, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRadio, NgbRadioGroup, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTab, NgbTabContent, NgbTabTitle, NgbTabset, NgbTabsetConfig, NgbTabsetModule, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, NGB_CAROUSEL_DIRECTIVES as ɵa, NGB_DATEPICKER_VALUE_ACCESSOR as ɵb, Live as ɵba, NgbCalendarHijri as ɵbb, ContentRef as ɵbc, NGB_DATEPICKER_CALENDAR_FACTORY as ɵc, NgbDatepickerDayView as ɵd, NgbDatepickerNavigation as ɵe, NgbDatepickerNavigationSelect as ɵf, NGB_DATEPICKER_18N_FACTORY as ɵg, NgbDatepickerI18nDefault as ɵh, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵi, NgbDateStructAdapter as ɵj, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵk, NgbDateISOParserFormatter as ɵl, NgbPopoverWindow as ɵm, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵn, NgbTimeStructAdapter as ɵo, NGB_TIMEPICKER_I18N_FACTORY as ɵp, NgbTimepickerI18nDefault as ɵq, NgbTooltipWindow as ɵr, NgbTypeaheadWindow as ɵs, NgbDatepickerService as ɵt, NgbModalBackdrop as ɵu, NgbModalWindow as ɵv, NgbModalStack as ɵw, ScrollBar as ɵx, ARIA_LIVE_DELAY as ɵy, ARIA_LIVE_DELAY_FACTORY as ɵz };\n\n","import { Directive, ElementRef, Input, TemplateRef, Injectable, ɵɵdefineInjectable, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Renderer2, NgZone, Optional, Inject, Output, ViewChild, HostListener, InjectionToken, forwardRef, Attribute, ChangeDetectorRef, HostBinding, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil, auditTime, startWith, tap, debounceTime, filter, map } from 'rxjs/operators';\nimport { animationFrameScheduler, asapScheduler, Subject, fromEvent, merge } from 'rxjs';\nimport { DOCUMENT, CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/value-utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"content\"];\nconst _c1 = [\"scroll\"];\nconst _c2 = [\"padding\"];\nconst _c3 = function (a0) { return { searchTerm: a0 }; };\nfunction NgDropdownPanelComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵelementContainer(1, 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r0.filterValue));\n} }\nfunction NgDropdownPanelComponent_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵelementContainer(1, 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.footerTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r4.filterValue));\n} }\nconst _c4 = [\"*\"];\nconst _c5 = [\"searchInput\"];\nfunction NgSelectComponent_ng_container_4_div_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵlistener(\"click\", function NgSelectComponent_ng_container_4_div_1_ng_template_1_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const item_r7 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(2); return ctx_r11.unselect(item_r7); });\n ɵngcc0.ɵɵtext(1, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"span\", 16);\n} if (rf & 2) {\n const item_r7 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngItemLabel\", item_r7.label)(\"escape\", ctx_r9.escapeHTML);\n} }\nfunction NgSelectComponent_ng_container_4_div_1_ng_template_3_Template(rf, ctx) { }\nconst _c6 = function (a0, a1, a2) { return { item: a0, clear: a1, label: a2 }; };\nfunction NgSelectComponent_ng_container_4_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_4_div_1_ng_template_1_Template, 3, 2, \"ng-template\", null, 13, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_container_4_div_1_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r7 = ctx.$implicit;\n const _r8 = ɵngcc0.ɵɵreference(2);\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-value-disabled\", item_r7.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r6.labelTemplate || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c6, item_r7.value, ctx_r6.clearItem, item_r7.label));\n} }\nfunction NgSelectComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_4_div_1_Template, 4, 8, \"div\", 11);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.selectedItems)(\"ngForTrackBy\", ctx_r0.trackByOption);\n} }\nfunction NgSelectComponent_5_ng_template_0_Template(rf, ctx) { }\nconst _c7 = function (a0, a1) { return { items: a0, clear: a1 }; };\nfunction NgSelectComponent_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgSelectComponent_5_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.multiLabelTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c7, ctx_r1.selectedValues, ctx_r1.clearItem));\n} }\nfunction NgSelectComponent_ng_container_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 19);\n} }\nfunction NgSelectComponent_ng_container_9_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_9_ng_template_1_Template, 1, 0, \"ng-template\", null, 17, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_container_9_ng_template_3_Template, 0, 0, \"ng-template\", 18);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r16 = ɵngcc0.ɵɵreference(2);\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.loadingSpinnerTemplate || _r16);\n} }\nfunction NgSelectComponent_span_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 20)(1, \"span\", 21);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵpropertyInterpolate(\"title\", ctx_r4.clearAllText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 27);\n} if (rf & 2) {\n const item_r24 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngItemLabel\", item_r24.label)(\"escape\", ctx_r26.escapeHTML);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template(rf, ctx) { }\nconst _c8 = function (a0, a1, a2, a3) { return { item: a0, item$: a1, index: a2, searchTerm: a3 }; };\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r30 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 25);\n ɵngcc0.ɵɵlistener(\"click\", function NgSelectComponent_ng_dropdown_panel_13_div_2_Template_div_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r30); const item_r24 = restoredCtx.$implicit; const ctx_r29 = ɵngcc0.ɵɵnextContext(2); return ctx_r29.toggleItem(item_r24); })(\"mouseover\", function NgSelectComponent_ng_dropdown_panel_13_div_2_Template_div_mouseover_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r30); const item_r24 = restoredCtx.$implicit; const ctx_r31 = ɵngcc0.ɵɵnextContext(2); return ctx_r31.onItemHover(item_r24); });\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template, 1, 2, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r24 = ctx.$implicit;\n const _r25 = ɵngcc0.ɵɵreference(2);\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-option-disabled\", item_r24.disabled)(\"ng-option-selected\", item_r24.selected)(\"ng-optgroup\", item_r24.children)(\"ng-option\", !item_r24.children)(\"ng-option-child\", !!item_r24.parent)(\"ng-option-marked\", item_r24 === ctx_r19.itemsList.markedItem);\n ɵngcc0.ɵɵattribute(\"role\", item_r24.children ? \"group\" : \"option\")(\"aria-selected\", item_r24.selected)(\"id\", item_r24 == null ? null : item_r24.htmlId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", item_r24.children ? ctx_r19.optgroupTemplate || _r25 : ctx_r19.optionTemplate || _r25)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction4(17, _c8, item_r24.value, item_r24, item_r24.index, ctx_r19.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\")(1, \"span\", 30);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r33 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r33.addTagText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\\\"\", ctx_r33.searchTerm, \"\\\"\");\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_Template(rf, ctx) { if (rf & 1) {\n const _r36 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 28);\n ɵngcc0.ɵɵlistener(\"mouseover\", function NgSelectComponent_ng_dropdown_panel_13_div_3_Template_div_mouseover_0_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r35 = ɵngcc0.ɵɵnextContext(2); return ctx_r35.itemsList.unmarkItem(); })(\"click\", function NgSelectComponent_ng_dropdown_panel_13_div_3_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r37 = ɵngcc0.ɵɵnextContext(2); return ctx_r37.selectTag(); });\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template, 4, 2, \"ng-template\", null, 29, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r32 = ɵngcc0.ɵɵreference(2);\n const ctx_r20 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-option-marked\", !ctx_r20.itemsList.markedItem);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r20.tagTemplate || _r32)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(4, _c3, ctx_r20.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r39 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r39.notFoundText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template, 2, 1, \"ng-template\", null, 31, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r38 = ɵngcc0.ɵɵreference(2);\n const ctx_r21 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r21.notFoundTemplate || _r38)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r21.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r42 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r42.typeToSearchText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template, 2, 1, \"ng-template\", null, 33, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template, 0, 0, \"ng-template\", 18);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r41 = ɵngcc0.ɵɵreference(2);\n const ctx_r22 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r22.typeToSearchTemplate || _r41);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r45 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r45.loadingText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template, 2, 1, \"ng-template\", null, 34, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r44 = ɵngcc0.ɵɵreference(2);\n const ctx_r23 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r23.loadingTextTemplate || _r44)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r23.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_Template(rf, ctx) { if (rf & 1) {\n const _r48 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ng-dropdown-panel\", 22);\n ɵngcc0.ɵɵlistener(\"update\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_update_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r47 = ɵngcc0.ɵɵnextContext(); return ctx_r47.viewPortItems = $event; })(\"scroll\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_scroll_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r49 = ɵngcc0.ɵɵnextContext(); return ctx_r49.scroll.emit($event); })(\"scrollToEnd\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_scrollToEnd_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r50 = ɵngcc0.ɵɵnextContext(); return ctx_r50.scrollToEnd.emit($event); })(\"outsideClick\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_outsideClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r51 = ɵngcc0.ɵɵnextContext(); return ctx_r51.close(); });\n ɵngcc0.ɵɵelementContainerStart(1);\n ɵngcc0.ɵɵtemplate(2, NgSelectComponent_ng_dropdown_panel_13_div_2_Template, 4, 22, \"div\", 23);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_3_Template, 4, 6, \"div\", 24);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵtemplate(4, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template, 4, 4, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(5, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template, 4, 1, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(6, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template, 4, 4, \"ng-container\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"ng-select-multiple\", ctx_r5.multiple);\n ɵngcc0.ɵɵproperty(\"virtualScroll\", ctx_r5.virtualScroll)(\"bufferAmount\", ctx_r5.bufferAmount)(\"appendTo\", ctx_r5.appendTo)(\"position\", ctx_r5.dropdownPosition)(\"headerTemplate\", ctx_r5.headerTemplate)(\"footerTemplate\", ctx_r5.footerTemplate)(\"filterValue\", ctx_r5.searchTerm)(\"items\", ctx_r5.itemsList.filteredItems)(\"markedItem\", ctx_r5.itemsList.markedItem)(\"ngClass\", ctx_r5.appendTo ? ctx_r5.classes : null)(\"id\", ctx_r5.dropdownId);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.viewPortItems)(\"ngForTrackBy\", ctx_r5.trackByOption);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showAddTag);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showNoItemsFound());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showTypeToSearch());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.loading && ctx_r5.itemsList.filteredItems.length === 0);\n} }\nconst unescapedHTMLExp = /[&<>\"']/g;\n/** @type {?} */\nconst hasUnescapedHTMLExp = RegExp(unescapedHTMLExp.source);\n/** @type {?} */\nconst htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n/**\n * @param {?} string\n * @return {?}\n */\nfunction escapeHTML(string) {\n return (string && hasUnescapedHTMLExp.test(string)) ?\n string.replace(unescapedHTMLExp, (/**\n * @param {?} chr\n * @return {?}\n */\n chr => htmlEscapes[chr])) :\n string;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isObject(value) {\n return typeof value === 'object' && isDefined(value);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isPromise(value) {\n return value instanceof Promise;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isFunction(value) {\n return value instanceof Function;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-templates.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgItemLabelDirective {\n /**\n * @param {?} element\n */\n constructor(element) {\n this.element = element;\n this.escape = true;\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n this.element.nativeElement.innerHTML = this.escape ?\n escapeHTML(this.ngItemLabel) :\n this.ngItemLabel;\n }\n}\nNgItemLabelDirective.ɵfac = function NgItemLabelDirective_Factory(t) { return new (t || NgItemLabelDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgItemLabelDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgItemLabelDirective, selectors: [[\"\", \"ngItemLabel\", \"\"]], inputs: { escape: \"escape\", ngItemLabel: \"ngItemLabel\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nNgItemLabelDirective.ctorParameters = () => [\n { type: ElementRef }\n];\nNgItemLabelDirective.propDecorators = {\n ngItemLabel: [{ type: Input }],\n escape: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgItemLabelDirective, [{\n type: Directive,\n args: [{ selector: '[ngItemLabel]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { escape: [{\n type: Input\n }], ngItemLabel: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n NgItemLabelDirective.prototype.ngItemLabel;\n /** @type {?} */\n NgItemLabelDirective.prototype.escape;\n /**\n * @type {?}\n * @private\n */\n NgItemLabelDirective.prototype.element;\n}\nclass NgOptionTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgOptionTemplateDirective.ɵfac = function NgOptionTemplateDirective_Factory(t) { return new (t || NgOptionTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgOptionTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgOptionTemplateDirective, selectors: [[\"\", \"ng-option-tmp\", \"\"]] });\n/** @nocollapse */\nNgOptionTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-option-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgOptionTemplateDirective.prototype.template;\n}\nclass NgOptgroupTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgOptgroupTemplateDirective.ɵfac = function NgOptgroupTemplateDirective_Factory(t) { return new (t || NgOptgroupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgOptgroupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgOptgroupTemplateDirective, selectors: [[\"\", \"ng-optgroup-tmp\", \"\"]] });\n/** @nocollapse */\nNgOptgroupTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptgroupTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-optgroup-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgOptgroupTemplateDirective.prototype.template;\n}\nclass NgLabelTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgLabelTemplateDirective.ɵfac = function NgLabelTemplateDirective_Factory(t) { return new (t || NgLabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLabelTemplateDirective, selectors: [[\"\", \"ng-label-tmp\", \"\"]] });\n/** @nocollapse */\nNgLabelTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLabelTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-label-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgLabelTemplateDirective.prototype.template;\n}\nclass NgMultiLabelTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgMultiLabelTemplateDirective.ɵfac = function NgMultiLabelTemplateDirective_Factory(t) { return new (t || NgMultiLabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgMultiLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgMultiLabelTemplateDirective, selectors: [[\"\", \"ng-multi-label-tmp\", \"\"]] });\n/** @nocollapse */\nNgMultiLabelTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgMultiLabelTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-multi-label-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgMultiLabelTemplateDirective.prototype.template;\n}\nclass NgHeaderTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgHeaderTemplateDirective.ɵfac = function NgHeaderTemplateDirective_Factory(t) { return new (t || NgHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgHeaderTemplateDirective, selectors: [[\"\", \"ng-header-tmp\", \"\"]] });\n/** @nocollapse */\nNgHeaderTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgHeaderTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-header-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgHeaderTemplateDirective.prototype.template;\n}\nclass NgFooterTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgFooterTemplateDirective.ɵfac = function NgFooterTemplateDirective_Factory(t) { return new (t || NgFooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgFooterTemplateDirective, selectors: [[\"\", \"ng-footer-tmp\", \"\"]] });\n/** @nocollapse */\nNgFooterTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgFooterTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-footer-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgFooterTemplateDirective.prototype.template;\n}\nclass NgNotFoundTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgNotFoundTemplateDirective.ɵfac = function NgNotFoundTemplateDirective_Factory(t) { return new (t || NgNotFoundTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgNotFoundTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgNotFoundTemplateDirective, selectors: [[\"\", \"ng-notfound-tmp\", \"\"]] });\n/** @nocollapse */\nNgNotFoundTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgNotFoundTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-notfound-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgNotFoundTemplateDirective.prototype.template;\n}\nclass NgTypeToSearchTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgTypeToSearchTemplateDirective.ɵfac = function NgTypeToSearchTemplateDirective_Factory(t) { return new (t || NgTypeToSearchTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgTypeToSearchTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTypeToSearchTemplateDirective, selectors: [[\"\", \"ng-typetosearch-tmp\", \"\"]] });\n/** @nocollapse */\nNgTypeToSearchTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTypeToSearchTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-typetosearch-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgTypeToSearchTemplateDirective.prototype.template;\n}\nclass NgLoadingTextTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgLoadingTextTemplateDirective.ɵfac = function NgLoadingTextTemplateDirective_Factory(t) { return new (t || NgLoadingTextTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLoadingTextTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLoadingTextTemplateDirective, selectors: [[\"\", \"ng-loadingtext-tmp\", \"\"]] });\n/** @nocollapse */\nNgLoadingTextTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLoadingTextTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-loadingtext-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgLoadingTextTemplateDirective.prototype.template;\n}\nclass NgTagTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgTagTemplateDirective.ɵfac = function NgTagTemplateDirective_Factory(t) { return new (t || NgTagTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgTagTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTagTemplateDirective, selectors: [[\"\", \"ng-tag-tmp\", \"\"]] });\n/** @nocollapse */\nNgTagTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTagTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-tag-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgTagTemplateDirective.prototype.template;\n}\nclass NgLoadingSpinnerTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgLoadingSpinnerTemplateDirective.ɵfac = function NgLoadingSpinnerTemplateDirective_Factory(t) { return new (t || NgLoadingSpinnerTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLoadingSpinnerTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLoadingSpinnerTemplateDirective, selectors: [[\"\", \"ng-loadingspinner-tmp\", \"\"]] });\n/** @nocollapse */\nNgLoadingSpinnerTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLoadingSpinnerTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-loadingspinner-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgLoadingSpinnerTemplateDirective.prototype.template;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/console.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ConsoleService {\n /**\n * @param {?} message\n * @return {?}\n */\n warn(message) {\n console.warn(message);\n }\n}\nConsoleService.ɵfac = function ConsoleService_Factory(t) { return new (t || ConsoleService)(); };\n/** @nocollapse */ ConsoleService.ɵprov = ɵɵdefineInjectable({ factory: function ConsoleService_Factory() { return new ConsoleService(); }, token: ConsoleService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConsoleService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/id.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction newId() {\n // First character is an 'a', it's good practice to tag id to begin with a letter\n return 'axxxxxxxxxxx'.replace(/[x]/g, (/**\n * @param {?} _\n * @return {?}\n */\n function (_) {\n // tslint:disable-next-line:no-bitwise\n /** @type {?} */\n const val = Math.random() * 16 | 0;\n return val.toString(16);\n }));\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/search-helper.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n};\n/**\n * @param {?} text\n * @return {?}\n */\nfunction stripSpecialChars(text) {\n /** @type {?} */\n const match = (/**\n * @param {?} a\n * @return {?}\n */\n (a) => {\n return diacritics[a] || a;\n });\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/items-list.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ItemsList {\n /**\n * @param {?} _ngSelect\n * @param {?} _selectionModel\n */\n constructor(_ngSelect, _selectionModel) {\n this._ngSelect = _ngSelect;\n this._selectionModel = _selectionModel;\n this._items = [];\n this._filteredItems = [];\n this._markedIndex = -1;\n }\n /**\n * @return {?}\n */\n get items() {\n return this._items;\n }\n /**\n * @return {?}\n */\n get filteredItems() {\n return this._filteredItems;\n }\n /**\n * @return {?}\n */\n get markedIndex() {\n return this._markedIndex;\n }\n /**\n * @return {?}\n */\n get selectedItems() {\n return this._selectionModel.value;\n }\n /**\n * @return {?}\n */\n get markedItem() {\n return this._filteredItems[this._markedIndex];\n }\n /**\n * @return {?}\n */\n get noItemsToSelect() {\n return this._ngSelect.hideSelected && this._items.length === this.selectedItems.length;\n }\n /**\n * @return {?}\n */\n get maxItemsSelected() {\n return this._ngSelect.multiple && this._ngSelect.maxSelectedItems <= this.selectedItems.length;\n }\n /**\n * @return {?}\n */\n get lastSelectedItem() {\n /** @type {?} */\n let i = this.selectedItems.length - 1;\n for (; i >= 0; i--) {\n /** @type {?} */\n let item = this.selectedItems[i];\n if (!item.disabled) {\n return item;\n }\n }\n return null;\n }\n /**\n * @param {?} items\n * @return {?}\n */\n setItems(items) {\n this._items = items.map((/**\n * @param {?} item\n * @param {?} index\n * @return {?}\n */\n (item, index) => this.mapItem(item, index)));\n if (this._ngSelect.groupBy) {\n this._groups = this._groupBy(this._items, this._ngSelect.groupBy);\n this._items = this._flatten(this._groups);\n }\n else {\n this._groups = new Map();\n this._groups.set(undefined, this._items);\n }\n this._filteredItems = [...this._items];\n }\n /**\n * @param {?} item\n * @return {?}\n */\n select(item) {\n if (item.selected || this.maxItemsSelected) {\n return;\n }\n /** @type {?} */\n const multiple = this._ngSelect.multiple;\n if (!multiple) {\n this.clearSelected();\n }\n this._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel);\n if (this._ngSelect.hideSelected) {\n this._hideSelected(item);\n }\n }\n /**\n * @param {?} item\n * @return {?}\n */\n unselect(item) {\n if (!item.selected) {\n return;\n }\n this._selectionModel.unselect(item, this._ngSelect.multiple);\n if (this._ngSelect.hideSelected && isDefined(item.index) && this._ngSelect.multiple) {\n this._showSelected(item);\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n findItem(value) {\n /** @type {?} */\n let findBy;\n if (this._ngSelect.compareWith) {\n findBy = (/**\n * @param {?} item\n * @return {?}\n */\n item => this._ngSelect.compareWith(item.value, value));\n }\n else if (this._ngSelect.bindValue) {\n findBy = (/**\n * @param {?} item\n * @return {?}\n */\n item => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value);\n }\n else {\n findBy = (/**\n * @param {?} item\n * @return {?}\n */\n item => item.value === value ||\n !item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel));\n }\n return this._items.find((/**\n * @param {?} item\n * @return {?}\n */\n item => findBy(item)));\n }\n /**\n * @param {?} item\n * @return {?}\n */\n addItem(item) {\n /** @type {?} */\n const option = this.mapItem(item, this._items.length);\n this._items.push(option);\n this._filteredItems.push(option);\n return option;\n }\n /**\n * @param {?=} keepDisabled\n * @return {?}\n */\n clearSelected(keepDisabled = false) {\n this._selectionModel.clear(keepDisabled);\n this._items.forEach((/**\n * @param {?} item\n * @return {?}\n */\n item => {\n item.selected = keepDisabled && item.selected && item.disabled;\n item.marked = false;\n }));\n if (this._ngSelect.hideSelected) {\n this.resetFilteredItems();\n }\n }\n /**\n * @param {?} term\n * @return {?}\n */\n findByLabel(term) {\n term = stripSpecialChars(term).toLocaleLowerCase();\n return this.filteredItems.find((/**\n * @param {?} item\n * @return {?}\n */\n item => {\n /** @type {?} */\n const label = stripSpecialChars(item.label).toLocaleLowerCase();\n return label.substr(0, term.length) === term;\n }));\n }\n /**\n * @param {?} term\n * @return {?}\n */\n filter(term) {\n if (!term) {\n this.resetFilteredItems();\n return;\n }\n this._filteredItems = [];\n term = this._ngSelect.searchFn ? term : stripSpecialChars(term).toLocaleLowerCase();\n /** @type {?} */\n const match = this._ngSelect.searchFn || this._defaultSearchFn;\n /** @type {?} */\n const hideSelected = this._ngSelect.hideSelected;\n for (const key of Array.from(this._groups.keys())) {\n /** @type {?} */\n const matchedItems = [];\n for (const item of this._groups.get(key)) {\n if (hideSelected && (item.parent && item.parent.selected || item.selected)) {\n continue;\n }\n /** @type {?} */\n const searchItem = this._ngSelect.searchFn ? item.value : item;\n if (match(term, searchItem)) {\n matchedItems.push(item);\n }\n }\n if (matchedItems.length > 0) {\n const [last] = matchedItems.slice(-1);\n if (last.parent) {\n /** @type {?} */\n const head = this._items.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === last.parent));\n this._filteredItems.push(head);\n }\n this._filteredItems.push(...matchedItems);\n }\n }\n }\n /**\n * @return {?}\n */\n resetFilteredItems() {\n if (this._filteredItems.length === this._items.length) {\n return;\n }\n if (this._ngSelect.hideSelected && this.selectedItems.length > 0) {\n this._filteredItems = this._items.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.selected));\n }\n else {\n this._filteredItems = this._items;\n }\n }\n /**\n * @return {?}\n */\n unmarkItem() {\n this._markedIndex = -1;\n }\n /**\n * @return {?}\n */\n markNextItem() {\n this._stepToItem(+1);\n }\n /**\n * @return {?}\n */\n markPreviousItem() {\n this._stepToItem(-1);\n }\n /**\n * @param {?} item\n * @return {?}\n */\n markItem(item) {\n this._markedIndex = this._filteredItems.indexOf(item);\n }\n /**\n * @param {?=} markDefault\n * @return {?}\n */\n markSelectedOrDefault(markDefault) {\n if (this._filteredItems.length === 0) {\n return;\n }\n /** @type {?} */\n const lastMarkedIndex = this._getLastMarkedIndex();\n if (lastMarkedIndex > -1) {\n this._markedIndex = lastMarkedIndex;\n }\n else {\n this._markedIndex = markDefault ? this.filteredItems.findIndex((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.disabled)) : -1;\n }\n }\n /**\n * @param {?} option\n * @param {?} key\n * @return {?}\n */\n resolveNested(option, key) {\n if (!isObject(option)) {\n return option;\n }\n if (key.indexOf('.') === -1) {\n return option[key];\n }\n else {\n /** @type {?} */\n let keys = key.split('.');\n /** @type {?} */\n let value = option;\n for (let i = 0, len = keys.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[keys[i]];\n }\n return value;\n }\n }\n /**\n * @param {?} item\n * @param {?} index\n * @return {?}\n */\n mapItem(item, index) {\n /** @type {?} */\n const label = isDefined(item.$ngOptionLabel) ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel);\n /** @type {?} */\n const value = isDefined(item.$ngOptionValue) ? item.$ngOptionValue : item;\n return {\n index: index,\n label: isDefined(label) ? label.toString() : '',\n value: value,\n disabled: item.disabled,\n htmlId: `${this._ngSelect.dropdownId}-${index}`,\n };\n }\n /**\n * @return {?}\n */\n mapSelectedItems() {\n /** @type {?} */\n const multiple = this._ngSelect.multiple;\n for (const selected of this.selectedItems) {\n /** @type {?} */\n const value = this._ngSelect.bindValue ? this.resolveNested(selected.value, this._ngSelect.bindValue) : selected.value;\n /** @type {?} */\n const item = isDefined(value) ? this.findItem(value) : null;\n this._selectionModel.unselect(selected, multiple);\n this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel);\n }\n if (this._ngSelect.hideSelected) {\n this._filteredItems = this.filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => this.selectedItems.indexOf(x) === -1));\n }\n }\n /**\n * @private\n * @param {?} item\n * @return {?}\n */\n _showSelected(item) {\n this._filteredItems.push(item);\n if (item.parent) {\n /** @type {?} */\n const parent = item.parent;\n /** @type {?} */\n const parentExists = this._filteredItems.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === parent));\n if (!parentExists) {\n this._filteredItems.push(parent);\n }\n }\n else if (item.children) {\n for (const child of item.children) {\n child.selected = false;\n this._filteredItems.push(child);\n }\n }\n this._filteredItems = [...this._filteredItems.sort((/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\n (a, b) => (a.index - b.index)))];\n }\n /**\n * @private\n * @param {?} item\n * @return {?}\n */\n _hideSelected(item) {\n this._filteredItems = this._filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item));\n if (item.parent) {\n /** @type {?} */\n const children = item.parent.children;\n if (children.every((/**\n * @param {?} x\n * @return {?}\n */\n x => x.selected))) {\n this._filteredItems = this._filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item.parent));\n }\n }\n else if (item.children) {\n this._filteredItems = this.filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent !== item));\n }\n }\n /**\n * @private\n * @param {?} search\n * @param {?} opt\n * @return {?}\n */\n _defaultSearchFn(search, opt) {\n /** @type {?} */\n const label = stripSpecialChars(opt.label).toLocaleLowerCase();\n return label.indexOf(search) > -1;\n }\n /**\n * @private\n * @param {?} steps\n * @return {?}\n */\n _getNextItemIndex(steps) {\n if (steps > 0) {\n return (this._markedIndex === this._filteredItems.length - 1) ? 0 : (this._markedIndex + 1);\n }\n return (this._markedIndex <= 0) ? (this._filteredItems.length - 1) : (this._markedIndex - 1);\n }\n /**\n * @private\n * @param {?} steps\n * @return {?}\n */\n _stepToItem(steps) {\n if (this._filteredItems.length === 0 || this._filteredItems.every((/**\n * @param {?} x\n * @return {?}\n */\n x => x.disabled))) {\n return;\n }\n this._markedIndex = this._getNextItemIndex(steps);\n if (this.markedItem.disabled) {\n this._stepToItem(steps);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _getLastMarkedIndex() {\n if (this._ngSelect.hideSelected) {\n return -1;\n }\n if (this._markedIndex > -1 && this.markedItem === undefined) {\n return -1;\n }\n /** @type {?} */\n const selectedIndex = this._filteredItems.indexOf(this.lastSelectedItem);\n if (this.lastSelectedItem && selectedIndex < 0) {\n return -1;\n }\n return Math.max(this.markedIndex, selectedIndex);\n }\n /**\n * @private\n * @param {?} items\n * @param {?} prop\n * @return {?}\n */\n _groupBy(items, prop) {\n /** @type {?} */\n const groups = new Map();\n if (items.length === 0) {\n return groups;\n }\n // Check if items are already grouped by given key.\n if (Array.isArray(items[0].value[(/** @type {?} */ (prop))])) {\n for (const item of items) {\n /** @type {?} */\n const children = (item.value[(/** @type {?} */ (prop))] || []).map((/**\n * @param {?} x\n * @param {?} index\n * @return {?}\n */\n (x, index) => this.mapItem(x, index)));\n groups.set(item, children);\n }\n return groups;\n }\n /** @type {?} */\n const isFnKey = isFunction(this._ngSelect.groupBy);\n /** @type {?} */\n const keyFn = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => {\n /** @type {?} */\n let key = isFnKey ? ((/** @type {?} */ (prop)))(item.value) : item.value[(/** @type {?} */ (prop))];\n return isDefined(key) ? key : undefined;\n });\n // Group items by key.\n for (const item of items) {\n /** @type {?} */\n let key = keyFn(item);\n /** @type {?} */\n const group = groups.get(key);\n if (group) {\n group.push(item);\n }\n else {\n groups.set(key, [item]);\n }\n }\n return groups;\n }\n /**\n * @private\n * @param {?} groups\n * @return {?}\n */\n _flatten(groups) {\n /** @type {?} */\n const isGroupByFn = isFunction(this._ngSelect.groupBy);\n /** @type {?} */\n const items = [];\n for (const key of Array.from(groups.keys())) {\n /** @type {?} */\n let i = items.length;\n if (key === undefined) {\n /** @type {?} */\n const withoutGroup = groups.get(undefined) || [];\n items.push(...withoutGroup.map((/**\n * @param {?} x\n * @return {?}\n */\n x => (Object.assign(Object.assign({}, x), { index: i++ })))));\n continue;\n }\n /** @type {?} */\n const isObjectKey = isObject(key);\n /** @type {?} */\n const parent = {\n label: isObjectKey ? '' : String(key),\n children: undefined,\n parent: null,\n index: i++,\n disabled: !this._ngSelect.selectableGroup,\n htmlId: newId(),\n };\n /** @type {?} */\n const groupKey = isGroupByFn ? this._ngSelect.bindLabel : (/** @type {?} */ (this._ngSelect.groupBy));\n /** @type {?} */\n const groupValue = this._ngSelect.groupValue || ((/**\n * @return {?}\n */\n () => {\n if (isObjectKey) {\n return ((/** @type {?} */ (key))).value;\n }\n return { [groupKey]: key };\n }));\n /** @type {?} */\n const children = groups.get(key).map((/**\n * @param {?} x\n * @return {?}\n */\n x => {\n x.parent = parent;\n x.children = undefined;\n x.index = i++;\n return x;\n }));\n parent.children = children;\n parent.value = groupValue(key, children.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value)));\n items.push(parent);\n items.push(...children);\n }\n return items;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._groups;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._items;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._filteredItems;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._markedIndex;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._ngSelect;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._selectionModel;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-select.types.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction NgOption() { }\nif (false) {\n /** @type {?|undefined} */\n NgOption.prototype.index;\n /** @type {?|undefined} */\n NgOption.prototype.htmlId;\n /** @type {?|undefined} */\n NgOption.prototype.selected;\n /** @type {?|undefined} */\n NgOption.prototype.disabled;\n /** @type {?|undefined} */\n NgOption.prototype.marked;\n /** @type {?|undefined} */\n NgOption.prototype.label;\n /** @type {?|undefined} */\n NgOption.prototype.value;\n /** @type {?|undefined} */\n NgOption.prototype.parent;\n /** @type {?|undefined} */\n NgOption.prototype.children;\n /* Skipping unhandled member: [name: string]: any;*/\n}\n/** @enum {number} */\nconst KeyCode = {\n Tab: 9,\n Enter: 13,\n Esc: 27,\n Space: 32,\n ArrowUp: 38,\n ArrowDown: 40,\n Backspace: 8,\n};\nKeyCode[KeyCode.Tab] = 'Tab';\nKeyCode[KeyCode.Enter] = 'Enter';\nKeyCode[KeyCode.Esc] = 'Esc';\nKeyCode[KeyCode.Space] = 'Space';\nKeyCode[KeyCode.ArrowUp] = 'ArrowUp';\nKeyCode[KeyCode.ArrowDown] = 'ArrowDown';\nKeyCode[KeyCode.Backspace] = 'Backspace';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-dropdown-panel.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction ItemsRangeResult() { }\nif (false) {\n /** @type {?} */\n ItemsRangeResult.prototype.scrollHeight;\n /** @type {?} */\n ItemsRangeResult.prototype.topPadding;\n /** @type {?} */\n ItemsRangeResult.prototype.start;\n /** @type {?} */\n ItemsRangeResult.prototype.end;\n}\n/**\n * @record\n */\nfunction PanelDimensions() { }\nif (false) {\n /** @type {?} */\n PanelDimensions.prototype.itemHeight;\n /** @type {?} */\n PanelDimensions.prototype.panelHeight;\n /** @type {?} */\n PanelDimensions.prototype.itemsPerViewport;\n}\nclass NgDropdownPanelService {\n constructor() {\n this._dimensions = {\n itemHeight: 0,\n panelHeight: 0,\n itemsPerViewport: 0\n };\n }\n /**\n * @return {?}\n */\n get dimensions() {\n return this._dimensions;\n }\n /**\n * @param {?} scrollPos\n * @param {?} itemsLength\n * @param {?} buffer\n * @return {?}\n */\n calculateItems(scrollPos, itemsLength, buffer) {\n /** @type {?} */\n const d = this._dimensions;\n /** @type {?} */\n const scrollHeight = d.itemHeight * itemsLength;\n /** @type {?} */\n const scrollTop = Math.max(0, scrollPos);\n /** @type {?} */\n const indexByScrollTop = scrollTop / scrollHeight * itemsLength;\n /** @type {?} */\n let end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));\n /** @type {?} */\n const maxStartEnd = end;\n /** @type {?} */\n const maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);\n /** @type {?} */\n let start = Math.min(maxStart, Math.floor(indexByScrollTop));\n /** @type {?} */\n let topPadding = d.itemHeight * Math.ceil(start) - (d.itemHeight * Math.min(start, buffer));\n topPadding = !isNaN(topPadding) ? topPadding : 0;\n start = !isNaN(start) ? start : -1;\n end = !isNaN(end) ? end : -1;\n start -= buffer;\n start = Math.max(0, start);\n end += buffer;\n end = Math.min(itemsLength, end);\n return {\n topPadding,\n scrollHeight,\n start,\n end\n };\n }\n /**\n * @param {?} itemHeight\n * @param {?} panelHeight\n * @return {?}\n */\n setDimensions(itemHeight, panelHeight) {\n /** @type {?} */\n const itemsPerViewport = Math.max(1, Math.floor(panelHeight / itemHeight));\n this._dimensions = {\n itemHeight,\n panelHeight,\n itemsPerViewport\n };\n }\n /**\n * @param {?} itemTop\n * @param {?} itemHeight\n * @param {?} lastScroll\n * @return {?}\n */\n getScrollTo(itemTop, itemHeight, lastScroll) {\n const { panelHeight } = this.dimensions;\n /** @type {?} */\n const itemBottom = itemTop + itemHeight;\n /** @type {?} */\n const top = lastScroll;\n /** @type {?} */\n const bottom = top + panelHeight;\n if (panelHeight >= itemBottom && lastScroll === itemTop) {\n return null;\n }\n if (itemBottom > bottom) {\n return top + itemBottom - bottom;\n }\n else if (itemTop <= top) {\n return itemTop;\n }\n return null;\n }\n}\nNgDropdownPanelService.ɵfac = function NgDropdownPanelService_Factory(t) { return new (t || NgDropdownPanelService)(); };\nNgDropdownPanelService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgDropdownPanelService, factory: NgDropdownPanelService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgDropdownPanelService, [{\n type: Injectable\n }], function () { return []; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelService.prototype._dimensions;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-dropdown-panel.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst TOP_CSS_CLASS = 'ng-select-top';\n/** @type {?} */\nconst BOTTOM_CSS_CLASS = 'ng-select-bottom';\n/** @type {?} */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\nclass NgDropdownPanelComponent {\n /**\n * @param {?} _renderer\n * @param {?} _zone\n * @param {?} _panelService\n * @param {?} _elementRef\n * @param {?} _document\n */\n constructor(_renderer, _zone, _panelService, _elementRef, _document) {\n this._renderer = _renderer;\n this._zone = _zone;\n this._panelService = _panelService;\n this._document = _document;\n this.items = [];\n this.position = 'auto';\n this.virtualScroll = false;\n this.filterValue = null;\n this.update = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.outsideClick = new EventEmitter();\n this._destroy$ = new Subject();\n this._scrollToEndFired = false;\n this._updateScrollHeight = false;\n this._lastScrollPosition = 0;\n this._dropdown = _elementRef.nativeElement;\n }\n /**\n * @return {?}\n */\n get currentPosition() {\n return this._currentPosition;\n }\n /**\n * @private\n * @return {?}\n */\n get itemsLength() {\n return this._itemsLength;\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n set itemsLength(value) {\n if (value !== this._itemsLength) {\n this._itemsLength = value;\n this._onItemsLengthChanged();\n }\n }\n /**\n * @private\n * @return {?}\n */\n get _startOffset() {\n if (this.markedItem) {\n const { itemHeight, panelHeight } = this._panelService.dimensions;\n /** @type {?} */\n const offset = this.markedItem.index * itemHeight;\n return panelHeight > offset ? 0 : offset;\n }\n return 0;\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleMousedown($event) {\n /** @type {?} */\n const target = (/** @type {?} */ ($event.target));\n if (target.tagName === 'INPUT') {\n return;\n }\n $event.preventDefault();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._select = this._dropdown.parentElement;\n this._virtualPadding = this.paddingElementRef.nativeElement;\n this._scrollablePanel = this.scrollElementRef.nativeElement;\n this._contentPanel = this.contentElementRef.nativeElement;\n this._handleScroll();\n this._handleOutsideClick();\n this._appendDropdown();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.items) {\n /** @type {?} */\n const change = changes.items;\n this._onItemsChange(change.currentValue, change.firstChange);\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._destroy$.unsubscribe();\n if (this.appendTo) {\n this._renderer.removeChild(this._dropdown.parentNode, this._dropdown);\n }\n }\n /**\n * @param {?} option\n * @param {?=} startFromOption\n * @return {?}\n */\n scrollTo(option, startFromOption = false) {\n if (!option) {\n return;\n }\n /** @type {?} */\n const index = this.items.indexOf(option);\n if (index < 0 || index >= this.itemsLength) {\n return;\n }\n /** @type {?} */\n let scrollTo;\n if (this.virtualScroll) {\n /** @type {?} */\n const itemHeight = this._panelService.dimensions.itemHeight;\n scrollTo = this._panelService.getScrollTo(index * itemHeight, itemHeight, this._lastScrollPosition);\n }\n else {\n /** @type {?} */\n const item = this._dropdown.querySelector(`#${option.htmlId}`);\n /** @type {?} */\n const lastScroll = startFromOption ? item.offsetTop : this._lastScrollPosition;\n scrollTo = this._panelService.getScrollTo(item.offsetTop, item.clientHeight, lastScroll);\n }\n if (isDefined(scrollTo)) {\n this._scrollablePanel.scrollTop = scrollTo;\n }\n }\n /**\n * @return {?}\n */\n scrollToTag() {\n /** @type {?} */\n const panel = this._scrollablePanel;\n panel.scrollTop = panel.scrollHeight - panel.clientHeight;\n }\n /**\n * @return {?}\n */\n adjustPosition() {\n /** @type {?} */\n const parent = this._parent.getBoundingClientRect();\n /** @type {?} */\n const select = this._select.getBoundingClientRect();\n this._setOffset(parent, select);\n }\n /**\n * @private\n * @return {?}\n */\n _handleDropdownPosition() {\n this._currentPosition = this._calculateCurrentPosition(this._dropdown);\n if (this._currentPosition === 'top') {\n this._renderer.addClass(this._dropdown, TOP_CSS_CLASS);\n this._renderer.removeClass(this._dropdown, BOTTOM_CSS_CLASS);\n this._renderer.addClass(this._select, TOP_CSS_CLASS);\n this._renderer.removeClass(this._select, BOTTOM_CSS_CLASS);\n }\n else {\n this._renderer.addClass(this._dropdown, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(this._dropdown, TOP_CSS_CLASS);\n this._renderer.addClass(this._select, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(this._select, TOP_CSS_CLASS);\n }\n if (this.appendTo) {\n this._updatePosition();\n }\n this._dropdown.style.opacity = '1';\n }\n /**\n * @private\n * @return {?}\n */\n _handleScroll() {\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n fromEvent(this.scrollElementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER))\n .subscribe((/**\n * @param {?} e\n * @return {?}\n */\n (e) => this._onContentScrolled(e.target.scrollTop)));\n }));\n }\n /**\n * @private\n * @return {?}\n */\n _handleOutsideClick() {\n if (!this._document) {\n return;\n }\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n merge(fromEvent(this._document, 'touchstart', { capture: true }), fromEvent(this._document, 'mousedown', { capture: true })).pipe(takeUntil(this._destroy$))\n .subscribe((/**\n * @param {?} $event\n * @return {?}\n */\n $event => this._checkToClose($event)));\n }));\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _checkToClose($event) {\n if (this._select.contains($event.target) || this._dropdown.contains($event.target)) {\n return;\n }\n /** @type {?} */\n const path = $event.path || ($event.composedPath && $event.composedPath());\n if ($event.target && $event.target.shadowRoot && path && path[0] && this._select.contains(path[0])) {\n return;\n }\n this._zone.run((/**\n * @return {?}\n */\n () => this.outsideClick.emit()));\n }\n /**\n * @private\n * @param {?} items\n * @param {?} firstChange\n * @return {?}\n */\n _onItemsChange(items, firstChange) {\n this.items = items || [];\n this._scrollToEndFired = false;\n this.itemsLength = items.length;\n if (this.virtualScroll) {\n this._updateItemsRange(firstChange);\n }\n else {\n this._updateItems(firstChange);\n }\n }\n /**\n * @private\n * @param {?} firstChange\n * @return {?}\n */\n _updateItems(firstChange) {\n this.update.emit(this.items);\n if (firstChange === false) {\n return;\n }\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n Promise.resolve().then((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(0, panelHeight);\n this._handleDropdownPosition();\n this.scrollTo(this.markedItem, firstChange);\n }));\n }));\n }\n /**\n * @private\n * @param {?} firstChange\n * @return {?}\n */\n _updateItemsRange(firstChange) {\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n this._measureDimensions().then((/**\n * @return {?}\n */\n () => {\n if (firstChange) {\n this._renderItemsRange(this._startOffset);\n this._handleDropdownPosition();\n }\n else {\n this._renderItemsRange();\n }\n }));\n }));\n }\n /**\n * @private\n * @param {?} scrollTop\n * @return {?}\n */\n _onContentScrolled(scrollTop) {\n if (this.virtualScroll) {\n this._renderItemsRange(scrollTop);\n }\n this._lastScrollPosition = scrollTop;\n this._fireScrollToEnd(scrollTop);\n }\n /**\n * @private\n * @param {?} height\n * @return {?}\n */\n _updateVirtualHeight(height) {\n if (this._updateScrollHeight) {\n this._virtualPadding.style.height = `${height}px`;\n this._updateScrollHeight = false;\n }\n }\n /**\n * @private\n * @return {?}\n */\n _onItemsLengthChanged() {\n this._updateScrollHeight = true;\n }\n /**\n * @private\n * @param {?=} scrollTop\n * @return {?}\n */\n _renderItemsRange(scrollTop = null) {\n if (scrollTop && this._lastScrollPosition === scrollTop) {\n return;\n }\n scrollTop = scrollTop || this._scrollablePanel.scrollTop;\n /** @type {?} */\n const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount);\n this._updateVirtualHeight(range.scrollHeight);\n this._contentPanel.style.transform = `translateY(${range.topPadding}px)`;\n this._zone.run((/**\n * @return {?}\n */\n () => {\n this.update.emit(this.items.slice(range.start, range.end));\n this.scroll.emit({ start: range.start, end: range.end });\n }));\n if (isDefined(scrollTop) && this._lastScrollPosition === 0) {\n this._scrollablePanel.scrollTop = scrollTop;\n this._lastScrollPosition = scrollTop;\n }\n }\n /**\n * @private\n * @return {?}\n */\n _measureDimensions() {\n if (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {\n return Promise.resolve(this._panelService.dimensions);\n }\n const [first] = this.items;\n this.update.emit([first]);\n return Promise.resolve().then((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const option = this._dropdown.querySelector(`#${first.htmlId}`);\n /** @type {?} */\n const optionHeight = option.clientHeight;\n this._virtualPadding.style.height = `${optionHeight * this.itemsLength}px`;\n /** @type {?} */\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(optionHeight, panelHeight);\n return this._panelService.dimensions;\n }));\n }\n /**\n * @private\n * @param {?} scrollTop\n * @return {?}\n */\n _fireScrollToEnd(scrollTop) {\n if (this._scrollToEndFired || scrollTop === 0) {\n return;\n }\n /** @type {?} */\n const padding = this.virtualScroll ?\n this._virtualPadding :\n this._contentPanel;\n if (scrollTop + this._dropdown.clientHeight >= padding.clientHeight) {\n this._zone.run((/**\n * @return {?}\n */\n () => this.scrollToEnd.emit()));\n this._scrollToEndFired = true;\n }\n }\n /**\n * @private\n * @param {?} dropdownEl\n * @return {?}\n */\n _calculateCurrentPosition(dropdownEl) {\n if (this.position !== 'auto') {\n return this.position;\n }\n /** @type {?} */\n const selectRect = this._select.getBoundingClientRect();\n /** @type {?} */\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n /** @type {?} */\n const offsetTop = selectRect.top + window.pageYOffset;\n /** @type {?} */\n const height = selectRect.height;\n /** @type {?} */\n const dropdownHeight = dropdownEl.getBoundingClientRect().height;\n if (offsetTop + height + dropdownHeight > scrollTop + document.documentElement.clientHeight) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n /**\n * @private\n * @return {?}\n */\n _appendDropdown() {\n if (!this.appendTo) {\n return;\n }\n this._parent = document.querySelector(this.appendTo);\n if (!parent) {\n throw new Error(`appendTo selector ${this.appendTo} did not found any parent element`);\n }\n this._parent.appendChild(this._dropdown);\n }\n /**\n * @private\n * @return {?}\n */\n _updatePosition() {\n /** @type {?} */\n const select = this._select.getBoundingClientRect();\n /** @type {?} */\n const parent = this._parent.getBoundingClientRect();\n /** @type {?} */\n const offsetLeft = select.left - parent.left;\n this._setOffset(parent, select);\n this._dropdown.style.left = offsetLeft + 'px';\n this._dropdown.style.width = select.width + 'px';\n this._dropdown.style.minWidth = select.width + 'px';\n }\n /**\n * @private\n * @param {?} parent\n * @param {?} select\n * @return {?}\n */\n _setOffset(parent, select) {\n /** @type {?} */\n const delta = select.height;\n if (this._currentPosition === 'top') {\n /** @type {?} */\n const offsetBottom = parent.bottom - select.bottom;\n this._dropdown.style.bottom = offsetBottom + delta + 'px';\n this._dropdown.style.top = 'auto';\n }\n else if (this._currentPosition === 'bottom') {\n /** @type {?} */\n const offsetTop = select.top - parent.top;\n this._dropdown.style.top = offsetTop + delta + 'px';\n this._dropdown.style.bottom = 'auto';\n }\n }\n}\nNgDropdownPanelComponent.ɵfac = function NgDropdownPanelComponent_Factory(t) { return new (t || NgDropdownPanelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgDropdownPanelService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8)); };\nNgDropdownPanelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgDropdownPanelComponent, selectors: [[\"ng-dropdown-panel\"]], viewQuery: function NgDropdownPanelComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c1, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c2, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentElementRef = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.scrollElementRef = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.paddingElementRef = _t.first);\n } }, hostBindings: function NgDropdownPanelComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgDropdownPanelComponent_mousedown_HostBindingHandler($event) { return ctx.handleMousedown($event); });\n } }, inputs: { items: \"items\", position: \"position\", virtualScroll: \"virtualScroll\", filterValue: \"filterValue\", markedItem: \"markedItem\", appendTo: \"appendTo\", bufferAmount: \"bufferAmount\", headerTemplate: \"headerTemplate\", footerTemplate: \"footerTemplate\" }, outputs: { update: \"update\", scroll: \"scroll\", scrollToEnd: \"scrollToEnd\", outsideClick: \"outsideClick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c4, decls: 9, vars: 6, consts: [[\"class\", \"ng-dropdown-header\", 4, \"ngIf\"], [1, \"ng-dropdown-panel-items\", \"scroll-host\"], [\"scroll\", \"\"], [\"padding\", \"\"], [\"content\", \"\"], [\"class\", \"ng-dropdown-footer\", 4, \"ngIf\"], [1, \"ng-dropdown-header\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ng-dropdown-footer\"]], template: function NgDropdownPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgDropdownPanelComponent_div_0_Template, 2, 4, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"div\", null, 3);\n ɵngcc0.ɵɵelementStart(5, \"div\", null, 4);\n ɵngcc0.ɵɵprojection(7);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(8, NgDropdownPanelComponent_div_8_Template, 2, 4, \"div\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.headerTemplate);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵclassProp(\"total-padding\", ctx.virtualScroll);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"scrollable-content\", ctx.virtualScroll && ctx.items.length);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.footerTemplate);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgDropdownPanelComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: NgZone },\n { type: NgDropdownPanelService },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\n];\nNgDropdownPanelComponent.propDecorators = {\n items: [{ type: Input }],\n markedItem: [{ type: Input }],\n position: [{ type: Input }],\n appendTo: [{ type: Input }],\n bufferAmount: [{ type: Input }],\n virtualScroll: [{ type: Input }],\n headerTemplate: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n filterValue: [{ type: Input }],\n update: [{ type: Output }],\n scroll: [{ type: Output }],\n scrollToEnd: [{ type: Output }],\n outsideClick: [{ type: Output }],\n contentElementRef: [{ type: ViewChild, args: ['content', { read: ElementRef, static: true },] }],\n scrollElementRef: [{ type: ViewChild, args: ['scroll', { read: ElementRef, static: true },] }],\n paddingElementRef: [{ type: ViewChild, args: ['padding', { read: ElementRef, static: true },] }],\n handleMousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgDropdownPanelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'ng-dropdown-panel',\n template: `\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n
\n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: NgDropdownPanelService }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { items: [{\n type: Input\n }], position: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], filterValue: [{\n type: Input\n }], update: [{\n type: Output\n }], scroll: [{\n type: Output\n }], scrollToEnd: [{\n type: Output\n }], outsideClick: [{\n type: Output\n }], \n /**\n * @param {?} $event\n * @return {?}\n */\n handleMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], markedItem: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], bufferAmount: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], contentElementRef: [{\n type: ViewChild,\n args: ['content', { read: ElementRef, static: true }]\n }], scrollElementRef: [{\n type: ViewChild,\n args: ['scroll', { read: ElementRef, static: true }]\n }], paddingElementRef: [{\n type: ViewChild,\n args: ['padding', { read: ElementRef, static: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n NgDropdownPanelComponent.prototype.items;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.markedItem;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.position;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.appendTo;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.bufferAmount;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.virtualScroll;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.headerTemplate;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.footerTemplate;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.filterValue;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.update;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.scroll;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.scrollToEnd;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.outsideClick;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.contentElementRef;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.scrollElementRef;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.paddingElementRef;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._destroy$;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._dropdown;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._virtualPadding;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._scrollablePanel;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._contentPanel;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._select;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._parent;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._scrollToEndFired;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._updateScrollHeight;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._lastScrollPosition;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._currentPosition;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._itemsLength;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._zone;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._panelService;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._document;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-option.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgOptionComponent {\n /**\n * @param {?} elementRef\n */\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.stateChange$ = new Subject();\n this._disabled = false;\n }\n /**\n * @return {?}\n */\n get disabled() { return this._disabled; }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) { this._disabled = this._isDisabled(value); }\n /**\n * @return {?}\n */\n get label() {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled\n });\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n label: this.elementRef.nativeElement.innerHTML\n });\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n _isDisabled(value) {\n return value != null && `${value}` !== 'false';\n }\n}\nNgOptionComponent.ɵfac = function NgOptionComponent_Factory(t) { return new (t || NgOptionComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgOptionComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgOptionComponent, selectors: [[\"ng-option\"]], inputs: { disabled: \"disabled\", value: \"value\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c4, decls: 1, vars: 0, template: function NgOptionComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgOptionComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nNgOptionComponent.propDecorators = {\n value: [{ type: Input }],\n disabled: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionComponent, [{\n type: Component,\n args: [{\n selector: 'ng-option',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n NgOptionComponent.prototype.value;\n /** @type {?} */\n NgOptionComponent.prototype.stateChange$;\n /**\n * @type {?}\n * @private\n */\n NgOptionComponent.prototype._disabled;\n /**\n * @type {?}\n * @private\n */\n NgOptionComponent.prototype._previousLabel;\n /** @type {?} */\n NgOptionComponent.prototype.elementRef;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/config.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgSelectConfig {\n constructor() {\n this.notFoundText = 'No items found';\n this.typeToSearchText = 'Type to search';\n this.addTagText = 'Add item';\n this.loadingText = 'Loading...';\n this.clearAllText = 'Clear all';\n this.disableVirtualScroll = true;\n this.openOnEnter = true;\n this.appearance = 'underline';\n }\n}\nNgSelectConfig.ɵfac = function NgSelectConfig_Factory(t) { return new (t || NgSelectConfig)(); };\n/** @nocollapse */ NgSelectConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgSelectConfig_Factory() { return new NgSelectConfig(); }, token: NgSelectConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\nif (false) {\n /** @type {?} */\n NgSelectConfig.prototype.placeholder;\n /** @type {?} */\n NgSelectConfig.prototype.notFoundText;\n /** @type {?} */\n NgSelectConfig.prototype.typeToSearchText;\n /** @type {?} */\n NgSelectConfig.prototype.addTagText;\n /** @type {?} */\n NgSelectConfig.prototype.loadingText;\n /** @type {?} */\n NgSelectConfig.prototype.clearAllText;\n /** @type {?} */\n NgSelectConfig.prototype.disableVirtualScroll;\n /** @type {?} */\n NgSelectConfig.prototype.openOnEnter;\n /** @type {?} */\n NgSelectConfig.prototype.appendTo;\n /** @type {?} */\n NgSelectConfig.prototype.bindValue;\n /** @type {?} */\n NgSelectConfig.prototype.appearance;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-select.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst SELECTION_MODEL_FACTORY = new InjectionToken('ng-select-selection-model');\nclass NgSelectComponent {\n /**\n * @param {?} classes\n * @param {?} autoFocus\n * @param {?} config\n * @param {?} newSelectionModel\n * @param {?} _elementRef\n * @param {?} _cd\n * @param {?} _console\n */\n constructor(classes, autoFocus, config, newSelectionModel, _elementRef, _cd, _console) {\n this.classes = classes;\n this.autoFocus = autoFocus;\n this._cd = _cd;\n this._console = _console;\n this.markFirst = true;\n this.dropdownPosition = 'auto';\n this.loading = false;\n this.closeOnSelect = true;\n this.hideSelected = false;\n this.selectOnTab = false;\n this.bufferAmount = 4;\n this.selectableGroup = false;\n this.selectableGroupAsModel = true;\n this.searchFn = null;\n this.trackByFn = null;\n this.clearOnBackspace = true;\n this.labelForId = null;\n this.inputAttrs = {};\n this.readonly = false;\n this.searchWhileComposing = true;\n this.minTermLength = 0;\n this.editableSearchTerm = false;\n this.keyDownFn = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => true);\n this.multiple = false;\n this.addTag = false;\n this.searchable = true;\n this.clearable = true;\n this.isOpen = false;\n // output events\n this.blurEvent = new EventEmitter();\n this.focusEvent = new EventEmitter();\n this.changeEvent = new EventEmitter();\n this.openEvent = new EventEmitter();\n this.closeEvent = new EventEmitter();\n this.searchEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.addEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.viewPortItems = [];\n this.searchTerm = null;\n this.dropdownId = newId();\n this.escapeHTML = true;\n this.useDefaultClass = true;\n this._items = [];\n this._defaultLabel = 'label';\n this._pressedKeys = [];\n this._isComposing = false;\n this._destroy$ = new Subject();\n this._keyPress$ = new Subject();\n this._onChange = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => { });\n this._onTouched = (/**\n * @return {?}\n */\n () => { });\n this.clearItem = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => {\n /** @type {?} */\n const option = this.selectedItems.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value === item));\n this.unselect(option);\n });\n this.trackByOption = (/**\n * @param {?} _\n * @param {?} item\n * @return {?}\n */\n (_, item) => {\n if (this.trackByFn) {\n return this.trackByFn(item.value);\n }\n return item;\n });\n this._mergeGlobalConfig(config);\n this.itemsList = new ItemsList(this, newSelectionModel());\n this.element = _elementRef.nativeElement;\n }\n /**\n * @return {?}\n */\n get items() { return this._items; }\n ;\n /**\n * @param {?} value\n * @return {?}\n */\n set items(value) {\n this._itemsAreUsed = true;\n this._items = value;\n }\n ;\n /**\n * @return {?}\n */\n get compareWith() { return this._compareWith; }\n /**\n * @param {?} fn\n * @return {?}\n */\n set compareWith(fn) {\n if (!isFunction(fn)) {\n throw Error('`compareWith` must be a function.');\n }\n this._compareWith = fn;\n }\n /**\n * @return {?}\n */\n get clearSearchOnAdd() { return isDefined(this._clearSearchOnAdd) ? this._clearSearchOnAdd : this.closeOnSelect; }\n ;\n /**\n * @param {?} value\n * @return {?}\n */\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n ;\n /**\n * @return {?}\n */\n get disabled() { return this.readonly || this._disabled; }\n ;\n /**\n * @return {?}\n */\n get filtered() { return (!!this.searchTerm && this.searchable || this._isComposing); }\n ;\n /**\n * @private\n * @return {?}\n */\n get _editableSearchTerm() {\n return this.editableSearchTerm && !this.multiple;\n }\n /**\n * @return {?}\n */\n get selectedItems() {\n return this.itemsList.selectedItems;\n }\n /**\n * @return {?}\n */\n get selectedValues() {\n return this.selectedItems.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value));\n }\n /**\n * @return {?}\n */\n get hasValue() {\n return this.selectedItems.length > 0;\n }\n /**\n * @return {?}\n */\n get currentPanelPosition() {\n if (this.dropdownPanel) {\n return this.dropdownPanel.currentPosition;\n }\n return undefined;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._handleKeyPresses();\n this._setInputAttributes();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.multiple) {\n this.itemsList.clearSelected();\n }\n if (changes.items) {\n this._setItems(changes.items.currentValue || []);\n }\n if (changes.isOpen) {\n this._manualOpen = isDefined(changes.isOpen.currentValue);\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this.escapeHTML = false;\n this._setItemsFromNgOptions();\n }\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleKeyDown($event) {\n /** @type {?} */\n const keyCode = KeyCode[$event.which];\n if (keyCode) {\n if (this.keyDownFn($event) === false) {\n return;\n }\n this.handleKeyCode($event);\n }\n else if ($event.key && $event.key.length === 1) {\n this._keyPress$.next($event.key.toLocaleLowerCase());\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleKeyCode($event) {\n switch ($event.which) {\n case KeyCode.ArrowDown:\n this._handleArrowDown($event);\n break;\n case KeyCode.ArrowUp:\n this._handleArrowUp($event);\n break;\n case KeyCode.Space:\n this._handleSpace($event);\n break;\n case KeyCode.Enter:\n this._handleEnter($event);\n break;\n case KeyCode.Tab:\n this._handleTab($event);\n break;\n case KeyCode.Esc:\n this.close();\n $event.preventDefault();\n break;\n case KeyCode.Backspace:\n this._handleBackspace();\n break;\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleMousedown($event) {\n /** @type {?} */\n const target = (/** @type {?} */ ($event.target));\n if (target.tagName !== 'INPUT') {\n $event.preventDefault();\n }\n if (target.classList.contains('ng-clear-wrapper')) {\n this.handleClearClick();\n return;\n }\n if (target.classList.contains('ng-arrow-wrapper')) {\n this.handleArrowClick();\n return;\n }\n if (target.classList.contains('ng-value-icon')) {\n return;\n }\n if (!this.focused) {\n this.focus();\n }\n if (this.searchable) {\n this.open();\n }\n else {\n this.toggle();\n }\n }\n /**\n * @return {?}\n */\n handleArrowClick() {\n if (this.isOpen) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * @return {?}\n */\n handleClearClick() {\n if (this.hasValue) {\n this.itemsList.clearSelected(true);\n this._updateNgModel();\n }\n this._clearSearch();\n this.focus();\n this.clearEvent.emit();\n this._onSelectionChanged();\n }\n /**\n * @return {?}\n */\n clearModel() {\n if (!this.clearable) {\n return;\n }\n this.itemsList.clearSelected();\n this._updateNgModel();\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this.itemsList.clearSelected();\n this._handleWriteValue(value);\n this._cd.markForCheck();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * @param {?} state\n * @return {?}\n */\n setDisabledState(state) {\n this._disabled = state;\n this._cd.markForCheck();\n }\n /**\n * @return {?}\n */\n toggle() {\n if (!this.isOpen) {\n this.open();\n }\n else {\n this.close();\n }\n }\n /**\n * @return {?}\n */\n open() {\n if (this.disabled || this.isOpen || this.itemsList.maxItemsSelected || this._manualOpen) {\n return;\n }\n if (!this._isTypeahead && !this.addTag && this.itemsList.noItemsToSelect) {\n return;\n }\n this.isOpen = true;\n this.itemsList.markSelectedOrDefault(this.markFirst);\n this.openEvent.emit();\n if (!this.searchTerm) {\n this.focus();\n }\n this.detectChanges();\n }\n /**\n * @return {?}\n */\n close() {\n if (!this.isOpen || this._manualOpen) {\n return;\n }\n this.isOpen = false;\n if (!this._editableSearchTerm) {\n this._clearSearch();\n }\n else {\n this.itemsList.resetFilteredItems();\n }\n this.itemsList.unmarkItem();\n this._onTouched();\n this.closeEvent.emit();\n this._cd.markForCheck();\n }\n /**\n * @param {?} item\n * @return {?}\n */\n toggleItem(item) {\n if (!item || item.disabled || this.disabled) {\n return;\n }\n if (this.multiple && item.selected) {\n this.unselect(item);\n }\n else {\n this.select(item);\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this._onSelectionChanged();\n }\n /**\n * @param {?} item\n * @return {?}\n */\n select(item) {\n if (!item.selected) {\n this.itemsList.select(item);\n if (this.clearSearchOnAdd && !this._editableSearchTerm) {\n this._clearSearch();\n }\n this._updateNgModel();\n if (this.multiple) {\n this.addEvent.emit(item.value);\n }\n }\n if (this.closeOnSelect || this.itemsList.noItemsToSelect) {\n this.close();\n }\n }\n /**\n * @return {?}\n */\n focus() {\n this.searchInput.nativeElement.focus();\n }\n /**\n * @return {?}\n */\n blur() {\n this.searchInput.nativeElement.blur();\n }\n /**\n * @param {?} item\n * @return {?}\n */\n unselect(item) {\n if (!item) {\n return;\n }\n this.itemsList.unselect(item);\n this.focus();\n this._updateNgModel();\n this.removeEvent.emit(item);\n }\n /**\n * @return {?}\n */\n selectTag() {\n /** @type {?} */\n let tag;\n if (isFunction(this.addTag)) {\n tag = ((/** @type {?} */ (this.addTag)))(this.searchTerm);\n }\n else {\n tag = this._primitive ? this.searchTerm : { [this.bindLabel]: this.searchTerm };\n }\n /** @type {?} */\n const handleTag = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item));\n if (isPromise(tag)) {\n tag.then((/**\n * @param {?} item\n * @return {?}\n */\n item => this.select(handleTag(item)))).catch((/**\n * @return {?}\n */\n () => { }));\n }\n else if (tag) {\n this.select(handleTag(tag));\n }\n }\n /**\n * @return {?}\n */\n showClear() {\n return this.clearable && (this.hasValue || this.searchTerm) && !this.disabled;\n }\n /**\n * @return {?}\n */\n get showAddTag() {\n if (!this._validTerm) {\n return false;\n }\n /** @type {?} */\n const term = this.searchTerm.toLowerCase().trim();\n return this.addTag &&\n (!this.itemsList.filteredItems.some((/**\n * @param {?} x\n * @return {?}\n */\n x => x.label.toLowerCase() === term)) &&\n (!this.hideSelected && this.isOpen || !this.selectedItems.some((/**\n * @param {?} x\n * @return {?}\n */\n x => x.label.toLowerCase() === term)))) &&\n !this.loading;\n }\n /**\n * @return {?}\n */\n showNoItemsFound() {\n /** @type {?} */\n const empty = this.itemsList.filteredItems.length === 0;\n return ((empty && !this._isTypeahead && !this.loading) ||\n (empty && this._isTypeahead && this._validTerm && !this.loading)) &&\n !this.showAddTag;\n }\n /**\n * @return {?}\n */\n showTypeToSearch() {\n /** @type {?} */\n const empty = this.itemsList.filteredItems.length === 0;\n return empty && this._isTypeahead && !this._validTerm && !this.loading;\n }\n /**\n * @return {?}\n */\n onCompositionStart() {\n this._isComposing = true;\n }\n /**\n * @param {?} term\n * @return {?}\n */\n onCompositionEnd(term) {\n this._isComposing = false;\n if (this.searchWhileComposing) {\n return;\n }\n this.filter(term);\n }\n /**\n * @param {?} term\n * @return {?}\n */\n filter(term) {\n if (this._isComposing && !this.searchWhileComposing) {\n return;\n }\n this.searchTerm = term;\n if (this._isTypeahead && (this._validTerm || this.minTermLength === 0)) {\n this.typeahead.next(term);\n }\n if (!this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n if (this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n this.searchEvent.emit({ term, items: this.itemsList.filteredItems.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value)) });\n this.open();\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onInputFocus($event) {\n if (this.focused) {\n return;\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.element.classList.add('ng-select-focused');\n this.focusEvent.emit($event);\n this.focused = true;\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onInputBlur($event) {\n this.element.classList.remove('ng-select-focused');\n this.blurEvent.emit($event);\n if (!this.isOpen && !this.disabled) {\n this._onTouched();\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.focused = false;\n }\n /**\n * @param {?} item\n * @return {?}\n */\n onItemHover(item) {\n if (item.disabled) {\n return;\n }\n this.itemsList.markItem(item);\n }\n /**\n * @return {?}\n */\n detectChanges() {\n if (!((/** @type {?} */ (this._cd))).destroyed) {\n this._cd.detectChanges();\n }\n }\n /**\n * @private\n * @return {?}\n */\n _setSearchTermFromItems() {\n /** @type {?} */\n const selected = this.selectedItems && this.selectedItems[0];\n this.searchTerm = (selected && selected.label) || null;\n }\n /**\n * @private\n * @param {?} items\n * @return {?}\n */\n _setItems(items) {\n /** @type {?} */\n const firstItem = items[0];\n this.bindLabel = this.bindLabel || this._defaultLabel;\n this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel === this._defaultLabel;\n this.itemsList.setItems(items);\n if (items.length > 0 && this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n if (this.isOpen && isDefined(this.searchTerm) && !this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n }\n if (this._isTypeahead || this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _setItemsFromNgOptions() {\n /** @type {?} */\n const mapNgOptions = (/**\n * @param {?} options\n * @return {?}\n */\n (options) => {\n this.items = options.map((/**\n * @param {?} option\n * @return {?}\n */\n option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled\n })));\n this.itemsList.setItems(this.items);\n if (this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n this.detectChanges();\n });\n /** @type {?} */\n const handleOptionChange = (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const changedOrDestroyed = merge(this.ngOptions.changes, this._destroy$);\n merge(...this.ngOptions.map((/**\n * @param {?} option\n * @return {?}\n */\n option => option.stateChange$)))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe((/**\n * @param {?} option\n * @return {?}\n */\n option => {\n /** @type {?} */\n const item = this.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this._cd.detectChanges();\n }));\n });\n this.ngOptions.changes\n .pipe(startWith(this.ngOptions), takeUntil(this._destroy$))\n .subscribe((/**\n * @param {?} options\n * @return {?}\n */\n options => {\n this.bindLabel = this._defaultLabel;\n mapNgOptions(options);\n handleOptionChange();\n }));\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n _isValidWriteValue(value) {\n if (!isDefined(value) || (this.multiple && value === '') || Array.isArray(value) && value.length === 0) {\n return false;\n }\n /** @type {?} */\n const validateBinding = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => {\n if (!isDefined(this.compareWith) && isObject(item) && this.bindValue) {\n this._console.warn(`Binding object(${JSON.stringify(item)}) with bindValue is not allowed.`);\n return false;\n }\n return true;\n });\n if (this.multiple) {\n if (!Array.isArray(value)) {\n this._console.warn('Multiple select ngModel should be array.');\n return false;\n }\n return value.every((/**\n * @param {?} item\n * @return {?}\n */\n item => validateBinding(item)));\n }\n else {\n return validateBinding(value);\n }\n }\n /**\n * @private\n * @param {?} ngModel\n * @return {?}\n */\n _handleWriteValue(ngModel) {\n if (!this._isValidWriteValue(ngModel)) {\n return;\n }\n /** @type {?} */\n const select = (/**\n * @param {?} val\n * @return {?}\n */\n (val) => {\n /** @type {?} */\n let item = this.itemsList.findItem(val);\n if (item) {\n this.itemsList.select(item);\n }\n else {\n /** @type {?} */\n const isValObject = isObject(val);\n /** @type {?} */\n const isPrimitive = !isValObject && !this.bindValue;\n if ((isValObject || isPrimitive)) {\n this.itemsList.select(this.itemsList.mapItem(val, null));\n }\n else if (this.bindValue) {\n item = {\n [this.bindLabel]: null,\n [this.bindValue]: val\n };\n this.itemsList.select(this.itemsList.mapItem(item, null));\n }\n }\n });\n if (this.multiple) {\n ((/** @type {?} */ (ngModel))).forEach((/**\n * @param {?} item\n * @return {?}\n */\n item => select(item)));\n }\n else {\n select(ngModel);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _handleKeyPresses() {\n if (this.searchable) {\n return;\n }\n this._keyPress$\n .pipe(takeUntil(this._destroy$), tap((/**\n * @param {?} letter\n * @return {?}\n */\n letter => this._pressedKeys.push(letter))), debounceTime(200), filter((/**\n * @return {?}\n */\n () => this._pressedKeys.length > 0)), map((/**\n * @return {?}\n */\n () => this._pressedKeys.join(''))))\n .subscribe((/**\n * @param {?} term\n * @return {?}\n */\n term => {\n /** @type {?} */\n const item = this.itemsList.findByLabel(term);\n if (item) {\n if (this.isOpen) {\n this.itemsList.markItem(item);\n this._cd.markForCheck();\n }\n else {\n this.select(item);\n }\n }\n this._pressedKeys = [];\n }));\n }\n /**\n * @private\n * @return {?}\n */\n _setInputAttributes() {\n /** @type {?} */\n const input = this.searchInput.nativeElement;\n /** @type {?} */\n const attributes = Object.assign({ type: 'text', autocorrect: 'off', autocapitalize: 'off', autocomplete: this.labelForId ? 'off' : this.dropdownId }, this.inputAttrs);\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, attributes[key]);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _updateNgModel() {\n /** @type {?} */\n const model = [];\n for (const item of this.selectedItems) {\n if (this.bindValue) {\n /** @type {?} */\n let value = null;\n if (item.children) {\n /** @type {?} */\n const groupKey = this.groupValue ? this.bindValue : (/** @type {?} */ (this.groupBy));\n value = item.value[groupKey || (/** @type {?} */ (this.groupBy))];\n }\n else {\n value = this.itemsList.resolveNested(item.value, this.bindValue);\n }\n model.push(value);\n }\n else {\n model.push(item.value);\n }\n }\n /** @type {?} */\n const selected = this.selectedItems.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value));\n if (this.multiple) {\n this._onChange(model);\n this.changeEvent.emit(selected);\n }\n else {\n this._onChange(isDefined(model[0]) ? model[0] : null);\n this.changeEvent.emit(selected[0]);\n }\n this._cd.markForCheck();\n }\n /**\n * @private\n * @return {?}\n */\n _clearSearch() {\n if (!this.searchTerm) {\n return;\n }\n this._changeSearch(null);\n this.itemsList.resetFilteredItems();\n }\n /**\n * @private\n * @param {?} searchTerm\n * @return {?}\n */\n _changeSearch(searchTerm) {\n this.searchTerm = searchTerm;\n if (this._isTypeahead) {\n this.typeahead.next(searchTerm);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _scrollToMarked() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollTo(this.itemsList.markedItem);\n }\n /**\n * @private\n * @return {?}\n */\n _scrollToTag() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollToTag();\n }\n /**\n * @private\n * @return {?}\n */\n _onSelectionChanged() {\n if (this.isOpen && this.multiple && this.appendTo) {\n // Make sure items are rendered.\n this._cd.detectChanges();\n this.dropdownPanel.adjustPosition();\n }\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleTab($event) {\n if (this.isOpen === false && !this.addTag) {\n return;\n }\n if (this.selectOnTab) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n $event.preventDefault();\n }\n else if (this.showAddTag) {\n this.selectTag();\n $event.preventDefault();\n }\n else {\n this.close();\n }\n }\n else {\n this.close();\n }\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleEnter($event) {\n if (this.isOpen || this._manualOpen) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n }\n else if (this.showAddTag) {\n this.selectTag();\n }\n }\n else if (this.openOnEnter) {\n this.open();\n }\n else {\n return;\n }\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleSpace($event) {\n if (this.isOpen || this._manualOpen) {\n return;\n }\n this.open();\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleArrowDown($event) {\n if (this._nextItemIsTag(+1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markNextItem();\n this._scrollToMarked();\n }\n this.open();\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleArrowUp($event) {\n if (!this.isOpen) {\n return;\n }\n if (this._nextItemIsTag(-1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markPreviousItem();\n this._scrollToMarked();\n }\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} nextStep\n * @return {?}\n */\n _nextItemIsTag(nextStep) {\n /** @type {?} */\n const nextIndex = this.itemsList.markedIndex + nextStep;\n return this.addTag && this.searchTerm\n && this.itemsList.markedItem\n && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n }\n /**\n * @private\n * @return {?}\n */\n _handleBackspace() {\n if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {\n return;\n }\n if (this.multiple) {\n this.unselect(this.itemsList.lastSelectedItem);\n }\n else {\n this.clearModel();\n }\n }\n /**\n * @private\n * @return {?}\n */\n get _isTypeahead() {\n return this.typeahead && this.typeahead.observers.length > 0;\n }\n /**\n * @private\n * @return {?}\n */\n get _validTerm() {\n /** @type {?} */\n const term = this.searchTerm && this.searchTerm.trim();\n return term && term.length >= this.minTermLength;\n }\n /**\n * @private\n * @param {?} config\n * @return {?}\n */\n _mergeGlobalConfig(config) {\n this.placeholder = this.placeholder || config.placeholder;\n this.notFoundText = this.notFoundText || config.notFoundText;\n this.typeToSearchText = this.typeToSearchText || config.typeToSearchText;\n this.addTagText = this.addTagText || config.addTagText;\n this.loadingText = this.loadingText || config.loadingText;\n this.clearAllText = this.clearAllText || config.clearAllText;\n this.virtualScroll = isDefined(this.virtualScroll)\n ? this.virtualScroll\n : isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;\n this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;\n this.appendTo = this.appendTo || config.appendTo;\n this.bindValue = this.bindValue || config.bindValue;\n this.appearance = this.appearance || config.appearance;\n }\n}\nNgSelectComponent.ɵfac = function NgSelectComponent_Factory(t) { return new (t || NgSelectComponent)(ɵngcc0.ɵɵinjectAttribute('class'), ɵngcc0.ɵɵinjectAttribute('autofocus'), ɵngcc0.ɵɵdirectiveInject(NgSelectConfig), ɵngcc0.ɵɵdirectiveInject(SELECTION_MODEL_FACTORY), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ConsoleService)); };\nNgSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgSelectComponent, selectors: [[\"ng-select\"]], contentQueries: function NgSelectComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptionTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptgroupTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLabelTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgMultiLabelTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgHeaderTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgFooterTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgNotFoundTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgTypeToSearchTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLoadingTextTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgTagTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLoadingSpinnerTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptionComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optgroupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.multiLabelTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.notFoundTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.typeToSearchTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadingTextTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadingSpinnerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ngOptions = _t);\n } }, viewQuery: function NgSelectComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgDropdownPanelComponent, 5);\n ɵngcc0.ɵɵviewQuery(_c5, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropdownPanel = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);\n } }, hostAttrs: [\"role\", \"listbox\"], hostVars: 20, hostBindings: function NgSelectComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function NgSelectComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-select\", ctx.useDefaultClass)(\"ng-select-single\", !ctx.multiple)(\"ng-select-multiple\", ctx.multiple)(\"ng-select-taggable\", ctx.addTag)(\"ng-select-searchable\", ctx.searchable)(\"ng-select-clearable\", ctx.clearable)(\"ng-select-opened\", ctx.isOpen)(\"ng-select-disabled\", ctx.disabled)(\"ng-select-filtered\", ctx.filtered)(\"ng-select-typeahead\", ctx.typeahead);\n } }, inputs: { markFirst: \"markFirst\", dropdownPosition: \"dropdownPosition\", loading: \"loading\", closeOnSelect: \"closeOnSelect\", hideSelected: \"hideSelected\", selectOnTab: \"selectOnTab\", bufferAmount: \"bufferAmount\", selectableGroup: \"selectableGroup\", selectableGroupAsModel: \"selectableGroupAsModel\", searchFn: \"searchFn\", trackByFn: \"trackByFn\", clearOnBackspace: \"clearOnBackspace\", labelForId: \"labelForId\", inputAttrs: \"inputAttrs\", readonly: \"readonly\", searchWhileComposing: \"searchWhileComposing\", minTermLength: \"minTermLength\", editableSearchTerm: \"editableSearchTerm\", keyDownFn: \"keyDownFn\", multiple: \"multiple\", addTag: \"addTag\", searchable: \"searchable\", clearable: \"clearable\", isOpen: \"isOpen\", items: \"items\", compareWith: \"compareWith\", clearSearchOnAdd: \"clearSearchOnAdd\", bindLabel: \"bindLabel\", placeholder: \"placeholder\", notFoundText: \"notFoundText\", typeToSearchText: \"typeToSearchText\", addTagText: \"addTagText\", loadingText: \"loadingText\", clearAllText: \"clearAllText\", virtualScroll: \"virtualScroll\", openOnEnter: \"openOnEnter\", appendTo: \"appendTo\", bindValue: \"bindValue\", appearance: \"appearance\", maxSelectedItems: \"maxSelectedItems\", groupBy: \"groupBy\", groupValue: \"groupValue\", tabIndex: \"tabIndex\", typeahead: \"typeahead\" }, outputs: { blurEvent: \"blur\", focusEvent: \"focus\", changeEvent: \"change\", openEvent: \"open\", closeEvent: \"close\", searchEvent: \"search\", clearEvent: \"clear\", addEvent: \"add\", removeEvent: \"remove\", scroll: \"scroll\", scrollToEnd: \"scrollToEnd\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => NgSelectComponent)),\n multi: true\n }, NgDropdownPanelService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 18, consts: [[1, \"ng-select-container\", 3, \"mousedown\"], [1, \"ng-value-container\"], [1, \"ng-placeholder\"], [4, \"ngIf\"], [1, \"ng-input\"], [\"role\", \"combobox\", 3, \"readOnly\", \"disabled\", \"value\", \"input\", \"compositionstart\", \"compositionend\", \"focus\", \"blur\", \"change\"], [\"searchInput\", \"\"], [\"class\", \"ng-clear-wrapper\", 3, \"title\", 4, \"ngIf\"], [1, \"ng-arrow-wrapper\"], [1, \"ng-arrow\"], [\"class\", \"ng-dropdown-panel\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ng-select-multiple\", \"ngClass\", \"id\", \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\", 4, \"ngIf\"], [\"class\", \"ng-value\", 3, \"ng-value-disabled\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"ng-value\"], [\"defaultLabelTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\", 1, \"ng-value-icon\", \"left\", 3, \"click\"], [1, \"ng-value-label\", 3, \"ngItemLabel\", \"escape\"], [\"defaultLoadingSpinnerTemplate\", \"\"], [3, \"ngTemplateOutlet\"], [1, \"ng-spinner-loader\"], [1, \"ng-clear-wrapper\", 3, \"title\"], [\"aria-hidden\", \"true\", 1, \"ng-clear\"], [1, \"ng-dropdown-panel\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ngClass\", \"id\", \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\"], [\"class\", \"ng-option\", 3, \"ng-option-disabled\", \"ng-option-selected\", \"ng-optgroup\", \"ng-option\", \"ng-option-child\", \"ng-option-marked\", \"click\", \"mouseover\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"ng-option\", \"role\", \"option\", 3, \"ng-option-marked\", \"mouseover\", \"click\", 4, \"ngIf\"], [1, \"ng-option\", 3, \"click\", \"mouseover\"], [\"defaultOptionTemplate\", \"\"], [1, \"ng-option-label\", 3, \"ngItemLabel\", \"escape\"], [\"role\", \"option\", 1, \"ng-option\", 3, \"mouseover\", \"click\"], [\"defaultTagTemplate\", \"\"], [1, \"ng-tag-label\"], [\"defaultNotFoundTemplate\", \"\"], [1, \"ng-option\", \"ng-option-disabled\"], [\"defaultTypeToSearchTemplate\", \"\"], [\"defaultLoadingTextTemplate\", \"\"]], template: function NgSelectComponent_Template(rf, ctx) { if (rf & 1) {\n const _r52 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgSelectComponent_Template_div_mousedown_0_listener($event) { return ctx.handleMousedown($event); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, NgSelectComponent_ng_container_4_Template, 2, 2, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(5, NgSelectComponent_5_Template, 1, 5, null, 3);\n ɵngcc0.ɵɵelementStart(6, \"div\", 4)(7, \"input\", 5, 6);\n ɵngcc0.ɵɵlistener(\"input\", function NgSelectComponent_Template_input_input_7_listener() { ɵngcc0.ɵɵrestoreView(_r52); const _r2 = ɵngcc0.ɵɵreference(8); return ctx.filter(_r2.value); })(\"compositionstart\", function NgSelectComponent_Template_input_compositionstart_7_listener() { return ctx.onCompositionStart(); })(\"compositionend\", function NgSelectComponent_Template_input_compositionend_7_listener() { ɵngcc0.ɵɵrestoreView(_r52); const _r2 = ɵngcc0.ɵɵreference(8); return ctx.onCompositionEnd(_r2.value); })(\"focus\", function NgSelectComponent_Template_input_focus_7_listener($event) { return ctx.onInputFocus($event); })(\"blur\", function NgSelectComponent_Template_input_blur_7_listener($event) { return ctx.onInputBlur($event); })(\"change\", function NgSelectComponent_Template_input_change_7_listener($event) { return $event.stopPropagation(); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(9, NgSelectComponent_ng_container_9_Template, 4, 1, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(10, NgSelectComponent_span_10_Template, 3, 1, \"span\", 7);\n ɵngcc0.ɵɵelementStart(11, \"span\", 8);\n ɵngcc0.ɵɵelement(12, \"span\", 9);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(13, NgSelectComponent_ng_dropdown_panel_13_Template, 7, 19, \"ng-dropdown-panel\", 10);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-appearance-outline\", ctx.appearance === \"outline\")(\"ng-has-value\", ctx.hasValue);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.placeholder);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.multiLabelTemplate && ctx.selectedItems.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.multiLabelTemplate && ctx.selectedValues.length > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"readOnly\", !ctx.searchable || ctx.itemsList.maxItemsSelected)(\"disabled\", ctx.disabled)(\"value\", ctx.searchTerm ? ctx.searchTerm : \"\");\n ɵngcc0.ɵɵattribute(\"id\", ctx.labelForId)(\"tabindex\", ctx.tabIndex)(\"aria-expanded\", ctx.isOpen)(\"aria-owns\", ctx.isOpen ? ctx.dropdownId : null)(\"aria-activedescendant\", ctx.isOpen ? ctx.itemsList == null ? null : ctx.itemsList.markedItem == null ? null : ctx.itemsList.markedItem.htmlId : null);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showClear());\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, NgItemLabelDirective, ɵngcc1.NgTemplateOutlet, NgDropdownPanelComponent, ɵngcc1.NgClass], styles: [\".ng-select{position:relative;display:block;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:0;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none;border:0;box-shadow:none;outline:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute;z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);-webkit-animation:.8s linear infinite load8;animation:.8s linear infinite load8}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgSelectComponent.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['class',] }] },\n { type: undefined, decorators: [{ type: Attribute, args: ['autofocus',] }] },\n { type: NgSelectConfig },\n { type: undefined, decorators: [{ type: Inject, args: [SELECTION_MODEL_FACTORY,] }] },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: ConsoleService }\n];\nNgSelectComponent.propDecorators = {\n bindLabel: [{ type: Input }],\n bindValue: [{ type: Input }],\n markFirst: [{ type: Input }],\n placeholder: [{ type: Input }],\n notFoundText: [{ type: Input }],\n typeToSearchText: [{ type: Input }],\n addTagText: [{ type: Input }],\n loadingText: [{ type: Input }],\n clearAllText: [{ type: Input }],\n appearance: [{ type: Input }],\n dropdownPosition: [{ type: Input }],\n appendTo: [{ type: Input }],\n loading: [{ type: Input }],\n closeOnSelect: [{ type: Input }],\n hideSelected: [{ type: Input }],\n selectOnTab: [{ type: Input }],\n openOnEnter: [{ type: Input }],\n maxSelectedItems: [{ type: Input }],\n groupBy: [{ type: Input }],\n groupValue: [{ type: Input }],\n bufferAmount: [{ type: Input }],\n virtualScroll: [{ type: Input }],\n selectableGroup: [{ type: Input }],\n selectableGroupAsModel: [{ type: Input }],\n searchFn: [{ type: Input }],\n trackByFn: [{ type: Input }],\n clearOnBackspace: [{ type: Input }],\n labelForId: [{ type: Input }],\n inputAttrs: [{ type: Input }],\n tabIndex: [{ type: Input }],\n readonly: [{ type: Input }],\n searchWhileComposing: [{ type: Input }],\n minTermLength: [{ type: Input }],\n editableSearchTerm: [{ type: Input }],\n keyDownFn: [{ type: Input }],\n typeahead: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-typeahead',] }],\n multiple: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-multiple',] }],\n addTag: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-taggable',] }],\n searchable: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-searchable',] }],\n clearable: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-clearable',] }],\n isOpen: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-opened',] }],\n items: [{ type: Input }],\n compareWith: [{ type: Input }],\n clearSearchOnAdd: [{ type: Input }],\n blurEvent: [{ type: Output, args: ['blur',] }],\n focusEvent: [{ type: Output, args: ['focus',] }],\n changeEvent: [{ type: Output, args: ['change',] }],\n openEvent: [{ type: Output, args: ['open',] }],\n closeEvent: [{ type: Output, args: ['close',] }],\n searchEvent: [{ type: Output, args: ['search',] }],\n clearEvent: [{ type: Output, args: ['clear',] }],\n addEvent: [{ type: Output, args: ['add',] }],\n removeEvent: [{ type: Output, args: ['remove',] }],\n scroll: [{ type: Output, args: ['scroll',] }],\n scrollToEnd: [{ type: Output, args: ['scrollToEnd',] }],\n optionTemplate: [{ type: ContentChild, args: [NgOptionTemplateDirective, { read: TemplateRef },] }],\n optgroupTemplate: [{ type: ContentChild, args: [NgOptgroupTemplateDirective, { read: TemplateRef },] }],\n labelTemplate: [{ type: ContentChild, args: [NgLabelTemplateDirective, { read: TemplateRef },] }],\n multiLabelTemplate: [{ type: ContentChild, args: [NgMultiLabelTemplateDirective, { read: TemplateRef },] }],\n headerTemplate: [{ type: ContentChild, args: [NgHeaderTemplateDirective, { read: TemplateRef },] }],\n footerTemplate: [{ type: ContentChild, args: [NgFooterTemplateDirective, { read: TemplateRef },] }],\n notFoundTemplate: [{ type: ContentChild, args: [NgNotFoundTemplateDirective, { read: TemplateRef },] }],\n typeToSearchTemplate: [{ type: ContentChild, args: [NgTypeToSearchTemplateDirective, { read: TemplateRef },] }],\n loadingTextTemplate: [{ type: ContentChild, args: [NgLoadingTextTemplateDirective, { read: TemplateRef },] }],\n tagTemplate: [{ type: ContentChild, args: [NgTagTemplateDirective, { read: TemplateRef },] }],\n loadingSpinnerTemplate: [{ type: ContentChild, args: [NgLoadingSpinnerTemplateDirective, { read: TemplateRef },] }],\n dropdownPanel: [{ type: ViewChild, args: [forwardRef((/**\n * @return {?}\n */\n () => NgDropdownPanelComponent)),] }],\n searchInput: [{ type: ViewChild, args: ['searchInput', { static: true },] }],\n ngOptions: [{ type: ContentChildren, args: [NgOptionComponent, { descendants: true },] }],\n disabled: [{ type: HostBinding, args: ['class.ng-select-disabled',] }],\n filtered: [{ type: HostBinding, args: ['class.ng-select-filtered',] }],\n handleKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectComponent, [{\n type: Component,\n args: [{\n selector: 'ng-select',\n template: \"\\n\\n
\\n
{{placeholder}}
\\n\\n 0\\\">\\n
\\n \\n \\u00D7\\n \\n \\n\\n \\n \\n
\\n
\\n\\n 0\\\"\\n [ngTemplateOutlet]=\\\"multiLabelTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ items: selectedValues, clear: clearItem }\\\">\\n \\n\\n
\\n \\n
\\n
\\n\\n \\n \\n
\\n
\\n\\n \\n \\n
\\n\\n \\n \\u00D7\\n \\n\\n \\n \\n \\n\\n\\n\\n\\n \\n
\\n\\n \\n \\n \\n\\n \\n \\n
\\n\\n
\\n \\n {{addTagText}}\\\"{{searchTerm}}\\\"\\n \\n\\n \\n \\n
\\n
\\n\\n \\n \\n
{{notFoundText}}
\\n
\\n\\n \\n \\n
\\n\\n \\n \\n
{{typeToSearchText}}
\\n
\\n\\n \\n \\n
\\n\\n \\n \\n
{{loadingText}}
\\n
\\n\\n \\n \\n
\\n\\n
\\n\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => NgSelectComponent)),\n multi: true\n }, NgDropdownPanelService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'listbox',\n '[class.ng-select]': 'useDefaultClass',\n '[class.ng-select-single]': '!multiple'\n },\n styles: [\".ng-select{position:relative;display:block;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:0;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none;border:0;box-shadow:none;outline:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute;z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);-webkit-animation:.8s linear infinite load8;animation:.8s linear infinite load8}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\"]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['class']\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['autofocus']\n }] }, { type: NgSelectConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [SELECTION_MODEL_FACTORY]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ConsoleService }]; }, { markFirst: [{\n type: Input\n }], dropdownPosition: [{\n type: Input\n }], loading: [{\n type: Input\n }], closeOnSelect: [{\n type: Input\n }], hideSelected: [{\n type: Input\n }], selectOnTab: [{\n type: Input\n }], bufferAmount: [{\n type: Input\n }], selectableGroup: [{\n type: Input\n }], selectableGroupAsModel: [{\n type: Input\n }], searchFn: [{\n type: Input\n }], trackByFn: [{\n type: Input\n }], clearOnBackspace: [{\n type: Input\n }], labelForId: [{\n type: Input\n }], inputAttrs: [{\n type: Input\n }], readonly: [{\n type: Input\n }], searchWhileComposing: [{\n type: Input\n }], minTermLength: [{\n type: Input\n }], editableSearchTerm: [{\n type: Input\n }], keyDownFn: [{\n type: Input\n }], multiple: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-multiple']\n }], addTag: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-taggable']\n }], searchable: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-searchable']\n }], clearable: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-clearable']\n }], isOpen: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-opened']\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], focusEvent: [{\n type: Output,\n args: ['focus']\n }], changeEvent: [{\n type: Output,\n args: ['change']\n }], openEvent: [{\n type: Output,\n args: ['open']\n }], closeEvent: [{\n type: Output,\n args: ['close']\n }], searchEvent: [{\n type: Output,\n args: ['search']\n }], clearEvent: [{\n type: Output,\n args: ['clear']\n }], addEvent: [{\n type: Output,\n args: ['add']\n }], removeEvent: [{\n type: Output,\n args: ['remove']\n }], scroll: [{\n type: Output,\n args: ['scroll']\n }], scrollToEnd: [{\n type: Output,\n args: ['scrollToEnd']\n }], items: [{\n type: Input\n }], compareWith: [{\n type: Input\n }], clearSearchOnAdd: [{\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['class.ng-select-disabled']\n }], filtered: [{\n type: HostBinding,\n args: ['class.ng-select-filtered']\n }], \n /**\n * @param {?} $event\n * @return {?}\n */\n handleKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], bindLabel: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], notFoundText: [{\n type: Input\n }], typeToSearchText: [{\n type: Input\n }], addTagText: [{\n type: Input\n }], loadingText: [{\n type: Input\n }], clearAllText: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], openOnEnter: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], bindValue: [{\n type: Input\n }], appearance: [{\n type: Input\n }], maxSelectedItems: [{\n type: Input\n }], groupBy: [{\n type: Input\n }], groupValue: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], typeahead: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-typeahead']\n }], optionTemplate: [{\n type: ContentChild,\n args: [NgOptionTemplateDirective, { read: TemplateRef }]\n }], optgroupTemplate: [{\n type: ContentChild,\n args: [NgOptgroupTemplateDirective, { read: TemplateRef }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [NgLabelTemplateDirective, { read: TemplateRef }]\n }], multiLabelTemplate: [{\n type: ContentChild,\n args: [NgMultiLabelTemplateDirective, { read: TemplateRef }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [NgHeaderTemplateDirective, { read: TemplateRef }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [NgFooterTemplateDirective, { read: TemplateRef }]\n }], notFoundTemplate: [{\n type: ContentChild,\n args: [NgNotFoundTemplateDirective, { read: TemplateRef }]\n }], typeToSearchTemplate: [{\n type: ContentChild,\n args: [NgTypeToSearchTemplateDirective, { read: TemplateRef }]\n }], loadingTextTemplate: [{\n type: ContentChild,\n args: [NgLoadingTextTemplateDirective, { read: TemplateRef }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [NgTagTemplateDirective, { read: TemplateRef }]\n }], loadingSpinnerTemplate: [{\n type: ContentChild,\n args: [NgLoadingSpinnerTemplateDirective, { read: TemplateRef }]\n }], dropdownPanel: [{\n type: ViewChild,\n args: [forwardRef(( /**\n * @return {?}\n */() => NgDropdownPanelComponent))]\n }], searchInput: [{\n type: ViewChild,\n args: ['searchInput', { static: true }]\n }], ngOptions: [{\n type: ContentChildren,\n args: [NgOptionComponent, { descendants: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n NgSelectComponent.prototype.bindLabel;\n /** @type {?} */\n NgSelectComponent.prototype.bindValue;\n /** @type {?} */\n NgSelectComponent.prototype.markFirst;\n /** @type {?} */\n NgSelectComponent.prototype.placeholder;\n /** @type {?} */\n NgSelectComponent.prototype.notFoundText;\n /** @type {?} */\n NgSelectComponent.prototype.typeToSearchText;\n /** @type {?} */\n NgSelectComponent.prototype.addTagText;\n /** @type {?} */\n NgSelectComponent.prototype.loadingText;\n /** @type {?} */\n NgSelectComponent.prototype.clearAllText;\n /** @type {?} */\n NgSelectComponent.prototype.appearance;\n /** @type {?} */\n NgSelectComponent.prototype.dropdownPosition;\n /** @type {?} */\n NgSelectComponent.prototype.appendTo;\n /** @type {?} */\n NgSelectComponent.prototype.loading;\n /** @type {?} */\n NgSelectComponent.prototype.closeOnSelect;\n /** @type {?} */\n NgSelectComponent.prototype.hideSelected;\n /** @type {?} */\n NgSelectComponent.prototype.selectOnTab;\n /** @type {?} */\n NgSelectComponent.prototype.openOnEnter;\n /** @type {?} */\n NgSelectComponent.prototype.maxSelectedItems;\n /** @type {?} */\n NgSelectComponent.prototype.groupBy;\n /** @type {?} */\n NgSelectComponent.prototype.groupValue;\n /** @type {?} */\n NgSelectComponent.prototype.bufferAmount;\n /** @type {?} */\n NgSelectComponent.prototype.virtualScroll;\n /** @type {?} */\n NgSelectComponent.prototype.selectableGroup;\n /** @type {?} */\n NgSelectComponent.prototype.selectableGroupAsModel;\n /** @type {?} */\n NgSelectComponent.prototype.searchFn;\n /** @type {?} */\n NgSelectComponent.prototype.trackByFn;\n /** @type {?} */\n NgSelectComponent.prototype.clearOnBackspace;\n /** @type {?} */\n NgSelectComponent.prototype.labelForId;\n /** @type {?} */\n NgSelectComponent.prototype.inputAttrs;\n /** @type {?} */\n NgSelectComponent.prototype.tabIndex;\n /** @type {?} */\n NgSelectComponent.prototype.readonly;\n /** @type {?} */\n NgSelectComponent.prototype.searchWhileComposing;\n /** @type {?} */\n NgSelectComponent.prototype.minTermLength;\n /** @type {?} */\n NgSelectComponent.prototype.editableSearchTerm;\n /** @type {?} */\n NgSelectComponent.prototype.keyDownFn;\n /** @type {?} */\n NgSelectComponent.prototype.typeahead;\n /** @type {?} */\n NgSelectComponent.prototype.multiple;\n /** @type {?} */\n NgSelectComponent.prototype.addTag;\n /** @type {?} */\n NgSelectComponent.prototype.searchable;\n /** @type {?} */\n NgSelectComponent.prototype.clearable;\n /** @type {?} */\n NgSelectComponent.prototype.isOpen;\n /** @type {?} */\n NgSelectComponent.prototype.blurEvent;\n /** @type {?} */\n NgSelectComponent.prototype.focusEvent;\n /** @type {?} */\n NgSelectComponent.prototype.changeEvent;\n /** @type {?} */\n NgSelectComponent.prototype.openEvent;\n /** @type {?} */\n NgSelectComponent.prototype.closeEvent;\n /** @type {?} */\n NgSelectComponent.prototype.searchEvent;\n /** @type {?} */\n NgSelectComponent.prototype.clearEvent;\n /** @type {?} */\n NgSelectComponent.prototype.addEvent;\n /** @type {?} */\n NgSelectComponent.prototype.removeEvent;\n /** @type {?} */\n NgSelectComponent.prototype.scroll;\n /** @type {?} */\n NgSelectComponent.prototype.scrollToEnd;\n /** @type {?} */\n NgSelectComponent.prototype.optionTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.optgroupTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.labelTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.multiLabelTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.headerTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.footerTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.notFoundTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.typeToSearchTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.loadingTextTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.tagTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.loadingSpinnerTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.dropdownPanel;\n /** @type {?} */\n NgSelectComponent.prototype.searchInput;\n /** @type {?} */\n NgSelectComponent.prototype.ngOptions;\n /** @type {?} */\n NgSelectComponent.prototype.itemsList;\n /** @type {?} */\n NgSelectComponent.prototype.viewPortItems;\n /** @type {?} */\n NgSelectComponent.prototype.searchTerm;\n /** @type {?} */\n NgSelectComponent.prototype.dropdownId;\n /** @type {?} */\n NgSelectComponent.prototype.element;\n /** @type {?} */\n NgSelectComponent.prototype.focused;\n /** @type {?} */\n NgSelectComponent.prototype.escapeHTML;\n /** @type {?} */\n NgSelectComponent.prototype.useDefaultClass;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._items;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._itemsAreUsed;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._defaultLabel;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._primitive;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._manualOpen;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._disabled;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._pressedKeys;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._compareWith;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._clearSearchOnAdd;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._isComposing;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._destroy$;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._keyPress$;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._onChange;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._onTouched;\n /** @type {?} */\n NgSelectComponent.prototype.clearItem;\n /** @type {?} */\n NgSelectComponent.prototype.trackByOption;\n /** @type {?} */\n NgSelectComponent.prototype.classes;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype.autoFocus;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._cd;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._console;\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/selection-model.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction DefaultSelectionModelFactory() {\n return new DefaultSelectionModel();\n}\n/**\n * @record\n */\nfunction SelectionModel() { }\nif (false) {\n /** @type {?} */\n SelectionModel.prototype.value;\n /**\n * @param {?} item\n * @param {?} multiple\n * @param {?} selectableGroupAsModel\n * @return {?}\n */\n SelectionModel.prototype.select = function (item, multiple, selectableGroupAsModel) { };\n /**\n * @param {?} item\n * @param {?} multiple\n * @return {?}\n */\n SelectionModel.prototype.unselect = function (item, multiple) { };\n /**\n * @param {?} keepDisabled\n * @return {?}\n */\n SelectionModel.prototype.clear = function (keepDisabled) { };\n}\nclass DefaultSelectionModel {\n constructor() {\n this._selected = [];\n }\n /**\n * @return {?}\n */\n get value() {\n return this._selected;\n }\n /**\n * @param {?} item\n * @param {?} multiple\n * @param {?} groupAsModel\n * @return {?}\n */\n select(item, multiple, groupAsModel) {\n item.selected = true;\n if (!item.children || (!multiple && groupAsModel)) {\n this._selected.push(item);\n }\n if (multiple) {\n if (item.parent) {\n /** @type {?} */\n const childrenCount = item.parent.children.length;\n /** @type {?} */\n const selectedCount = item.parent.children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.selected)).length;\n item.parent.selected = childrenCount === selectedCount;\n }\n else if (item.children) {\n this._setChildrenSelectedState(item.children, true);\n this._removeChildren(item);\n if (groupAsModel && this._activeChildren(item)) {\n this._selected = [...this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent !== item)), item];\n }\n else {\n this._selected = [...this._selected, ...item.children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.disabled))];\n }\n }\n }\n }\n /**\n * @param {?} item\n * @param {?} multiple\n * @return {?}\n */\n unselect(item, multiple) {\n this._selected = this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item));\n item.selected = false;\n if (multiple) {\n if (item.parent && item.parent.selected) {\n /** @type {?} */\n const children = item.parent.children;\n this._removeParent(item.parent);\n this._removeChildren(item.parent);\n this._selected.push(...children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item && !x.disabled)));\n item.parent.selected = false;\n }\n else if (item.children) {\n this._setChildrenSelectedState(item.children, false);\n this._removeChildren(item);\n }\n }\n }\n /**\n * @param {?} keepDisabled\n * @return {?}\n */\n clear(keepDisabled) {\n this._selected = keepDisabled ? this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.disabled)) : [];\n }\n /**\n * @private\n * @param {?} children\n * @param {?} selected\n * @return {?}\n */\n _setChildrenSelectedState(children, selected) {\n for (const child of children) {\n if (child.disabled) {\n continue;\n }\n child.selected = selected;\n }\n ;\n }\n /**\n * @private\n * @param {?} parent\n * @return {?}\n */\n _removeChildren(parent) {\n this._selected = [\n ...this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent !== parent)),\n ...parent.children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent === parent && x.disabled && x.selected))\n ];\n }\n /**\n * @private\n * @param {?} parent\n * @return {?}\n */\n _removeParent(parent) {\n this._selected = this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== parent));\n }\n /**\n * @private\n * @param {?} item\n * @return {?}\n */\n _activeChildren(item) {\n return item.children.every((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.disabled || x.selected));\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n DefaultSelectionModel.prototype._selected;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-select.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nconst ɵ0 = DefaultSelectionModelFactory;\nclass NgSelectModule {\n}\nNgSelectModule.ɵfac = function NgSelectModule_Factory(t) { return new (t || NgSelectModule)(); };\nNgSelectModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgSelectModule });\nNgSelectModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: SELECTION_MODEL_FACTORY, useValue: ɵ0 }\n ], imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgDropdownPanelComponent,\n NgOptionComponent,\n NgSelectComponent,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective,\n NgLoadingSpinnerTemplateDirective,\n NgItemLabelDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgSelectComponent,\n NgOptionComponent,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective,\n NgLoadingSpinnerTemplateDirective\n ],\n providers: [\n { provide: SELECTION_MODEL_FACTORY, useValue: ɵ0 }\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgSelectModule, { declarations: function () { return [NgDropdownPanelComponent, NgOptionComponent, NgSelectComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective, NgItemLabelDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgSelectComponent, NgOptionComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: ng-select-ng-select.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { NgSelectComponent, NgSelectConfig, NgSelectModule, SELECTION_MODEL_FACTORY, DefaultSelectionModelFactory as ɵb, DefaultSelectionModel as ɵc, NgDropdownPanelService as ɵd, NgItemLabelDirective as ɵe, NgOptionTemplateDirective as ɵf, NgOptgroupTemplateDirective as ɵg, NgLabelTemplateDirective as ɵh, NgMultiLabelTemplateDirective as ɵi, NgHeaderTemplateDirective as ɵj, NgFooterTemplateDirective as ɵk, NgNotFoundTemplateDirective as ɵl, NgTypeToSearchTemplateDirective as ɵm, NgLoadingTextTemplateDirective as ɵn, NgTagTemplateDirective as ɵo, NgLoadingSpinnerTemplateDirective as ɵp, NgDropdownPanelComponent as ɵq, NgOptionComponent as ɵr, ConsoleService as ɵs };\n\n","import { Injectable, EventEmitter, InjectionToken, Inject, Directive, ElementRef, ChangeDetectorRef, Input, Pipe, NgModule } from '@angular/core';\nimport { of, isObservable, forkJoin, concat, defer } from 'rxjs';\nimport { take, shareReplay, map, concatMap, switchMap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nimport * as ɵngcc0 from '@angular/core';\nclass TranslateLoader {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} lang\n * @return {?}\n */\n TranslateLoader.prototype.getTranslation = function (lang) { };\n}\n/**\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\n */\nclass TranslateFakeLoader extends TranslateLoader {\n /**\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n return of({});\n }\n}\nTranslateFakeLoader.ɵfac = /*@__PURE__*/ function () { let ɵTranslateFakeLoader_BaseFactory; return function TranslateFakeLoader_Factory(t) { return (ɵTranslateFakeLoader_BaseFactory || (ɵTranslateFakeLoader_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateFakeLoader)))(t || TranslateFakeLoader); }; }();\nTranslateFakeLoader.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateFakeLoader, factory: TranslateFakeLoader.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateFakeLoader, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction MissingTranslationHandlerParams() { }\nif (false) {\n /**\n * the key that's missing in translation files\n * @type {?}\n */\n MissingTranslationHandlerParams.prototype.key;\n /**\n * an instance of the service that was unable to translate the key.\n * @type {?}\n */\n MissingTranslationHandlerParams.prototype.translateService;\n /**\n * interpolation params that were passed along for translating the given key.\n * @type {?|undefined}\n */\n MissingTranslationHandlerParams.prototype.interpolateParams;\n}\n/**\n * @abstract\n */\nclass MissingTranslationHandler {\n}\nif (false) {\n /**\n * A function that handles missing translations.\n *\n * @abstract\n * @param {?} params context for resolving a missing translation\n * @return {?} a value or an observable\n * If it returns a value, then this value is used.\n * If it return an observable, the value returned by this observable will be used (except if the method was \"instant\").\n * If it doesn't return then the key will be used as a value\n */\n MissingTranslationHandler.prototype.handle = function (params) { };\n}\n/**\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\n */\nclass FakeMissingTranslationHandler {\n /**\n * @param {?} params\n * @return {?}\n */\n handle(params) {\n return params.key;\n }\n}\nFakeMissingTranslationHandler.ɵfac = function FakeMissingTranslationHandler_Factory(t) { return new (t || FakeMissingTranslationHandler)(); };\nFakeMissingTranslationHandler.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FakeMissingTranslationHandler, factory: FakeMissingTranslationHandler.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FakeMissingTranslationHandler, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/* tslint:disable */\n/**\n * Determines if two objects or two values are equivalent.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `equals`.\n *\n * @param {?} o1 Object or value to compare.\n * @param {?} o2 Object or value to compare.\n * @return {?} true if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2)\n return true;\n if (o1 === null || o2 === null)\n return false;\n if (o1 !== o1 && o2 !== o2)\n return true; // NaN === NaN\n // NaN === NaN\n /** @type {?} */\n let t1 = typeof o1;\n /** @type {?} */\n let t2 = typeof o2;\n /** @type {?} */\n let length;\n /** @type {?} */\n let key;\n /** @type {?} */\n let keySet;\n if (t1 == t2 && t1 == 'object') {\n if (Array.isArray(o1)) {\n if (!Array.isArray(o2))\n return false;\n if ((length = o1.length) == o2.length) {\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key]))\n return false;\n }\n return true;\n }\n }\n else {\n if (Array.isArray(o2)) {\n return false;\n }\n keySet = Object.create(null);\n for (key in o1) {\n if (!equals(o1[key], o2[key])) {\n return false;\n }\n keySet[key] = true;\n }\n for (key in o2) {\n if (!(key in keySet) && typeof o2[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n}\n/* tslint:enable */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return typeof value !== 'undefined' && value !== null;\n}\n/**\n * @param {?} item\n * @return {?}\n */\nfunction isObject(item) {\n return (item && typeof item === 'object' && !Array.isArray(item));\n}\n/**\n * @param {?} target\n * @param {?} source\n * @return {?}\n */\nfunction mergeDeep(target, source) {\n /** @type {?} */\n let output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((/**\n * @param {?} key\n * @return {?}\n */\n (key) => {\n if (isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n }\n else {\n output[key] = mergeDeep(target[key], source[key]);\n }\n }\n else {\n Object.assign(output, { [key]: source[key] });\n }\n }));\n }\n return output;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass TranslateParser {\n}\nif (false) {\n /**\n * Interpolates a string to replace parameters\n * \"This is a {{ key }}\" ==> \"This is a value\", with params = { key: \"value\" }\n * @abstract\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n TranslateParser.prototype.interpolate = function (expr, params) { };\n /**\n * Gets a value from an object by composed key\n * parser.getValue({ key1: { keyA: 'valueI' }}, 'key1.keyA') ==> 'valueI'\n * @abstract\n * @param {?} target\n * @param {?} key\n * @return {?}\n */\n TranslateParser.prototype.getValue = function (target, key) { };\n}\nclass TranslateDefaultParser extends TranslateParser {\n constructor() {\n super(...arguments);\n this.templateMatcher = /{{\\s?([^{}\\s]*)\\s?}}/g;\n }\n /**\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n interpolate(expr, params) {\n /** @type {?} */\n let result;\n if (typeof expr === 'string') {\n result = this.interpolateString(expr, params);\n }\n else if (typeof expr === 'function') {\n result = this.interpolateFunction(expr, params);\n }\n else {\n // this should not happen, but an unrelated TranslateService test depends on it\n result = (/** @type {?} */ (expr));\n }\n return result;\n }\n /**\n * @param {?} target\n * @param {?} key\n * @return {?}\n */\n getValue(target, key) {\n /** @type {?} */\n let keys = typeof key === 'string' ? key.split('.') : [key];\n key = '';\n do {\n key += keys.shift();\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\n target = target[key];\n key = '';\n }\n else if (!keys.length) {\n target = undefined;\n }\n else {\n key += '.';\n }\n } while (keys.length);\n return target;\n }\n /**\n * @private\n * @param {?} fn\n * @param {?=} params\n * @return {?}\n */\n interpolateFunction(fn, params) {\n return fn(params);\n }\n /**\n * @private\n * @param {?} expr\n * @param {?=} params\n * @return {?}\n */\n interpolateString(expr, params) {\n if (!params) {\n return expr;\n }\n return expr.replace(this.templateMatcher, (/**\n * @param {?} substring\n * @param {?} b\n * @return {?}\n */\n (substring, b) => {\n /** @type {?} */\n let r = this.getValue(params, b);\n return isDefined(r) ? r : substring;\n }));\n }\n}\nTranslateDefaultParser.ɵfac = /*@__PURE__*/ function () { let ɵTranslateDefaultParser_BaseFactory; return function TranslateDefaultParser_Factory(t) { return (ɵTranslateDefaultParser_BaseFactory || (ɵTranslateDefaultParser_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateDefaultParser)))(t || TranslateDefaultParser); }; }();\nTranslateDefaultParser.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateDefaultParser, factory: TranslateDefaultParser.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateDefaultParser, [{\n type: Injectable\n }], null, null); })();\nif (false) {\n /** @type {?} */\n TranslateDefaultParser.prototype.templateMatcher;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass TranslateCompiler {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} value\n * @param {?} lang\n * @return {?}\n */\n TranslateCompiler.prototype.compile = function (value, lang) { };\n /**\n * @abstract\n * @param {?} translations\n * @param {?} lang\n * @return {?}\n */\n TranslateCompiler.prototype.compileTranslations = function (translations, lang) { };\n}\n/**\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\n */\nclass TranslateFakeCompiler extends TranslateCompiler {\n /**\n * @param {?} value\n * @param {?} lang\n * @return {?}\n */\n compile(value, lang) {\n return value;\n }\n /**\n * @param {?} translations\n * @param {?} lang\n * @return {?}\n */\n compileTranslations(translations, lang) {\n return translations;\n }\n}\nTranslateFakeCompiler.ɵfac = /*@__PURE__*/ function () { let ɵTranslateFakeCompiler_BaseFactory; return function TranslateFakeCompiler_Factory(t) { return (ɵTranslateFakeCompiler_BaseFactory || (ɵTranslateFakeCompiler_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TranslateFakeCompiler)))(t || TranslateFakeCompiler); }; }();\nTranslateFakeCompiler.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateFakeCompiler, factory: TranslateFakeCompiler.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateFakeCompiler, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslateStore {\n constructor() {\n /**\n * The lang currently used\n */\n this.currentLang = this.defaultLang;\n /**\n * a list of translations per lang\n */\n this.translations = {};\n /**\n * an array of langs\n */\n this.langs = [];\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n */\n this.onTranslationChange = new EventEmitter();\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n */\n this.onLangChange = new EventEmitter();\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n */\n this.onDefaultLangChange = new EventEmitter();\n }\n}\nif (false) {\n /**\n * The default lang to fallback when translations are missing on the current lang\n * @type {?}\n */\n TranslateStore.prototype.defaultLang;\n /**\n * The lang currently used\n * @type {?}\n */\n TranslateStore.prototype.currentLang;\n /**\n * a list of translations per lang\n * @type {?}\n */\n TranslateStore.prototype.translations;\n /**\n * an array of langs\n * @type {?}\n */\n TranslateStore.prototype.langs;\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onTranslationChange;\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onLangChange;\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n * @type {?}\n */\n TranslateStore.prototype.onDefaultLangChange;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst USE_STORE = new InjectionToken('USE_STORE');\n/** @type {?} */\nconst USE_DEFAULT_LANG = new InjectionToken('USE_DEFAULT_LANG');\n/** @type {?} */\nconst DEFAULT_LANGUAGE = new InjectionToken('DEFAULT_LANGUAGE');\n/** @type {?} */\nconst USE_EXTEND = new InjectionToken('USE_EXTEND');\n/**\n * @record\n */\nfunction TranslationChangeEvent() { }\nif (false) {\n /** @type {?} */\n TranslationChangeEvent.prototype.translations;\n /** @type {?} */\n TranslationChangeEvent.prototype.lang;\n}\n/**\n * @record\n */\nfunction LangChangeEvent() { }\nif (false) {\n /** @type {?} */\n LangChangeEvent.prototype.lang;\n /** @type {?} */\n LangChangeEvent.prototype.translations;\n}\n/**\n * @record\n */\nfunction DefaultLangChangeEvent() { }\nif (false) {\n /** @type {?} */\n DefaultLangChangeEvent.prototype.lang;\n /** @type {?} */\n DefaultLangChangeEvent.prototype.translations;\n}\nclass TranslateService {\n /**\n *\n * @param {?} store an instance of the store (that is supposed to be unique)\n * @param {?} currentLoader An instance of the loader currently used\n * @param {?} compiler An instance of the compiler currently used\n * @param {?} parser An instance of the parser currently used\n * @param {?} missingTranslationHandler A handler for missing translations.\n * @param {?=} useDefaultLang whether we should use default language translation when current language translation is missing.\n * @param {?=} isolate whether this service should use the store or not\n * @param {?=} extend To make a child module extend (and use) translations from parent modules.\n * @param {?=} defaultLanguage Set the default language using configuration\n */\n constructor(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang = true, isolate = false, extend = false, defaultLanguage) {\n this.store = store;\n this.currentLoader = currentLoader;\n this.compiler = compiler;\n this.parser = parser;\n this.missingTranslationHandler = missingTranslationHandler;\n this.useDefaultLang = useDefaultLang;\n this.isolate = isolate;\n this.extend = extend;\n this.pending = false;\n this._onTranslationChange = new EventEmitter();\n this._onLangChange = new EventEmitter();\n this._onDefaultLangChange = new EventEmitter();\n this._langs = [];\n this._translations = {};\n this._translationRequests = {};\n /** set the default language from configuration */\n if (defaultLanguage) {\n this.setDefaultLang(defaultLanguage);\n }\n }\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onTranslationChange() {\n return this.isolate ? this._onTranslationChange : this.store.onTranslationChange;\n }\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onLangChange() {\n return this.isolate ? this._onLangChange : this.store.onLangChange;\n }\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n * @return {?}\n */\n get onDefaultLangChange() {\n return this.isolate ? this._onDefaultLangChange : this.store.onDefaultLangChange;\n }\n /**\n * The default lang to fallback when translations are missing on the current lang\n * @return {?}\n */\n get defaultLang() {\n return this.isolate ? this._defaultLang : this.store.defaultLang;\n }\n /**\n * @param {?} defaultLang\n * @return {?}\n */\n set defaultLang(defaultLang) {\n if (this.isolate) {\n this._defaultLang = defaultLang;\n }\n else {\n this.store.defaultLang = defaultLang;\n }\n }\n /**\n * The lang currently used\n * @return {?}\n */\n get currentLang() {\n return this.isolate ? this._currentLang : this.store.currentLang;\n }\n /**\n * @param {?} currentLang\n * @return {?}\n */\n set currentLang(currentLang) {\n if (this.isolate) {\n this._currentLang = currentLang;\n }\n else {\n this.store.currentLang = currentLang;\n }\n }\n /**\n * an array of langs\n * @return {?}\n */\n get langs() {\n return this.isolate ? this._langs : this.store.langs;\n }\n /**\n * @param {?} langs\n * @return {?}\n */\n set langs(langs) {\n if (this.isolate) {\n this._langs = langs;\n }\n else {\n this.store.langs = langs;\n }\n }\n /**\n * a list of translations per lang\n * @return {?}\n */\n get translations() {\n return this.isolate ? this._translations : this.store.translations;\n }\n /**\n * @param {?} translations\n * @return {?}\n */\n set translations(translations) {\n if (this.isolate) {\n this._translations = translations;\n }\n else {\n this.store.translations = translations;\n }\n }\n /**\n * Sets the default language to use as a fallback\n * @param {?} lang\n * @return {?}\n */\n setDefaultLang(lang) {\n if (lang === this.defaultLang) {\n return;\n }\n /** @type {?} */\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the defaultLang immediately\n if (this.defaultLang == null) {\n this.defaultLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.changeDefaultLang(lang);\n }));\n }\n else { // we already have this language\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Gets the default language used\n * @return {?}\n */\n getDefaultLang() {\n return this.defaultLang;\n }\n /**\n * Changes the lang currently used\n * @param {?} lang\n * @return {?}\n */\n use(lang) {\n // don't change the language if the language given is already selected\n if (lang === this.currentLang) {\n return of(this.translations[lang]);\n }\n /** @type {?} */\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the currentLang immediately\n if (!this.currentLang) {\n this.currentLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.changeLang(lang);\n }));\n return pending;\n }\n else { // we have this language, return an Observable\n this.changeLang(lang);\n return of(this.translations[lang]);\n }\n }\n /**\n * Retrieves the given translations\n * @private\n * @param {?} lang\n * @return {?}\n */\n retrieveTranslations(lang) {\n /** @type {?} */\n let pending;\n // if this language is unavailable or extend is true, ask for it\n if (typeof this.translations[lang] === \"undefined\" || this.extend) {\n this._translationRequests[lang] = this._translationRequests[lang] || this.getTranslation(lang);\n pending = this._translationRequests[lang];\n }\n return pending;\n }\n /**\n * Gets an object of translations for a given language with the current loader\n * and passes it through the compiler\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n this.pending = true;\n /** @type {?} */\n const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(shareReplay(1), take(1));\n this.loadingTranslations = loadingTranslations.pipe(map((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.compiler.compileTranslations(res, lang))), shareReplay(1), take(1));\n this.loadingTranslations\n .subscribe({\n next: (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.translations[lang] = this.extend && this.translations[lang] ? Object.assign(Object.assign({}, res), this.translations[lang]) : res;\n this.updateLangs();\n this.pending = false;\n }),\n error: (/**\n * @param {?} err\n * @return {?}\n */\n (err) => {\n this.pending = false;\n })\n });\n return loadingTranslations;\n }\n /**\n * Manually sets an object of translations for a given language\n * after passing it through the compiler\n * @param {?} lang\n * @param {?} translations\n * @param {?=} shouldMerge\n * @return {?}\n */\n setTranslation(lang, translations, shouldMerge = false) {\n translations = this.compiler.compileTranslations(translations, lang);\n if ((shouldMerge || this.extend) && this.translations[lang]) {\n this.translations[lang] = mergeDeep(this.translations[lang], translations);\n }\n else {\n this.translations[lang] = translations;\n }\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Returns an array of currently available langs\n * @return {?}\n */\n getLangs() {\n return this.langs;\n }\n /**\n * Add available langs\n * @param {?} langs\n * @return {?}\n */\n addLangs(langs) {\n langs.forEach((/**\n * @param {?} lang\n * @return {?}\n */\n (lang) => {\n if (this.langs.indexOf(lang) === -1) {\n this.langs.push(lang);\n }\n }));\n }\n /**\n * Update the list of available langs\n * @private\n * @return {?}\n */\n updateLangs() {\n this.addLangs(Object.keys(this.translations));\n }\n /**\n * Returns the parsed result of the translations\n * @param {?} translations\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?}\n */\n getParsedResult(translations, key, interpolateParams) {\n /** @type {?} */\n let res;\n if (key instanceof Array) {\n /** @type {?} */\n let result = {};\n /** @type {?} */\n let observables = false;\n for (let k of key) {\n result[k] = this.getParsedResult(translations, k, interpolateParams);\n if (isObservable(result[k])) {\n observables = true;\n }\n }\n if (observables) {\n /** @type {?} */\n const sources = key.map((/**\n * @param {?} k\n * @return {?}\n */\n k => isObservable(result[k]) ? result[k] : of((/** @type {?} */ (result[k])))));\n return forkJoin(sources).pipe(map((/**\n * @param {?} arr\n * @return {?}\n */\n (arr) => {\n /** @type {?} */\n let obj = {};\n arr.forEach((/**\n * @param {?} value\n * @param {?} index\n * @return {?}\n */\n (value, index) => {\n obj[key[index]] = value;\n }));\n return obj;\n })));\n }\n return result;\n }\n if (translations) {\n res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\n }\n if (typeof res === \"undefined\" && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\n res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\n }\n if (typeof res === \"undefined\") {\n /** @type {?} */\n let params = { key, translateService: this };\n if (typeof interpolateParams !== 'undefined') {\n params.interpolateParams = interpolateParams;\n }\n res = this.missingTranslationHandler.handle(params);\n }\n return typeof res !== \"undefined\" ? res : key;\n }\n /**\n * Gets the translated value of a key (or an array of keys)\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} the translated key, or an object of translated keys\n */\n get(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n // check if we are loading a new translation to use\n if (this.pending) {\n return this.loadingTranslations.pipe(concatMap((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n res = this.getParsedResult(res, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n })));\n }\n else {\n /** @type {?} */\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the translation changes.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} A stream of the translated key, or an object of translated keys\n */\n getStreamOnTranslationChange(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer((/**\n * @return {?}\n */\n () => this.get(key, interpolateParams))), this.onTranslationChange.pipe(switchMap((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n /** @type {?} */\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n if (typeof res.subscribe === 'function') {\n return res;\n }\n else {\n return of(res);\n }\n }))));\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the language changes.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?} A stream of the translated key, or an object of translated keys\n */\n stream(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer((/**\n * @return {?}\n */\n () => this.get(key, interpolateParams))), this.onLangChange.pipe(switchMap((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n /** @type {?} */\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }))));\n }\n /**\n * Returns a translation instantly from the internal state of loaded translation.\n * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\n * @param {?} key\n * @param {?=} interpolateParams\n * @return {?}\n */\n instant(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n /** @type {?} */\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n if (isObservable(res)) {\n if (key instanceof Array) {\n /** @type {?} */\n let obj = {};\n key.forEach((/**\n * @param {?} value\n * @param {?} index\n * @return {?}\n */\n (value, index) => {\n obj[key[index]] = key[index];\n }));\n return obj;\n }\n return key;\n }\n else {\n return res;\n }\n }\n /**\n * Sets the translated value of a key, after compiling it\n * @param {?} key\n * @param {?} value\n * @param {?=} lang\n * @return {?}\n */\n set(key, value, lang = this.currentLang) {\n this.translations[lang][key] = this.compiler.compile(value, lang);\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Changes the current lang\n * @private\n * @param {?} lang\n * @return {?}\n */\n changeLang(lang) {\n this.currentLang = lang;\n this.onLangChange.emit({ lang: lang, translations: this.translations[lang] });\n // if there is no default lang, use the one that we just set\n if (this.defaultLang == null) {\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Changes the default lang\n * @private\n * @param {?} lang\n * @return {?}\n */\n changeDefaultLang(lang) {\n this.defaultLang = lang;\n this.onDefaultLangChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Allows to reload the lang file from the file\n * @param {?} lang\n * @return {?}\n */\n reloadLang(lang) {\n this.resetLang(lang);\n return this.getTranslation(lang);\n }\n /**\n * Deletes inner translation\n * @param {?} lang\n * @return {?}\n */\n resetLang(lang) {\n this._translationRequests[lang] = undefined;\n this.translations[lang] = undefined;\n }\n /**\n * Returns the language code name from the browser, e.g. \"de\"\n * @return {?}\n */\n getBrowserLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n /** @type {?} */\n let browserLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n if (typeof browserLang === 'undefined') {\n return undefined;\n }\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0];\n }\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0];\n }\n return browserLang;\n }\n /**\n * Returns the culture language code name from the browser, e.g. \"de-DE\"\n * @return {?}\n */\n getBrowserCultureLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n /** @type {?} */\n let browserCultureLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n return browserCultureLang;\n }\n}\nTranslateService.ɵfac = function TranslateService_Factory(t) { return new (t || TranslateService)(ɵngcc0.ɵɵinject(TranslateStore), ɵngcc0.ɵɵinject(TranslateLoader), ɵngcc0.ɵɵinject(TranslateCompiler), ɵngcc0.ɵɵinject(TranslateParser), ɵngcc0.ɵɵinject(MissingTranslationHandler), ɵngcc0.ɵɵinject(USE_DEFAULT_LANG), ɵngcc0.ɵɵinject(USE_STORE), ɵngcc0.ɵɵinject(USE_EXTEND), ɵngcc0.ɵɵinject(DEFAULT_LANGUAGE)); };\nTranslateService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslateService, factory: TranslateService.ɵfac });\n/** @nocollapse */\nTranslateService.ctorParameters = () => [\n { type: TranslateStore },\n { type: TranslateLoader },\n { type: TranslateCompiler },\n { type: TranslateParser },\n { type: MissingTranslationHandler },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_DEFAULT_LANG,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_STORE,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [USE_EXTEND,] }] },\n { type: String, decorators: [{ type: Inject, args: [DEFAULT_LANGUAGE,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateService, [{\n type: Injectable\n }], function () { return [{ type: TranslateStore }, { type: TranslateLoader }, { type: TranslateCompiler }, { type: TranslateParser }, { type: MissingTranslationHandler }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_DEFAULT_LANG]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_STORE]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [USE_EXTEND]\n }] }, { type: String, decorators: [{\n type: Inject,\n args: [DEFAULT_LANGUAGE]\n }] }]; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.loadingTranslations;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.pending;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onTranslationChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._onDefaultLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._defaultLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._currentLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._langs;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._translations;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype._translationRequests;\n /** @type {?} */\n TranslateService.prototype.store;\n /** @type {?} */\n TranslateService.prototype.currentLoader;\n /** @type {?} */\n TranslateService.prototype.compiler;\n /** @type {?} */\n TranslateService.prototype.parser;\n /** @type {?} */\n TranslateService.prototype.missingTranslationHandler;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.useDefaultLang;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.isolate;\n /**\n * @type {?}\n * @private\n */\n TranslateService.prototype.extend;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslateDirective {\n /**\n * @param {?} translateService\n * @param {?} element\n * @param {?} _ref\n */\n constructor(translateService, element, _ref) {\n this.translateService = translateService;\n this.element = element;\n this._ref = _ref;\n // subscribe to onTranslationChange event, in case the translations of the current lang change\n if (!this.onTranslationChangeSub) {\n this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (event.lang === this.translateService.currentLang) {\n this.checkNodes(true, event.translations);\n }\n }));\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChangeSub) {\n this.onLangChangeSub = this.translateService.onLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.checkNodes(true, event.translations);\n }));\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.checkNodes(true);\n }));\n }\n }\n /**\n * @param {?} key\n * @return {?}\n */\n set translate(key) {\n if (key) {\n this.key = key;\n this.checkNodes();\n }\n }\n /**\n * @param {?} params\n * @return {?}\n */\n set translateParams(params) {\n if (!equals(this.currentParams, params)) {\n this.currentParams = params;\n this.checkNodes(true);\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewChecked() {\n this.checkNodes();\n }\n /**\n * @param {?=} forceUpdate\n * @param {?=} translations\n * @return {?}\n */\n checkNodes(forceUpdate = false, translations) {\n /** @type {?} */\n let nodes = this.element.nativeElement.childNodes;\n // if the element is empty\n if (!nodes.length) {\n // we add the key as content\n this.setContent(this.element.nativeElement, this.key);\n nodes = this.element.nativeElement.childNodes;\n }\n for (let i = 0; i < nodes.length; ++i) {\n /** @type {?} */\n let node = nodes[i];\n if (node.nodeType === 3) { // node type 3 is a text node\n // node type 3 is a text node\n /** @type {?} */\n let key;\n if (forceUpdate) {\n node.lastKey = null;\n }\n if (isDefined(node.lookupKey)) {\n key = node.lookupKey;\n }\n else if (this.key) {\n key = this.key;\n }\n else {\n /** @type {?} */\n let content = this.getContent(node);\n /** @type {?} */\n let trimmedContent = content.trim();\n if (trimmedContent.length) {\n node.lookupKey = trimmedContent;\n // we want to use the content as a key, not the translation value\n if (content !== node.currentValue) {\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n else if (node.originalContent) { // the content seems ok, but the lang has changed\n // the current content is the translation, not the key, use the last real content as key\n key = node.originalContent.trim();\n }\n else if (content !== node.currentValue) {\n // we want to use the content as a key, not the translation value\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n }\n }\n this.updateValue(key, node, translations);\n }\n }\n }\n /**\n * @param {?} key\n * @param {?} node\n * @param {?} translations\n * @return {?}\n */\n updateValue(key, node, translations) {\n if (key) {\n if (node.lastKey === key && this.lastParams === this.currentParams) {\n return;\n }\n this.lastParams = this.currentParams;\n /** @type {?} */\n let onTranslation = (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n if (res !== key) {\n node.lastKey = key;\n }\n if (!node.originalContent) {\n node.originalContent = this.getContent(node);\n }\n node.currentValue = isDefined(res) ? res : (node.originalContent || key);\n // we replace in the original content to preserve spaces that we might have trimmed\n this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\n this._ref.markForCheck();\n });\n if (isDefined(translations)) {\n /** @type {?} */\n let res = this.translateService.getParsedResult(translations, key, this.currentParams);\n if (isObservable(res)) {\n res.subscribe(onTranslation);\n }\n else {\n onTranslation(res);\n }\n }\n else {\n this.translateService.get(key, this.currentParams).subscribe(onTranslation);\n }\n }\n }\n /**\n * @param {?} node\n * @return {?}\n */\n getContent(node) {\n return isDefined(node.textContent) ? node.textContent : node.data;\n }\n /**\n * @param {?} node\n * @param {?} content\n * @return {?}\n */\n setContent(node, content) {\n if (isDefined(node.textContent)) {\n node.textContent = content;\n }\n else {\n node.data = content;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this.onLangChangeSub) {\n this.onLangChangeSub.unsubscribe();\n }\n if (this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub.unsubscribe();\n }\n if (this.onTranslationChangeSub) {\n this.onTranslationChangeSub.unsubscribe();\n }\n }\n}\nTranslateDirective.ɵfac = function TranslateDirective_Factory(t) { return new (t || TranslateDirective)(ɵngcc0.ɵɵdirectiveInject(TranslateService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTranslateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TranslateDirective, selectors: [[\"\", \"translate\", \"\"], [\"\", \"ngx-translate\", \"\"]], inputs: { translate: \"translate\", translateParams: \"translateParams\" } });\n/** @nocollapse */\nTranslateDirective.ctorParameters = () => [\n { type: TranslateService },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\nTranslateDirective.propDecorators = {\n translate: [{ type: Input }],\n translateParams: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateDirective, [{\n type: Directive,\n args: [{\n selector: '[translate],[ngx-translate]'\n }]\n }], function () { return [{ type: TranslateService }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { translate: [{\n type: Input\n }], translateParams: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n TranslateDirective.prototype.key;\n /** @type {?} */\n TranslateDirective.prototype.lastParams;\n /** @type {?} */\n TranslateDirective.prototype.currentParams;\n /** @type {?} */\n TranslateDirective.prototype.onLangChangeSub;\n /** @type {?} */\n TranslateDirective.prototype.onDefaultLangChangeSub;\n /** @type {?} */\n TranslateDirective.prototype.onTranslationChangeSub;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype.translateService;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype.element;\n /**\n * @type {?}\n * @private\n */\n TranslateDirective.prototype._ref;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass TranslatePipe {\n /**\n * @param {?} translate\n * @param {?} _ref\n */\n constructor(translate, _ref) {\n this.translate = translate;\n this._ref = _ref;\n this.value = '';\n }\n /**\n * @param {?} key\n * @param {?=} interpolateParams\n * @param {?=} translations\n * @return {?}\n */\n updateValue(key, interpolateParams, translations) {\n /** @type {?} */\n let onTranslation = (/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n this.value = res !== undefined ? res : key;\n this.lastKey = key;\n this._ref.markForCheck();\n });\n if (translations) {\n /** @type {?} */\n let res = this.translate.getParsedResult(translations, key, interpolateParams);\n if (isObservable(res.subscribe)) {\n res.subscribe(onTranslation);\n }\n else {\n onTranslation(res);\n }\n }\n this.translate.get(key, interpolateParams).subscribe(onTranslation);\n }\n /**\n * @param {?} query\n * @param {...?} args\n * @return {?}\n */\n transform(query, ...args) {\n if (!query || !query.length) {\n return query;\n }\n // if we ask another time for the same key, return the last value\n if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\n return this.value;\n }\n /** @type {?} */\n let interpolateParams;\n if (isDefined(args[0]) && args.length) {\n if (typeof args[0] === 'string' && args[0].length) {\n // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n /** @type {?} */\n let validArgs = args[0]\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\n try {\n interpolateParams = JSON.parse(validArgs);\n }\n catch (e) {\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n }\n }\n else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\n interpolateParams = args[0];\n }\n }\n // store the query, in case it changes\n this.lastKey = query;\n // store the params, in case they change\n this.lastParams = args;\n // set the value\n this.updateValue(query, interpolateParams);\n // if there is a subscription to onLangChange, clean it\n this._dispose();\n // subscribe to onTranslationChange event, in case the translations change\n if (!this.onTranslationChange) {\n this.onTranslationChange = this.translate.onTranslationChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this.lastKey && event.lang === this.translate.currentLang) {\n this.lastKey = null;\n this.updateValue(query, interpolateParams, event.translations);\n }\n }));\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChange) {\n this.onLangChange = this.translate.onLangChange.subscribe((/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams, event.translations);\n }\n }));\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChange) {\n this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe((/**\n * @return {?}\n */\n () => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams);\n }\n }));\n }\n return this.value;\n }\n /**\n * Clean any existing subscription to change events\n * @private\n * @return {?}\n */\n _dispose() {\n if (typeof this.onTranslationChange !== 'undefined') {\n this.onTranslationChange.unsubscribe();\n this.onTranslationChange = undefined;\n }\n if (typeof this.onLangChange !== 'undefined') {\n this.onLangChange.unsubscribe();\n this.onLangChange = undefined;\n }\n if (typeof this.onDefaultLangChange !== 'undefined') {\n this.onDefaultLangChange.unsubscribe();\n this.onDefaultLangChange = undefined;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._dispose();\n }\n}\nTranslatePipe.ɵfac = function TranslatePipe_Factory(t) { return new (t || TranslatePipe)(ɵngcc0.ɵɵdirectiveInject(TranslateService, 16), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef, 16)); };\nTranslatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"translate\", type: TranslatePipe, pure: false });\nTranslatePipe.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TranslatePipe, factory: TranslatePipe.ɵfac });\n/** @nocollapse */\nTranslatePipe.ctorParameters = () => [\n { type: TranslateService },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslatePipe, [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'translate',\n pure: false // required to update the value when the promise is resolved\n }]\n }], function () { return [{ type: TranslateService }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n TranslatePipe.prototype.value;\n /** @type {?} */\n TranslatePipe.prototype.lastKey;\n /** @type {?} */\n TranslatePipe.prototype.lastParams;\n /** @type {?} */\n TranslatePipe.prototype.onTranslationChange;\n /** @type {?} */\n TranslatePipe.prototype.onLangChange;\n /** @type {?} */\n TranslatePipe.prototype.onDefaultLangChange;\n /**\n * @type {?}\n * @private\n */\n TranslatePipe.prototype.translate;\n /**\n * @type {?}\n * @private\n */\n TranslatePipe.prototype._ref;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction TranslateModuleConfig() { }\nif (false) {\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.loader;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.compiler;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.parser;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.missingTranslationHandler;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.isolate;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.extend;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.useDefaultLang;\n /** @type {?|undefined} */\n TranslateModuleConfig.prototype.defaultLanguage;\n}\nclass TranslateModule {\n /**\n * Use this method in your root module to provide the TranslateService\n * @param {?=} config\n * @return {?}\n */\n static forRoot(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n TranslateStore,\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n /**\n * Use this method in your other (non root) modules to import the directive/pipe\n * @param {?=} config\n * @return {?}\n */\n static forChild(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n}\nTranslateModule.ɵfac = function TranslateModule_Factory(t) { return new (t || TranslateModule)(); };\nTranslateModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TranslateModule });\nTranslateModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TranslateModule, [{\n type: NgModule,\n args: [{\n declarations: [\n TranslatePipe,\n TranslateDirective\n ],\n exports: [\n TranslatePipe,\n TranslateDirective\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TranslateModule, { declarations: [TranslatePipe, TranslateDirective], exports: [TranslatePipe, TranslateDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { DEFAULT_LANGUAGE, FakeMissingTranslationHandler, MissingTranslationHandler, TranslateCompiler, TranslateDefaultParser, TranslateDirective, TranslateFakeCompiler, TranslateFakeLoader, TranslateLoader, TranslateModule, TranslateParser, TranslatePipe, TranslateService, TranslateStore, USE_DEFAULT_LANG, USE_EXTEND, USE_STORE };\n\n","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc\n */\nclass TranslateHttpLoader {\n /**\n * @param {?} http\n * @param {?=} prefix\n * @param {?=} suffix\n */\n constructor(http, prefix = \"/assets/i18n/\", suffix = \".json\") {\n this.http = http;\n this.prefix = prefix;\n this.suffix = suffix;\n }\n /**\n * Gets the translations from the server\n * @param {?} lang\n * @return {?}\n */\n getTranslation(lang) {\n return this.http.get(`${this.prefix}${lang}${this.suffix}`);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc\n */\n\nexport { TranslateHttpLoader };\n\n","import { Deflate, Inflate } from '@progress/pako-esm';\n\n/**\n * Let the user use/change some implementations.\n */\nvar external = {\n Promise: Promise\n};\n\nconst support = {\n base64: true,\n array: true,\n string: true,\n nodebuffer: false,\n nodestream: false,\n\n get arraybuffer() {\n return typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n },\n\n // Returns true if JSZip can read/generate Uint8Array, false otherwise.\n get uint8array() {\n return typeof Uint8Array !== \"undefined\";\n },\n\n get blob() {\n return blob();\n }\n};\n\nlet blob = function() {\n let supported;\n\n if (typeof ArrayBuffer === \"undefined\") {\n supported = false;\n } else {\n const buffer = new ArrayBuffer(0);\n try {\n supported = new Blob([ buffer ], {\n type: \"application/zip\"\n }).size === 0;\n } catch (e) {\n supported = false;\n }\n }\n\n blob = () => supported;\n return supported;\n};\n\n/* eslint-disable */\n\n// private property\nconst _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n// public method for encoding\nconst encode = function(input) {\n let output = [];\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0, len = input.length, remainingBytes = len;\n\n let isArray = typeof input !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nconst decode = function(input) {\n let chr1, chr2, chr3;\n let enc1, enc2, enc3, enc4;\n let i = 0, resultIndex = 0;\n\n let dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n let totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 letiant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n let output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n\n/* eslint-disable */\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nconst newBlob = function(part, type) {\n checkSupport(\"blob\");\n\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n};\n\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\nfunction stringifyByChunk(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n}\n\n/**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction stringifyByChar(array) {\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n}\n\n/**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\nlet fromCharCodeSupportsTypedArrays = () => {\n let supported;\n try {\n supported = support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n supported = false;\n }\n\n fromCharCodeSupportsTypedArrays = () => supported;\n return supported;\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = fromCharCodeSupportsTypedArrays();\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return stringifyByChar(array);\n}\n\nconst applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {\n // string to ?\n \"string\": {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n }\n },\n\n // array to ?\n \"array\": {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // arraybuffer to ?\n \"arraybuffer\": {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // uint8array to ?\n \"uint8array\": {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity\n }\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nconst transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n checkSupport(outputType);\n var inputType = getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nconst getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nconst checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nconst MAX_VALUE_16BITS = 65535;\nconst MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nconst pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nconst delay = function(callback, args, self) {\n setTimeout(function() {\n callback.apply(self || null, args || []);\n }, 0);\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nconst extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (Object.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nconst prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n/* eslint-disable */\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nclass GenericWorker {\n constructor(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n }\n\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push(chunk) {\n this.emit(\"data\", chunk);\n }\n\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end() {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n }\n\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error(e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n }\n\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on(name, listener) {\n this._listeners[name].push(listener);\n return this;\n }\n\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp() {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n }\n\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit(name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n }\n\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe(next) {\n return next.registerPrevious(this);\n }\n\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious(previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause() {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n }\n\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume() {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n }\n\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush() {}\n\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk(chunk) {\n this.push(chunk);\n }\n\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo(key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n }\n\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo() {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n }\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock() {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n }\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString() {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Returns the utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nlet utf8len = function(c) {\n const _utf8len = new Array(256);\n for (let i = 0; i < 256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n // Memoize table after first call\n utf8len = function(c) {\n return _utf8len[c];\n };\n\n return _utf8len[c];\n};\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nconst utf8encode = function utf8encode(str) {\n return string2buf(str);\n};\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nconst utf8decode = function utf8decode(buf) {\n buf = transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nclass Utf8DecodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 decode\");\n\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk (chunk) {\n var data = transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : utf8decode(usableData),\n meta : chunk.meta\n });\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n if (this.leftOver && this.leftOver.length) {\n this.push({\n data : utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n }\n}\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nclass Utf8EncodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 encode\");\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: utf8encode(chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nclass ConvertWorker extends GenericWorker {\n constructor(destType) {\n super(\"ConvertWorker to \" + destType);\n this.destType = destType;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: transformTo(this.destType, chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/* eslint-disable */\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return newBlob(transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return encode(content);\n default :\n return transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nclass StreamHelper {\n constructor (worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n }\n\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate(updateCb) {\n return accumulate(this, updateCb);\n }\n\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on(evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n delay(fn, arguments, self);\n });\n }\n return this;\n }\n\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume() {\n delay(this._worker.resume, [], this._worker);\n return this;\n }\n\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause() {\n this._worker.pause();\n return this;\n }\n}\n\nconst base64 = false;\nconst binary = false;\nconst dir = false;\nconst createFolders = true;\nconst date = null;\nconst compression = null;\nconst compressionOptions = null;\nconst comment = null;\nconst unixPermissions = null;\nconst dosPermissions = null;\n\nvar defaults = /*#__PURE__*/Object.freeze({\n __proto__: null,\n base64: base64,\n binary: binary,\n dir: dir,\n createFolders: createFolders,\n date: date,\n compression: compression,\n compressionOptions: compressionOptions,\n comment: comment,\n unixPermissions: unixPermissions,\n dosPermissions: dosPermissions\n});\n\n/* eslint-disable */\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nconst DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nclass DataWorker extends GenericWorker {\n constructor(dataP) {\n super(\"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n }\n\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this.data = null;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if(!super.resume()) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n delay(this._tickAndRepeat, [], this);\n }\n return true;\n }\n\n /**\n * Trigger a tick a schedule an other call to this function.\n */\n _tickAndRepeat() {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n };\n\n /**\n * Read and push a chunk.\n */\n _tick() {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n }\n}\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nclass DataLengthProbe extends GenericWorker {\n constructor(propName) {\n super(\"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n if (chunk) {\n const length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n super.processChunk(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\nlet makeTable = function() {\n // Use ordinary array, since untyped makes no boost here\n const table = [];\n\n for (let n =0; n < 256; n++){\n let c = n;\n for(let k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n // Memoize table on first call.\n makeTable = function() {\n return table;\n };\n\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n const t = makeTable();\n let end = pos + len;\n\n crc = crc ^ (-1);\n\n for (let i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n const t = makeTable();\n let end = pos + len;\n\n crc = crc ^ (-1);\n\n for (let i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nfunction crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n const isArray = getTypeOf(input) !== \"string\";\n\n if (isArray) {\n return crc32(crc | 0, input, input.length, 0);\n } else {\n return crc32str(crc | 0, input, input.length, 0);\n }\n}\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nclass Crc32Probe extends GenericWorker {\n constructor() {\n super(\"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.streamInfo.crc32 = crc32wrapper(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nclass CompressedObject {\n constructor(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n }\n\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker() {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n }\n\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker() {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n }\n\n /**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\n static createWorkerFrom(uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n }\n}\n\n/* eslint-disable */\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nclass ZipObject {\n constructor(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n }\n\n /**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\n internalStream(type) {\n var result = null, outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n\n return new StreamHelper(result, outputType, \"\");\n }\n\n /**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\n async(type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n }\n\n /**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\n _compressWorker(compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n }\n\n /**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\n _decompressWorker() {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n }\n}\n\nlet arrayType = function() {\n const useTypedArray = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n const resolved = useTypedArray ? \"uint8array\" : \"array\";\n\n arrayType = function() {\n return resolved;\n };\n};\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nclass FlateWorker extends GenericWorker {\n constructor(action, options) {\n super(\"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(transformTo(arrayType(), chunk.data), false);\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n super.flush();\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n }\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this._pako = null;\n }\n\n /**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\n _createPako() {\n const params = {\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n };\n this._pako = this._pakoAction === 'Deflate' ? new Deflate(params) : new Inflate(params);\n this._pako.onData = (data) => {\n this.push({\n data: data,\n meta: this.meta\n });\n };\n }\n}\n\nvar DEFLATE = {\n magic: \"\\x08\\x00\",\n compressWorker: function(compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n },\n\n uncompressWorker: function() {\n return new FlateWorker(\"Inflate\", {});\n }\n};\n\nconst STORE = {\n magic: \"\\x00\\x00\",\n compressWorker: function() {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker: function() {\n return new GenericWorker(\"STORE decompression\");\n }\n};\n\nvar compressions = {\n STORE,\n DEFLATE\n};\n\nconst LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nconst CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nconst CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nconst ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nconst ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nconst DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n/* eslint-disable */\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8encode,\n encodedFileName = transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = transformTo(\"string\", utf8encode(file.name)),\n comment = file.comment,\n encodedComment = transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = transformTo(\"string\", utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32wrapper(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32wrapper(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nclass ZipFileWorker extends GenericWorker {\n constructor(streamFiles, comment, platform, encodeFileName) {\n super(\"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emitted metadata.\n this.currentFile = null;\n\n this._sources = [];\n }\n\n /**\n * @see GenericWorker.push\n */\n push(chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n super.push({\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n }\n\n /**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\n openedSource(streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n }\n\n /**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\n closedSource(streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n }\n\n /**\n * Prepare the next source to be read.\n */\n prepareNextSource() {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n }\n\n /**\n * @see GenericWorker.registerPrevious\n */\n registerPrevious(previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if(!super.resume()) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n }\n\n /**\n * @see GenericWorker.error\n */\n error(e) {\n var sources = this._sources;\n if(!super.error(e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n }\n\n /**\n * @see GenericWorker.lock\n */\n lock() {\n super.lock();\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nconst generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n\n/* eslint-disable */\n\nclass DataReader {\n constructor(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n }\n\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset(offset) {\n this.checkIndex(this.index + offset);\n }\n\n /**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n }\n\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n }\n\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip(n) {\n this.setIndex(this.index + n);\n }\n\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt(i) {\n // see implementations\n }\n\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n }\n\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString(size) {\n return transformTo(\"string\", this.readData(size));\n }\n\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData(size) {\n // see implementations\n }\n\n /**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\n lastIndexOfSignature(sig) {\n // see implementations\n }\n\n /**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature(sig) {\n // see implementations\n }\n\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate() {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n }\n}\n\n/* eslint-disable */\n\nclass ArrayReader extends DataReader {\n constructor(data) {\n super(data);\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data[this.zero + i];\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\nclass StringReader extends DataReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data.charCodeAt(this.zero + i);\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n const data = this.readData(4);\n return sig === data;\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n const result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/* eslint-disable */\n\nclass Uint8ArrayReader extends ArrayReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nfunction readerFor(data) {\n const type = getTypeOf(data);\n checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(transformTo(\"uint8array\", data));\n }\n return new ArrayReader(transformTo(\"array\", data));\n}\n\n/* eslint-disable */\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntry {\n constructor(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n }\n\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n }\n\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n }\n\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + pretty(this.compressionMethod) + \" unknown (inner file : \" + transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart(reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n }\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes() {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n }\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields(reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8decode(this.fileName);\n this.fileCommentStr = utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n }\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32wrapper(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n }\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32wrapper(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n }\n}\n\n/* eslint-disable */\n\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntries {\n constructor(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n }\n\n /**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature(expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + pretty(signature) + \", expected \" + pretty(expectedSignature) + \")\");\n }\n }\n\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n }\n\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n }\n\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n }\n\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n }\n\n /**\n * Read the central directory.\n */\n readCentralDir() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n }\n }\n }\n\n /**\n * Read the end of central directory.\n */\n readEndOfCentral() {\n var offset = this.reader.lastIndexOfSignature(CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, CENTRAL_FILE_HEADER)) ; else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n }\n\n prepareReader(data) {\n this.reader = readerFor(data);\n }\n\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n}\n\n/* eslint-disable */\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nfunction load(data, options) {\n var zip = this;\n options = extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8decode\n });\n\n return prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function(data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n zip.file(input.fileNameStr, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n}\n\n/* eslint-disable */\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else {\n zipObjectContent = prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders$1) {\n createFolders$1 = (typeof createFolders$1 !== 'undefined') ? createFolders$1 : createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders$1\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nclass JSZip {\n constructor() {\n if (arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n // NOTE: we use a null prototype because we do not\n // want filenames like \"toString\" coming from a zip file\n // to overwrite methods and attributes in a normal Object.\n this.files = Object.create(null);\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n const newObj = new JSZip();\n for (const i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n }\n\n /**\n * @see loadAsync\n */\n load() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\n forEach(cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n }\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter(search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n }\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file(name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n }\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder(arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n }\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n }\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate(options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\n generateInternalStream(options) {\n var worker, opts = {};\n try {\n opts = extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is preferred but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === 'darwin' ||\n opts.platform === 'freebsd' ||\n opts.platform === 'linux' ||\n opts.platform === 'sunos'\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n }\n\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateAsync(options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n }\n\n loadAsync(data, options) {\n return load.apply(this, [data, options]);\n }\n\n static loadAsync(content, options) {\n return new JSZip().loadAsync(content, options);\n }\n \n static get support() {\n return support;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get version() {\n return \"3.2.2-esm\";\n }\n\n static get external() {\n return external;\n }\n}\n\nexport { JSZip as default };\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Optional, Input, Output, HostBinding, HostListener, isDevMode, Component, ContentChildren, NgModule, InjectionToken, Inject, forwardRef, ElementRef, ViewContainerRef, ContentChild, ViewChild } from '@angular/core';\nimport * as i8 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, guid, EventsModule } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { Subject, Subscription, fromEvent, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { filter, take } from 'rxjs/operators';\nimport * as i4 from '@angular/animations';\nimport { sequence, query, style, stagger, animate } from '@angular/animations';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-buttons',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440722,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nconst resolvedPromise = Promise.resolve(null);\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst tick = (f) => (resolvedPromise.then(f));\n/**\n * @hidden\n */\nfunction isDocumentNode(container) {\n return container.nodeType === 9;\n}\n/**\n * @hidden\n */\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n const matches = Element.prototype.matches ?\n (el, sel) => el.matches(sel)\n : (el, sel) => el.msMatchesSelector(sel);\n let node = element;\n while (node && !isDocumentNode(node)) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentNode;\n }\n}\n/**\n * @hidden\n */\nconst replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\\{\\\\s*${name}\\\\s*\\}`, 'g'), value);\n/**\n * @hidden\n */\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n case 'fillMode':\n return {\n toRemove: `k-${componentType}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${newValue}` : ''\n };\n default:\n break;\n }\n};\n/**\n * @hidden\n *\n * Returns the themeColor classes to be added and removed\n */\nconst getThemeColorClasses = (componentType, prevFillMode, fillMode, previousValue, newValue) => {\n return {\n toRemove: `k-${componentType}-${prevFillMode}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${fillMode}-${newValue}` : ''\n };\n};\n/**\n * @hidden\n *\n * Returns true if the used browser is Firefox.\n */\nconst isFirefox = (userAgent) => {\n const desktopBrowser = detectDesktopBrowser(userAgent);\n const mobileOS = detectMobileOS(userAgent);\n return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');\n};\n\n/**\n * @hidden\n */\nclass KendoButtonService {\n constructor() {\n this.buttonClicked = new Subject();\n this.buttonClicked$ = this.buttonClicked.asObservable();\n }\n click(button) {\n this.buttonClicked.next(button);\n }\n}\nKendoButtonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nKendoButtonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService, decorators: [{\n type: Injectable\n }] });\n\nconst SPAN_TAG_NAME = 'SPAN';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_THEME_COLOR$1 = 'base';\nconst DEFAULT_FILL_MODE$2 = 'solid';\n/**\n * Represents the Kendo UI Button component for Angular.\n */\nclass ButtonDirective {\n constructor(element, renderer, service, localization, ngZone) {\n this.service = service;\n this.ngZone = ngZone;\n /**\n * Provides visual styling that indicates if the Button is active.\n * By default, `toggleable` is set to `false`.\n */\n this.toggleable = false;\n /**\n * @hidden\n */\n this.role = 'button';\n /**\n * Fires each time the selected state of a toggleable button is changed.\n *\n * The event argument is the new selected state (boolean).\n */\n this.selectedChange = new EventEmitter();\n /**\n * Fires each time the user clicks the button.\n */\n this.click = new EventEmitter();\n this.isDisabled = false;\n this.isIcon = false;\n this.isIconClass = false;\n this._size = DEFAULT_SIZE$1;\n this._rounded = DEFAULT_ROUNDED$2;\n this._fillMode = DEFAULT_FILL_MODE$2;\n this._themeColor = DEFAULT_THEME_COLOR$1;\n this._focused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subs.add(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.element = element.nativeElement;\n this.renderer = renderer;\n }\n /**\n * Backwards-compatible alias\n *\n * @hidden\n */\n get togglable() {\n return this.toggleable;\n }\n /**\n * @hidden\n */\n set togglable(value) {\n this.toggleable = value;\n }\n /**\n * Sets the selected state of the Button.\n */\n get selected() {\n return this._selected || false;\n }\n set selected(value) {\n this._selected = value;\n }\n /**\n * @hidden\n */\n set tabIndex(index) {\n this.element.tabIndex = index;\n }\n get tabIndex() {\n return this.element.tabIndex;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme.\n * The icon is rendered inside the Button by a `span.k-icon` element.\n */\n set icon(icon) {\n if (icon) {\n this.iconSetter(icon, () => {\n this.isIcon = true;\n const classes = 'k-button-icon k-icon k-i-' + icon;\n this.addIcon(classes);\n });\n }\n else {\n this.isIcon = false;\n this.updateIconNode();\n }\n }\n /**\n * Defines a CSS class—or multiple classes separated by spaces—\n * which are applied to a `span` element inside the Button. Allows the usage of custom icons.\n */\n set iconClass(iconClassName) {\n if (iconClassName) {\n this.iconSetter(iconClassName, () => {\n this.isIconClass = true;\n const classes = 'k-button-icon ' + iconClassName;\n this.addIcon(classes);\n });\n }\n else {\n this.isIconClass = false;\n this.updateIconNode();\n }\n }\n /**\n * Defines a URL which is used for an `img` element inside the Button.\n * The URL can be relative or absolute. If relative, it is evaluated with relation to the web page URL.\n */\n set imageUrl(imageUrl) {\n if (imageUrl) {\n this.iconSetter(imageUrl, this.addImgIcon.bind(this));\n }\n else {\n this.removeImageNode();\n }\n }\n /**\n * If set to `true`, it disables the Button.\n */\n set disabled(disabled) {\n //Required, because in FF focused buttons are not blurred on disabled\n if (disabled && isDocumentAvailable() && isFirefox(navigator.userAgent)) {\n this.blur();\n }\n this.isDisabled = disabled;\n this.renderer.setProperty(this.element, 'disabled', disabled);\n }\n get disabled() {\n return this.isDisabled;\n }\n /**\n * The size property specifies the padding of the Button\n * ([see example]({% slug appearance_button %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the Button\n * ([see example]({% slug appearance_button %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the Button\n * ([see example]({% slug appearance_button %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `clear`\n * * `link`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug appearance_button %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` (default)\n * * `primary`\n * * `secondary`\n * * `tertiary`\n * * `info`\n * * `success`\n * * `warning`\n * * `error`\n * * `dark`\n * * `light`\n * * `inverse`\n * * `none`\n */\n set themeColor(themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR$1;\n this.handleThemeColor(newThemeColor);\n this._themeColor = newThemeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n set isFocused(isFocused) {\n this.toggleClass('k-focus', isFocused);\n this._focused = isFocused;\n }\n get isFocused() {\n return this._focused;\n }\n get classButton() {\n return true;\n }\n get isToggleable() {\n return this.toggleable;\n }\n get roleSetter() {\n return this.role;\n }\n get classDisabled() {\n return this.isDisabled;\n }\n get classActive() {\n return this.selected;\n }\n get getDirection() {\n return this.direction;\n }\n /**\n * @hidden\n */\n onFocus() {\n this.isFocused = true;\n }\n /**\n * @hidden\n */\n onBlur() {\n this.isFocused = false;\n }\n /**\n * @hidden\n */\n set primary(value) {\n this.themeColor = value ? 'primary' : 'base';\n }\n /**\n * @hidden\n */\n set look(value) {\n switch (value) {\n case 'default':\n this.fillMode = 'solid';\n break;\n default:\n this.fillMode = value;\n break;\n }\n }\n ngOnInit() {\n const isSpan = this.element.tagName === SPAN_TAG_NAME;\n this.addTextSpan();\n if (!this.element.hasAttribute('role') && this.togglable) {\n this.toggleAriaPressed(this.toggleable);\n }\n if (this.role) {\n this.setAttribute('role', this.role);\n }\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(this.element, 'click', this._onButtonClick.bind(this)));\n this.subs.add(this.renderer.listen(this.element, 'keydown', (event) => {\n const isSpaceOrEnter = event.keyCode === Keys.Space || event.keyCode === Keys.Enter;\n if (isSpan && isSpaceOrEnter) {\n this.click.emit(event);\n this._onButtonClick();\n }\n }));\n });\n }\n ngOnChanges(change) {\n if (isChanged('togglable', change) || isChanged('toggleable', change)) {\n this.toggleAriaPressed(this.toggleable);\n }\n }\n ngAfterViewInit() {\n const stylingOptions = ['size', 'rounded', 'fillMode'];\n stylingOptions.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngAfterViewChecked() {\n this.setIconTextClasses();\n }\n ngOnDestroy() {\n this.imageNode = null;\n this.iconNode = null;\n this.iconSpanNode = null;\n this.renderer = null;\n this.subs.unsubscribe();\n clearTimeout(this.deferTimeout);\n }\n /**\n * Focuses the Button component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.element.focus();\n this.isFocused = true;\n }\n }\n /**\n * Blurs the Button component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.element.blur();\n this.isFocused = false;\n }\n }\n /**\n * @hidden\n */\n setAttribute(attribute, value) {\n this.renderer.setAttribute(this.element, attribute, value);\n }\n /**\n * @hidden\n */\n removeAttribute(attribute) {\n this.renderer.removeAttribute(this.element, attribute);\n }\n /**\n * @hidden\n *\n * Internal setter that triggers selectedChange\n */\n setSelected(value) {\n const changed = this.selected !== value;\n this.selected = value;\n this.setAttribute('aria-pressed', this.selected.toString());\n this.toggleClass('k-selected', this.selected);\n if (changed && hasObservers(this.selectedChange)) {\n this.ngZone.run(() => {\n this.selectedChange.emit(value);\n });\n }\n }\n toggleAriaPressed(shouldSet) {\n if (!isDocumentAvailable()) {\n return;\n }\n if (shouldSet) {\n this.setAttribute('aria-pressed', this.selected.toString());\n }\n else {\n this.removeAttribute('aria-pressed');\n }\n }\n hasText() {\n return isDocumentAvailable() && this.element.textContent.trim().length > 0;\n }\n addImgIcon(imageUrl) {\n let renderer = this.renderer;\n if (!this.iconSpanNode) {\n this.iconSpanNode = renderer.createElement('span');\n renderer.setProperty(this.iconSpanNode, 'className', 'k-button-icon k-icon');\n }\n if (this.imageNode) {\n renderer.setProperty(this.imageNode, 'src', imageUrl);\n }\n else if (isDocumentAvailable()) {\n this.imageNode = renderer.createElement('img');\n renderer.setProperty(this.imageNode, 'src', imageUrl);\n renderer.setProperty(this.imageNode, 'className', 'k-image');\n renderer.setAttribute(this.imageNode, 'role', 'presentation');\n }\n this.iconSpanNode.appendChild(this.imageNode);\n this.prependChild(this.iconSpanNode);\n }\n addIcon(classNames) {\n let renderer = this.renderer;\n if (this.iconNode) {\n renderer.setProperty(this.iconNode, 'className', classNames);\n }\n else if (isDocumentAvailable()) {\n this.iconNode = renderer.createElement('span');\n renderer.setProperty(this.iconNode, 'className', classNames);\n renderer.setAttribute(this.iconNode, 'role', 'presentation');\n this.prependChild(this.iconNode);\n }\n }\n addTextSpan() {\n if (isDocumentAvailable() && this.hasText()) {\n const span = this.renderer.createElement('span');\n this.renderer.addClass(span, 'k-button-text');\n const buttonContentNodes = Array.from(this.element.childNodes);\n buttonContentNodes.forEach(node => this.renderer.appendChild(span, node));\n this.renderer.appendChild(this.element, span);\n }\n }\n prependChild(node) {\n this.defer(() => {\n if (this.renderer && node !== this.element.firstChild) {\n this.renderer.insertBefore(this.element, node, this.element.firstChild);\n }\n });\n }\n defer(callback) {\n this.ngZone.runOutsideAngular(() => {\n this.deferTimeout = setTimeout(callback, 0);\n });\n }\n iconSetter(icon, insertIcon) {\n if (icon) {\n insertIcon(icon);\n }\n this.setIconTextClasses();\n }\n removeImageNode() {\n if (this.imageNode && this.renderer.parentNode(this.imageNode)) {\n this.renderer.removeChild(this.element, this.imageNode);\n this.renderer.removeChild(this.element, this.iconSpanNode);\n this.imageNode = null;\n this.iconSpanNode = null;\n }\n }\n removeIconNode() {\n if (this.iconNode && this.renderer.parentNode(this.iconNode)) {\n this.renderer.removeChild(this.element, this.iconNode);\n this.iconNode = null;\n }\n if (this.iconSpanNode) {\n this.renderer.removeChild(this.element, this.iconSpanNode);\n this.iconSpanNode = null;\n }\n }\n updateIconNode() {\n if (!this.isIcon && !this.isIconClass) {\n this.removeIconNode();\n }\n }\n setIconTextClasses() {\n const hasIcon = this.isIcon || this.isIconClass || this.imageNode;\n this.toggleClass('k-icon-button', hasIcon && !this.hasText());\n }\n toggleClass(className, add) {\n if (add) {\n this.renderer.addClass(this.element, className);\n }\n else {\n this.renderer.removeClass(this.element, className);\n }\n }\n _onButtonClick() {\n if (!this.disabled && this.service) {\n this.ngZone.run(() => {\n this.service.click(this);\n });\n }\n if (this.togglable && !this.service) {\n this.setSelected(!this.selected);\n }\n }\n handleClasses(value, input) {\n const elem = this.element;\n const classes = getStylingClasses('button', input, this[input], value);\n if (input === 'fillMode') {\n this.handleThemeColor(this.themeColor, this[input], value);\n }\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleThemeColor(value, prevFillMode, fillMode) {\n const elem = this.element;\n const removeFillMode = prevFillMode ? prevFillMode : this.fillMode;\n const addFillMode = fillMode ? fillMode : this.fillMode;\n const themeColorClass = getThemeColorClasses('button', removeFillMode, addFillMode, this.themeColor, value);\n this.renderer.removeClass(elem, themeColorClass.toRemove);\n if (addFillMode !== 'none' && fillMode !== 'none') {\n if (themeColorClass.toAdd) {\n this.renderer.addClass(elem, themeColorClass.toAdd);\n }\n }\n }\n}\nButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: KendoButtonService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: { toggleable: \"toggleable\", togglable: \"togglable\", selected: \"selected\", tabIndex: \"tabIndex\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", role: \"role\", primary: \"primary\", look: \"look\" }, outputs: { selectedChange: \"selectedChange\", click: \"click\" }, host: { listeners: { \"focus\": \"onFocus()\", \"blur\": \"onBlur()\" }, properties: { \"class.k-button\": \"this.classButton\", \"class.k-toggle-button\": \"this.isToggleable\", \"attr.role\": \"this.roleSetter\", \"attr.aria-disabled\": \"this.classDisabled\", \"class.k-disabled\": \"this.classDisabled\", \"class.k-selected\": \"this.classActive\", \"attr.dir\": \"this.getDirection\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoButton\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoButton',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoButton], span[kendoButton]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: KendoButtonService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { toggleable: [{\n type: Input\n }], togglable: [{\n type: Input\n }], selected: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], role: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], click: [{\n type: Output\n }], classButton: [{\n type: HostBinding,\n args: ['class.k-button']\n }], isToggleable: [{\n type: HostBinding,\n args: ['class.k-toggle-button']\n }], roleSetter: [{\n type: HostBinding,\n args: ['attr.role']\n }], classDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], classActive: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], getDirection: [{\n type: HostBinding,\n args: ['attr.dir']\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], primary: [{\n type: Input\n }], look: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst tabindex = 'tabindex';\n/**\n * Represents the Kendo UI ButtonGroup component for Angular.\n */\nclass ButtonGroupComponent {\n constructor(service, localization, element) {\n this.service = service;\n this.element = element;\n /**\n * By default, the selection mode of the ButtonGroup is set to `multiple`.\n */\n this.selection = 'multiple';\n /**\n * Fires every time keyboard navigation occurs.\n */\n this.navigate = new EventEmitter();\n this._tabIndex = 0;\n this.currentTabIndex = 0;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.subs.add(localization.changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));\n }\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabIndex(value) {\n this._tabIndex = value;\n this.currentTabIndex = value;\n }\n get tabIndex() {\n return this._tabIndex;\n }\n get wrapperClass() {\n return true;\n }\n get disabledClass() {\n return this.disabled;\n }\n get stretchedClass() {\n return !!this.width;\n }\n get getRole() {\n return this.isSelectionSingle() ? 'radiogroup' : 'group';\n }\n get dir() {\n return this.direction;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get wrapperWidth() {\n return this.width;\n }\n get wrapperTabIndex() {\n return this.disabled ? undefined : this.currentTabIndex;\n }\n /**\n * @hidden\n */\n keydown(event) {\n if (!this.disabled) {\n this.navigateFocus(event);\n }\n }\n /**\n * @hidden\n */\n onFocus() {\n this.currentTabIndex = -1;\n const focusedIndex = this.buttons.toArray().findIndex(current => current.element.tabIndex !== -1);\n const index = focusedIndex === -1 ? 0 : focusedIndex;\n this.focus(this.buttons.filter((_current, i) => {\n return i === index;\n }));\n }\n /**\n * @hidden\n */\n focusout(event) {\n if (event.relatedTarget && event.relatedTarget.parentNode !== this.element.nativeElement) {\n this.defocus(this.buttons.toArray());\n this.currentTabIndex = this.tabIndex;\n }\n }\n ngOnInit() {\n this.subs.add(this.service.buttonClicked$.subscribe((button) => {\n let newSelectionValue;\n if (this.isSelectionSingle()) {\n newSelectionValue = true;\n this.deactivate(this.buttons.filter(current => current !== button));\n }\n else {\n this.defocus(this.buttons.toArray());\n newSelectionValue = !button.selected;\n }\n if (button.togglable) {\n button.setSelected(newSelectionValue);\n }\n button.setAttribute(tabindex, '0');\n }));\n }\n ngOnChanges(change) {\n if (isChanged('disabled', change)) {\n this.buttons.forEach((button) => {\n if (isPresent(this.disabled)) {\n button.disabled = this.disabled;\n }\n });\n }\n }\n ngAfterContentInit() {\n this.buttons.forEach((button) => {\n if (button.selected) {\n button.setAttribute(tabindex, '0');\n }\n else {\n button.setAttribute(tabindex, '-1');\n }\n });\n }\n ngAfterViewChecked() {\n if (this.buttons.length) {\n this.buttons.first.renderer.addClass(this.buttons.first.element, 'k-group-start');\n this.buttons.last.renderer.addClass(this.buttons.last.element, 'k-group-end');\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n navigateFocus(event) {\n let focusedIndex = this.buttons.toArray().findIndex(current => current.element.tabIndex !== -1);\n const firstIndex = 0;\n const lastIndex = this.buttons.length - 1;\n const eventArgs = new PreventableEvent();\n if (event.keyCode === Keys.ArrowRight && focusedIndex < lastIndex) {\n this.navigate.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.defocus(this.buttons.toArray());\n this.focus(this.buttons.filter((_current, index) => {\n return index === focusedIndex + 1;\n }));\n }\n }\n if (event.keyCode === Keys.ArrowLeft && focusedIndex > firstIndex) {\n this.navigate.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.defocus(this.buttons.toArray());\n this.focus(this.buttons.filter((_current, index) => {\n return index === focusedIndex - 1;\n }));\n }\n }\n }\n deactivate(buttons) {\n buttons.forEach((button) => {\n button.setSelected(false);\n button.setAttribute(tabindex, '-1');\n });\n }\n activate(buttons) {\n buttons.forEach((button) => {\n button.setSelected(true);\n button.setAttribute(tabindex, '0');\n button.focus();\n });\n }\n defocus(buttons) {\n buttons.forEach((button) => {\n button.setAttribute(tabindex, '-1');\n });\n }\n focus(buttons) {\n buttons.forEach((button) => {\n button.setAttribute(tabindex, '0');\n button.focus();\n });\n }\n verifySettings() {\n if (isDevMode()) {\n if (this.isSelectionSingle() && this.buttons.filter(button => button.selected).length > 1) {\n throw new Error('Having multiple selected buttons with single selection mode is not supported');\n }\n }\n }\n isSelectionSingle() {\n return this.selection === 'single';\n }\n}\nButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupComponent, deps: [{ token: KendoButtonService }, { token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: { disabled: \"disabled\", selection: \"selection\", width: \"width\", tabIndex: \"tabIndex\" }, outputs: { navigate: \"navigate\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"focus\": \"onFocus()\", \"focusout\": \"focusout($event)\" }, properties: { \"class.k-button-group\": \"this.wrapperClass\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-button-group-stretched\": \"this.stretchedClass\", \"attr.role\": \"this.getRole\", \"attr.dir\": \"this.dir\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"style.width\": \"this.wrapperWidth\", \"attr.tabindex\": \"this.wrapperTabIndex\" } }, providers: [\n KendoButtonService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.buttongroup'\n }\n ], queries: [{ propertyName: \"buttons\", predicate: ButtonDirective }], exportAs: [\"kendoButtonGroup\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoButtonGroup',\n providers: [\n KendoButtonService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.buttongroup'\n }\n ],\n selector: 'kendo-buttongroup',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: KendoButtonService }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { disabled: [{\n type: Input,\n args: ['disabled']\n }], selection: [{\n type: Input,\n args: ['selection']\n }], width: [{\n type: Input,\n args: ['width']\n }], tabIndex: [{\n type: Input\n }], navigate: [{\n type: Output\n }], buttons: [{\n type: ContentChildren,\n args: [ButtonDirective]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-button-group']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], stretchedClass: [{\n type: HostBinding,\n args: ['class.k-button-group-stretched']\n }], getRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], wrapperWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], wrapperTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], focusout: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the Button directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Button module\n * import { ButtonModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ButtonModule], // import Button module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ButtonModule {\n}\nButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective], exports: [ButtonDirective] });\nButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ButtonDirective],\n exports: [ButtonDirective]\n }]\n }] });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ButtonGroupComponent`—The ButtonGroupComponent component class.\n */\nclass ButtonGroupModule {\n}\nButtonGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, declarations: [ButtonGroupComponent], imports: [CommonModule, ButtonModule], exports: [ButtonGroupComponent] });\nButtonGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, imports: [[CommonModule, ButtonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ButtonGroupComponent],\n exports: [ButtonGroupComponent],\n imports: [CommonModule, ButtonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass FocusService {\n constructor() {\n this.onFocus = new EventEmitter();\n }\n isFocused(index) {\n return index === this.focused;\n }\n focus(index) {\n if (this.isFocused(index)) {\n return;\n }\n this.focused = index;\n this.onFocus.emit(index);\n }\n resetFocus() {\n this.focused = -1;\n }\n get focused() {\n return this.focusedIndex;\n }\n set focused(index) {\n this.focusedIndex = index;\n this.onFocus.emit(index);\n }\n}\nFocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass FocusableDirective {\n constructor(focusService, elementRef, renderer) {\n this.focusService = focusService;\n this.renderer = renderer;\n this.subs = new Subscription();\n this.element = elementRef.nativeElement;\n this.subscribeEvents();\n }\n ngOnInit() {\n if (this.index === this.focusService.focused) {\n this.renderer.addClass(this.element, 'k-focus');\n }\n else {\n this.renderer.removeClass(this.element, 'k-focus');\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.focusService.onFocus.subscribe((index) => {\n if (this.index === index) {\n this.renderer.addClass(this.element, 'k-focus');\n this.element.focus();\n }\n else {\n this.renderer.removeClass(this.element, 'k-focus');\n }\n }));\n }\n}\nFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, deps: [{ token: FocusService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: { index: \"index\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoButtonFocusable]'\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { index: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[templateContext]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ListComponent {\n constructor() {\n this.onItemClick = new EventEmitter();\n this.onItemBlur = new EventEmitter();\n this.sizeClass = '';\n validatePackage(packageMetadata);\n }\n set size(size) {\n if (size) {\n this.sizeClass = `k-menu-group-${SIZES[size]}`;\n }\n else {\n this.sizeClass = '';\n }\n }\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n getIconClasses(dataItem) {\n const icon = dataItem.icon ? 'k-icon k-i-' + dataItem.icon : undefined;\n const classes = {};\n classes[icon || dataItem.iconClass] = true;\n return classes;\n }\n onClick(index) {\n this.onItemClick.emit(index);\n }\n onBlur() {\n this.onItemBlur.emit();\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-button-list\", inputs: { data: \"data\", textField: \"textField\", itemTemplate: \"itemTemplate\", size: \"size\" }, outputs: { onItemClick: \"onItemClick\", onItemBlur: \"onItemBlur\" }, ngImport: i0, template: `\n
    \n
  • \n \n \n \n \n \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n
  • \n
\n `, isInline: true, directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: [\"index\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-button-list',\n template: `\n
    \n
  • \n \n \n \n \n \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n
  • \n
\n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { data: [{\n type: Input\n }], textField: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], onItemClick: [{\n type: Output\n }], onItemBlur: [{\n type: Output\n }], size: [{\n type: Input\n }] } });\n\n/**\n * Used for rendering the list item content.\n *\n * To define the item template, nest a `` tag with the `kendoItemTemplate` directive inside the component tag.\n *\n * For the DropDownButton, use the `kendoDropDownButtonItemTemplate` directive.\n * For the SplitButton, use the `kendoSplitButtonItemTemplate` directive.\n *\n * The template context is set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [{\n * text: 'item1',\n * icon: 'refresh',\n * disabled: false,\n * click: (dataItem: any) => {\n * //action\n * }\n * }, {\n * text: 'item2',\n * icon: 'refresh',\n * disabled: false,\n * click: (dataItem: any) => {\n * //action\n * }\n * }]\n * }\n * ```\n *\n * For more examples, refer to the article on the [DropDownList templates]({% slug overview_ddl %}#templates).\n */\nclass ButtonItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nButtonItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nButtonItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonItemTemplateDirective, selector: \"[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst EXPORTED_DIRECTIVES = [\n ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective\n];\n/**\n * @hidden\n */\nclass ListModule {\n}\nListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, declarations: [ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective], imports: [CommonModule], exports: [ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective] });\nListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [EXPORTED_DIRECTIVES],\n exports: [EXPORTED_DIRECTIVES],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nvar KeyEvents;\n(function (KeyEvents) {\n KeyEvents[KeyEvents[\"keydown\"] = 0] = \"keydown\";\n KeyEvents[KeyEvents[\"keypress\"] = 1] = \"keypress\";\n KeyEvents[KeyEvents[\"keyup\"] = 2] = \"keyup\";\n})(KeyEvents || (KeyEvents = {}));\n\n/**\n * @hidden\n */\nvar NavigationAction;\n(function (NavigationAction) {\n // eslint-disable-next-line id-denylist\n NavigationAction[NavigationAction[\"Undefined\"] = 0] = \"Undefined\";\n NavigationAction[NavigationAction[\"Open\"] = 1] = \"Open\";\n NavigationAction[NavigationAction[\"Close\"] = 2] = \"Close\";\n NavigationAction[NavigationAction[\"Enter\"] = 3] = \"Enter\";\n NavigationAction[NavigationAction[\"EnterPress\"] = 4] = \"EnterPress\";\n NavigationAction[NavigationAction[\"EnterUp\"] = 5] = \"EnterUp\";\n NavigationAction[NavigationAction[\"Tab\"] = 6] = \"Tab\";\n NavigationAction[NavigationAction[\"Esc\"] = 7] = \"Esc\";\n NavigationAction[NavigationAction[\"Navigate\"] = 8] = \"Navigate\";\n})(NavigationAction || (NavigationAction = {}));\n\n/**\n * @hidden\n */\nconst NAVIGATION_CONFIG = new InjectionToken('navigation.config');\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(config) {\n this.navigate = new EventEmitter();\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n this.enter = new EventEmitter();\n this.enterpress = new EventEmitter();\n this.enterup = new EventEmitter();\n this.tab = new EventEmitter();\n this.esc = new EventEmitter();\n this.useLeftRightArrows = config.useLeftRightArrows;\n }\n process(args) {\n const keyCode = args.keyCode;\n const keyEvent = args.keyEvent;\n let index;\n let action = NavigationAction.Undefined;\n if (keyEvent === KeyEvents.keypress) {\n if (this.isEnter(keyCode)) {\n action = NavigationAction.EnterPress;\n }\n }\n else if (keyEvent === KeyEvents.keyup) {\n if (this.isEnter(keyCode)) {\n action = NavigationAction.EnterUp;\n }\n }\n else {\n if (args.altKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.Open;\n }\n else if (args.altKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.Close;\n }\n else if (this.isEnter(keyCode)) {\n action = NavigationAction.Enter;\n }\n else if (keyCode === Keys.Escape) {\n action = NavigationAction.Esc;\n }\n else if (keyCode === Keys.Tab) {\n action = NavigationAction.Tab;\n }\n else if (keyCode === Keys.ArrowUp || (this.useLeftRightArrows && keyCode === Keys.ArrowLeft)) {\n const step = args.flipNavigation ? 1 : -1;\n const start = args.flipNavigation ? args.min : args.max;\n const end = args.flipNavigation ? args.max : args.min;\n index = this.next({\n current: args.current,\n start: start,\n end: end,\n step: step\n });\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.ArrowDown || (this.useLeftRightArrows && keyCode === Keys.ArrowRight)) {\n const step = args.flipNavigation ? -1 : 1;\n const start = args.flipNavigation ? args.max : args.min;\n const end = args.flipNavigation ? args.min : args.max;\n index = this.next({\n current: args.current,\n start: start,\n end: end,\n step: step\n });\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.Home) {\n index = args.min;\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.End) {\n index = args.max;\n action = NavigationAction.Navigate;\n }\n }\n if (action !== NavigationAction.Undefined) {\n this[NavigationAction[action].toLowerCase()].emit(index);\n }\n return action;\n }\n isEnter(keyCode) {\n return keyCode === Keys.Enter || keyCode === Keys.Space;\n }\n next(args) {\n if (!isPresent(args.current)) {\n return args.start;\n }\n else {\n return args.current !== args.end ? args.current + args.step : args.end;\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: NAVIGATION_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [NAVIGATION_CONFIG]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ListButton {\n constructor(focusService, navigationService, wrapperRef, _zone, localization, cdr) {\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.wrapperRef = wrapperRef;\n this._zone = _zone;\n this.cdr = cdr;\n this._open = false;\n this._disabled = false;\n this._active = false;\n this._popupSettings = { animate: true, popupClass: '' };\n this.listId = guid();\n this._isFocused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.wrapper = wrapperRef.nativeElement;\n this.subs.add(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.subscribeEvents();\n }\n get popupClasses() {\n const popupClasses = ['k-menu-popup'];\n if (this._popupSettings.popupClass) {\n popupClasses.push(this._popupSettings.popupClass);\n }\n return popupClasses.join(' ');\n }\n get openState() {\n return this._open;\n }\n set openState(open) {\n this._open = open;\n }\n /**\n * @hidden\n */\n togglePopupVisibility() {\n if (this._disabled) {\n return;\n }\n this.openState = !this.openState;\n if (!this.openState) {\n this.focusService.focus(-1);\n }\n }\n /**\n * @hidden\n */\n onItemClick(index) {\n this.emitItemClickHandler(index);\n setTimeout(() => this.focusWrapper(), 1);\n }\n ngOnDestroy() {\n this.openState = false;\n clearTimeout(this.focusFirstTimeout);\n clearTimeout(this.blurTimeout);\n this.subs.unsubscribe();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subscribeListItemFocusEvent();\n this.subscribeComponentBlurredEvent();\n this.subscribeNavigationEvents();\n }\n subscribeListItemFocusEvent() {\n this.subs.add(this.focusService.onFocus.subscribe(() => {\n this._isFocused = true;\n }));\n }\n subscribeComponentBlurredEvent() {\n this._zone.runOutsideAngular(() => {\n this.subs.add(this.navigationService.tab.pipe(filter(() => this._isFocused)).subscribe(this.handleTab.bind(this)));\n this.subs.add(fromEvent(document, 'click')\n .pipe(filter((event) => !this.wrapperContains(event.target)), filter(() => this._isFocused))\n .subscribe(() => this._zone.run(() => this.blurWrapper())));\n });\n }\n subscribeNavigationEvents() {\n this.subs.add(this.navigationService.navigate.subscribe(this.focusService.focus.bind(this.focusService)));\n this.subs.add(this.navigationService.enterup.subscribe(() => {\n this.enterHandler();\n this.focusWrapper();\n }));\n this.subs.add(this.navigationService.open.subscribe(() => {\n if (!this._open) {\n this.togglePopupVisibility();\n this.focusFirstItem();\n }\n else {\n this.focusWrapper();\n }\n }));\n this.subs.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(() => this.focusWrapper()));\n }\n enterHandler() { } // eslint-disable-line\n /**\n * @hidden\n */\n keyDownHandler(event) {\n this.keyHandler(event);\n }\n /**\n * @hidden\n */\n keyPressHandler(event) {\n this.keyHandler(event, KeyEvents.keypress);\n }\n /**\n * @hidden\n */\n keyUpHandler(event) {\n this.keyHandler(event, KeyEvents.keyup);\n }\n /**\n * @hidden\n */\n keyHandler(event, keyEvent) {\n if (this._disabled) {\n return;\n }\n let focused = this.focusService.focused || 0;\n const eventData = event;\n const action = this.navigationService.process({\n altKey: eventData.altKey,\n current: focused,\n keyCode: eventData.keyCode,\n keyEvent: keyEvent,\n max: this._data ? this._data.length - 1 : 0,\n min: 0\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab &&\n (action !== NavigationAction.Enter || (action === NavigationAction.Enter && this._open))) {\n if (event.keyCode === Keys.Space && action === NavigationAction.EnterUp) {\n this._open = false;\n }\n else {\n eventData.preventDefault();\n }\n }\n }\n emitItemClickHandler(index) {\n const dataItem = this._data[index];\n if (this._itemClick) {\n this._itemClick.emit(dataItem);\n }\n if (dataItem && dataItem.click && !dataItem.disabled) {\n dataItem.click(dataItem);\n }\n }\n focusFirstItem() {\n if (this._data && isPresent(this._data[0])) {\n this.focusFirstTimeout = setTimeout(() => this.focusService.focus(0), 1);\n }\n }\n focusWrapper() {\n if (this._open) {\n this.togglePopupVisibility();\n this.focusButton();\n }\n }\n wrapperContains(element) {\n return this.wrapper === element || this.wrapper.contains(element);\n }\n blurWrapper(emit = true) {\n if (this._open) {\n this.togglePopupVisibility();\n }\n this._isFocused = false;\n if (emit) {\n this._blur.emit();\n this.cdr.markForCheck();\n }\n }\n focusButton() {\n if (this.button) {\n this.button.nativeElement.focus();\n }\n }\n handleTab() {\n this.focusButton();\n this.blurWrapper(false);\n }\n}\nListButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListButton, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nListButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListButton, selector: \"ng-component\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListButton, decorators: [{\n type: Component,\n args: [{\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-splitbutton-messages-base\", inputs: { splitButtonLabel: \"splitButtonLabel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-splitbutton-messages-base'\n }]\n }], propDecorators: { splitButtonLabel: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedSplitButtonMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSplitButtonMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSplitButtonMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSplitButtonMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedSplitButtonMessagesDirective, selector: \"[kendoSplitButtonLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSplitButtonMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective)\n }\n ],\n selector: '[kendoSplitButtonLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst NAVIGATION_SETTINGS$2 = {\n useLeftRightArrows: true\n};\nconst NAVIGATION_SETTINGS_PROVIDER$2 = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS$2\n};\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the Kendo UI SplitButton component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * Paste\n * `\n * })\n *\n * class AppComponent {\n * public data: Array = [{\n * text: 'Keep Text Only',\n * icon: 'paste-plain-text',\n * click: () => { console.log('Keep Text Only click handler'); }\n * }, {\n * text: 'Paste as HTML',\n * icon: 'paste-as-html'\n * }, {\n * text: 'Paste Markdown',\n * icon: 'paste-markdown'\n * }, {\n * text: 'Set Default Paste'\n * }];\n *\n * public onSplitButtonClick(dataItem: any): void {\n * console.log('Paste');\n * }\n *\n * public onSplitButtonItemClick(dataItem: any): void {\n * if (dataItem) {\n * console.log(dataItem.text);\n * }\n * }\n * }\n * ```\n */\nclass SplitButtonComponent extends ListButton {\n constructor(focusService, navigationService, wrapperRef, zone, popupService, elRef, localization, cdr, renderer) {\n super(focusService, navigationService, wrapperRef, zone, localization, cdr);\n this.popupService = popupService;\n this.elRef = elRef;\n this.localization = localization;\n this.renderer = renderer;\n /**\n * Sets the text of the SplitButton.\n */\n this.text = '';\n /**\n * Defines an icon to be rendered next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.icon = '';\n /**\n * Defines an icon with a custom CSS class to be rendered next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.iconClass = '';\n /**\n * Defines the type attribute of the main button\n */\n this.type = 'button';\n /**\n * Defines the location of an image to be displayed next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.imageUrl = '';\n /**\n * The size property specifies the padding of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n this.size = 'medium';\n /**\n * The SplitButton allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none`— Removes the built in theme color.\n */\n this.themeColor = 'base';\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabIndex = 0;\n /**\n * Specifies the name of the [font icon]({% slug icons %}#toc-list-of-font-icons) that will\n * be rendered for the button which opens the popup.\n */\n this.arrowButtonIcon = 'arrow-s';\n /**\n * Fires each time the user clicks the main button.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Reply\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = ['Reply All', 'Forward', 'Reply & Delete'];\n *\n * public onSplitButtonClick(): void {\n * console.log('SplitButton click');\n * }\n * }\n * ```\n *\n */\n this.buttonClick = new EventEmitter();\n /**\n * Fires each time the user clicks on the drop-down list. The event data contains the data item bound to the clicked list item.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Reply\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = ['Reply All', 'Forward', 'Reply & Delete'];\n *\n * public onSplitButtonItemClick(dataItem?: string): void {\n * if (dataItem) {\n * console.log(dataItem);\n * }\n * }\n * }\n * ```\n *\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the SplitButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the SplitButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.activeArrow = false;\n this.listId = guid();\n this.buttonText = '';\n this.lockFocus = false;\n this._rounded = DEFAULT_ROUNDED$1;\n this._fillMode = DEFAULT_FILL_MODE$1;\n this.popupSubs = new Subscription();\n this._itemClick = this.itemClick;\n this._blur = this.onBlur;\n }\n /**\n * The rounded property specifies the border radius of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-fillMode)).\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this._fillMode = fillMode === 'clear' ? 'flat' : newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * When set to `true`, disables a SplitButton item\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n set disabled(value) {\n if (this.isOpen) {\n this.toggle(false);\n }\n this._disabled = value;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Configures the popup of the SplitButton.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n * - `align: \"left\" | \"center\" | \"right\"`—Specifies the alignment of the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the data of the SplitButton.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n /**\n * @hidden\n */\n set openState(open) {\n if (this.disabled) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this._toggle(open);\n }\n /**\n * @hidden\n */\n get openState() {\n return this._open;\n }\n /**\n * @hidden\n */\n get active() {\n return this._active;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? -1 : this.tabIndex;\n }\n set isFocused(value) {\n this._isFocused = value;\n }\n get isFocused() {\n return this._isFocused && !this._disabled;\n }\n get widgetClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n /**\n * @hidden\n */\n get ariaLabel() {\n const localizationMsg = this.localization.get('splitButtonLabel') || '';\n return replaceMessagePlaceholder(localizationMsg, 'buttonText', this.buttonText);\n }\n /**\n * @hidden\n */\n onButtonFocus() {\n if (!this.isFocused) {\n this._isFocused = true;\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n onArrowButtonClick() {\n this.lockFocus = true;\n this.togglePopupVisibility();\n }\n /**\n * @hidden\n */\n toggleButtonActiveState(enable) {\n this._active = enable;\n }\n /**\n * @hidden\n */\n toggleArrowButtonActiveState(enable) {\n this.activeArrow = enable;\n }\n /**\n * @hidden\n */\n onButtonClick() {\n this.lockFocus = true;\n this.buttonClick.emit();\n }\n /**\n * @hidden\n */\n onButtonBlur() {\n if (!this.isOpen && !this.lockFocus) {\n this.blurWrapper();\n }\n this.lockFocus = false;\n }\n /**\n * @hidden\n */\n keydown(event) {\n this.keyDownHandler(event);\n if (event.keyCode === Keys.Space) {\n this._active = true;\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n this.keyPressHandler(event);\n }\n /**\n * @hidden\n */\n keyup(event) {\n this._active = false;\n if (event.keyCode !== Keys.Space) {\n this.keyUpHandler(event);\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.updateButtonText();\n this.handleClasses(this.rounded, 'rounded');\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.hasOwnProperty('text')) {\n this.updateButtonText();\n }\n if (isChanged(\"popupSettings\", changes) && isPresent(this.popupRef)) {\n const popup = this.popupRef.popup.instance;\n const newSettings = changes.popupSettings.currentValue;\n popup.popupClass = newSettings.popupClass;\n popup.animate = newSettings.animate;\n popup.popupAlign = this.popupAlign;\n }\n }\n /**\n * @hidden\n */\n togglePopupVisibility() {\n super.togglePopupVisibility();\n if (isDocumentAvailable() && this.lockFocus) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n wrapperContains(element) {\n return (this.wrapper === element || this.wrapper.contains(element) || (this.popupRef && this.popupRef.popupElement.contains(element)));\n }\n /**\n * @hidden\n */\n get anchorAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'bottom' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * @hidden\n */\n get popupAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'top' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * Focuses the SplitButton component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the SplitButton component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n this.blurWrapper();\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyPopup();\n }\n /**\n * Toggles the visibility of the popup.\n * If the `toggle` method is used to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n if (this.disabled) {\n return;\n }\n tick(() => this._toggle(open === undefined ? !this._open : open));\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.openState;\n }\n enterHandler() {\n if (this.disabled) {\n return;\n }\n if (this.openState) {\n let focused = this.focusService.focused;\n if (isPresent(focused) && focused !== -1) {\n this.emitItemClickHandler(focused);\n }\n }\n else {\n this.buttonClick.emit();\n }\n }\n updateButtonText() {\n if (isDocumentAvailable()) {\n let innerText = this.wrapper.innerText\n .split('\\n')\n .join('')\n .trim();\n //setTimout is needed because of `Expression has changed after it was checked.` error;\n setTimeout(() => (this.buttonText = innerText), 0);\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.containerRef : appendTo;\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n createPopup() {\n this.popupRef = this.popupService.open({\n anchor: this.elRef,\n anchorAlign: this.anchorAlign,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: this.popupAlign,\n popupClass: this.popupClasses\n });\n this.popupSubs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => (this.openState = false)));\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this)));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupSubs.unsubscribe();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n handleClasses(value, input) {\n const elem = this.wrapperRef.nativeElement;\n const classes = getStylingClasses('button', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nSplitButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonComponent, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSplitButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitButtonComponent, selector: \"kendo-splitbutton\", inputs: { text: \"text\", icon: \"icon\", iconClass: \"iconClass\", type: \"type\", imageUrl: \"imageUrl\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", disabled: \"disabled\", popupSettings: \"popupSettings\", tabIndex: \"tabIndex\", textField: \"textField\", data: \"data\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\", arrowButtonIcon: \"arrowButtonIcon\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"keyup\": \"keyup($event)\" }, properties: { \"class.k-focus\": \"this.isFocused\", \"class.k-split-button\": \"this.widgetClasses\", \"class.k-button-group\": \"this.widgetClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ButtonItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"arrowButton\", first: true, predicate: [\"arrowButton\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"containerRef\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoSplitButton\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n {{ text }}\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-button-list\", inputs: [\"data\", \"textField\", \"itemTemplate\", \"size\"], outputs: [\"onItemClick\", \"onItemBlur\"] }], directives: [{ type: LocalizedSplitButtonMessagesDirective, selector: \"[kendoSplitButtonLocalizedMessages]\" }, { type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitButton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ],\n selector: 'kendo-splitbutton',\n template: `\n \n \n \n \n {{ text }}\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], type: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], disabled: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], textField: [{\n type: Input\n }], data: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\n }], arrowButtonIcon: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], itemTemplate: [{\n type: ContentChild,\n args: [ButtonItemTemplateDirective, { static: false }]\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], arrowButton: [{\n type: ViewChild,\n args: ['arrowButton', { static: true, read: ElementRef }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], containerRef: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], isFocused: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-split-button']\n }, {\n type: HostBinding,\n args: ['class.k-button-group']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_buttons %}).\n */\nclass SplitButtonCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSplitButtonCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSplitButtonCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitButtonCustomMessagesComponent, selector: \"kendo-splitbutton-messages\", providers: [{\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent)\n }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent)\n }],\n selector: 'kendo-splitbutton-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `SplitButtonComponent`—The SplitButtonComponent component class.\n */\nclass SplitButtonModule {\n}\nSplitButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSplitButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, declarations: [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent], imports: [CommonModule, PopupModule, ButtonModule, ListModule], exports: [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent] });\nSplitButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, imports: [[CommonModule, PopupModule, ButtonModule, ListModule], ListModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n exports: [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n imports: [CommonModule, PopupModule, ButtonModule, ListModule]\n }]\n }] });\n\nconst NAVIGATION_SETTINGS$1 = {\n useLeftRightArrows: true\n};\nconst NAVIGATION_SETTINGS_PROVIDER$1 = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS$1\n};\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the Kendo UI DropDownButton component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * User Settings\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [{\n * text: 'My Profile'\n * }, {\n * text: 'Friend Requests'\n * }, {\n * text: 'Account Settings'\n * }, {\n * text: 'Support'\n * }, {\n * text: 'Log Out'\n * }];\n * }\n * ```\n */\nclass DropDownButtonComponent extends ListButton {\n constructor(focusService, navigationService, wrapperRef, zone, popupService, elRef, localization, cdr) {\n super(focusService, navigationService, wrapperRef, zone, localization, cdr);\n this.popupService = popupService;\n this.elRef = elRef;\n /**\n * Defines the name of an existing icon in a Kendo UI theme.\n */\n this.icon = '';\n /**\n * Defines the list of CSS classes which are used for styling the Button with custom icons.\n */\n this.iconClass = '';\n /**\n * Defines a URL for styling the button with a custom image.\n */\n this.imageUrl = '';\n /**\n * The size property specifies the padding of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n this.size = 'medium';\n /**\n * The rounded property specifies the border radius of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n this.rounded = 'medium';\n /**\n * The DropDownButton allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabIndex = 0;\n /**\n * Fires each time the user clicks on a drop-down list item. The event data contains the data item bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the DropDownButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.listId = guid();\n this._fillMode = DEFAULT_FILL_MODE;\n this.popupSubs = new Subscription();\n this._itemClick = this.itemClick;\n this._blur = this.onBlur;\n }\n /**\n * Configures the popup of the DropDownButton.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n * - `align: \"left\" | \"center\" | \"right\"`—Specifies the alignment of the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the disabled state of the DropDownButton.\n */\n set disabled(value) {\n if (value && this.openState) {\n this.openState = false;\n }\n this._disabled = value;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Sets or gets the data of the DropDownButton.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n /**\n * The fillMode property specifies the background and border styles of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-fillMode)).\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `none`\n */\n set fillMode(fillMode) {\n this._fillMode = fillMode === 'clear' ? 'flat' : fillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n set openState(open) {\n if (this.disabled) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this._toggle(open);\n }\n /**\n * @hidden\n */\n get openState() {\n return this._open;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? (-1) : this.tabIndex;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get focused() {\n return this._isFocused && !this._disabled;\n }\n get widgetClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n /**\n * @hidden\n */\n get active() {\n return this._active;\n }\n /**\n * @hidden\n */\n keydown(event) {\n this.keyDownHandler(event);\n if (event.keyCode === Keys.Space) {\n this._active = true;\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n this.keyPressHandler(event);\n }\n /**\n * @hidden\n */\n keyup(event) {\n this.keyUpHandler(event);\n this._active = false;\n }\n /**\n * @hidden\n */\n mousedown(event) {\n if (this._disabled) {\n event.preventDefault();\n }\n this._active = true;\n }\n /**\n * @hidden\n */\n mouseup(event) {\n if (this._disabled) {\n event.preventDefault();\n }\n this._active = false;\n }\n /**\n * @hidden\n */\n openPopup() {\n this.togglePopupVisibility();\n }\n /**\n * @hidden\n */\n onButtonBlur() {\n if (!this.isOpen) {\n this.blurWrapper();\n }\n }\n /**\n * @hidden\n */\n get anchorAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'bottom' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * @hidden\n */\n get popupAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'top' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * Focuses the DropDownButton component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownButton component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n this.blurWrapper();\n }\n }\n ngOnChanges(changes) {\n if (isChanged(\"popupSettings\", changes) && isPresent(this.popupRef)) {\n const popup = this.popupRef.popup.instance;\n const newSettings = changes.popupSettings.currentValue;\n popup.popupClass = newSettings.popupClass;\n popup.animate = newSettings.animate;\n popup.popupAlign = this.popupAlign;\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyPopup();\n }\n /**\n * Toggles the visibility of the popup.\n * If the `toggle` method is used to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n if (this.disabled) {\n return;\n }\n tick(() => (this._toggle((open === undefined) ? !this._open : open)));\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.openState;\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (!this._disabled && !this._isFocused) {\n this._isFocused = true;\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n wrapperContains(element) {\n return this.wrapper === element\n || this.wrapper.contains(element)\n || (this.popupRef && this.popupRef.popupElement.contains(element));\n }\n subscribeNavigationEvents() {\n this.subs.add(this.navigationService.navigate\n .subscribe(this.onArrowKeyNavigate.bind(this)));\n this.subs.add(this.navigationService.enterup.subscribe(this.onNavigationEnterUp.bind(this)));\n this.subs.add(this.navigationService.open.subscribe(this.onNavigationOpen.bind(this)));\n this.subs.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(this.onNavigationClose.bind(this)));\n }\n onNavigationEnterUp() {\n if (!this._disabled && !this.openState) {\n this._active = false;\n }\n if (this.openState) {\n let focused = this.focusService.focused;\n if (isPresent(focused) && focused !== -1) {\n this.emitItemClickHandler(focused);\n }\n }\n this.togglePopupVisibility();\n if (!this.openState && isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n onNavigationOpen() {\n if (!this._disabled && !this.openState) {\n this.togglePopupVisibility();\n }\n }\n onNavigationClose() {\n if (this.openState) {\n this.togglePopupVisibility();\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n }\n onArrowKeyNavigate(index) {\n this.focusService.focus(index);\n }\n _toggle(open) {\n if (this._open === open) {\n return;\n }\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n createPopup() {\n this.popupRef = this.popupService.open({\n anchor: this.elRef,\n anchorAlign: this.anchorAlign,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: this.popupAlign,\n popupClass: this.popupClasses\n });\n this.popupSubs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => this.openState = false));\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this)));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.popupSubs.unsubscribe();\n }\n }\n}\nDropDownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonComponent, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDropDownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownButtonComponent, selector: \"kendo-dropdownbutton\", inputs: { icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", textField: \"textField\", disabled: \"disabled\", data: \"data\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", buttonClass: \"buttonClass\", tabIndex: \"tabIndex\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"keyup\": \"keyup($event)\", \"mousedown\": \"mousedown($event)\", \"mouseup\": \"mouseup($event)\" }, properties: { \"class.k-focus\": \"this.focused\", \"class.k-dropdown-button\": \"this.widgetClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$1,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownbutton'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ButtonItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"buttonList\", first: true, predicate: [\"buttonList\"], descendants: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoDropDownButton\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-button-list\", inputs: [\"data\", \"textField\", \"itemTemplate\", \"size\"], outputs: [\"onItemClick\", \"onItemBlur\"] }], directives: [{ type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownButton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$1,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownbutton'\n }\n ],\n selector: 'kendo-dropdownbutton',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], data: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], focused: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-dropdown-button']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], itemTemplate: [{\n type: ContentChild,\n args: [ButtonItemTemplateDirective, { static: false }]\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], buttonList: [{\n type: ViewChild,\n args: ['buttonList', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }], mousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], mouseup: [{\n type: HostListener,\n args: ['mouseup', ['$event']]\n }] } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownButtonComponent`—The DropDownButtonComponent component class.\n */\nclass DropDownButtonModule {\n}\nDropDownButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, declarations: [DropDownButtonComponent], imports: [CommonModule, PopupModule, ListModule, ButtonModule], exports: [DropDownButtonComponent, ListModule] });\nDropDownButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, imports: [[CommonModule, PopupModule, ListModule, ButtonModule], ListModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DropDownButtonComponent],\n exports: [DropDownButtonComponent, ListModule],\n imports: [CommonModule, PopupModule, ListModule, ButtonModule]\n }]\n }] });\n\n/**\n * Displays a Chip that represents an input, attribute or an action.\n */\nclass ChipComponent {\n constructor(element, renderer, ngZone, localizationService) {\n this.element = element;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.localizationService = localizationService;\n /**\n * Specifies the selected state of the Chip.\n * @default false\n */\n this.selected = false;\n /**\n * Specifies if the Chip will be removable or not.\n * If the property is set to `true`, the Chip renders a remove icon.\n * @default false\n */\n this.removable = false;\n /**\n * If set to `true`, the Chip will be disabled.\n * @default false\n */\n this.disabled = false;\n /**\n * Fires each time the user clicks the remove icon of the Chip.\n */\n this.remove = new EventEmitter();\n /**\n * Fires each time the user clicks the content of the Chip.\n */\n this.contentClick = new EventEmitter();\n this.tabIndex = 0;\n this.hostClass = true;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this._themeColor = 'base';\n this.focused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the padding of the Chip\n * ([see example]({% slug appearance_chip %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n if (isPresent(size)) {\n this._size = size;\n }\n this.handleClasses(this._size, 'size');\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the Chip\n * ([see example]({% slug appearance_chip %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n if (isPresent(rounded)) {\n this._rounded = rounded;\n }\n this.handleClasses(this._rounded, 'rounded');\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the Chip\n * ([see example]({% slug appearance_chip %}#toc-fillMode)).\n *\n * The possible values are:\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n if (isPresent(fillMode)) {\n this._fillMode = fillMode;\n }\n this.handleClasses(this._fillMode, 'fillMode');\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The Chip allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug appearance_chip %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` (default)\n * * `info`\n * * `success`\n * * `warning`\n * * `error`\n * * `none`\n */\n set themeColor(themeColor) {\n if (isPresent(themeColor)) {\n this._themeColor = themeColor;\n }\n this.handleThemeColor(this._themeColor);\n }\n get themeColor() {\n return this._themeColor;\n }\n get ariaChecked() {\n return this.selected;\n }\n get hasIconClass() {\n return this.icon || this.iconClass || this.avatarClass ? true : false;\n }\n get disabledClass() {\n return this.disabled;\n }\n get selectedClass() {\n return this.selected;\n }\n get focusedClass() {\n return this.focused;\n }\n ngOnInit() {\n this.subs.add(this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngAfterViewInit() {\n const chip = this.element.nativeElement;\n const stylingOptions = ['size', 'rounded', 'fillMode'];\n stylingOptions.forEach(input => {\n this.handleClasses(this[input], input);\n });\n this.attachElementEventHandlers(chip);\n }\n /**\n * @hidden\n */\n get kendoIconClass() {\n this.verifyIconSettings([this.iconClass, this.avatarClass]);\n return `k-i-${this.icon}`;\n }\n /**\n * @hidden\n */\n get customIconClass() {\n this.verifyIconSettings([this.icon, this.avatarClass]);\n return `${this.iconClass}`;\n }\n /**\n * @hidden\n */\n get chipAvatarClass() {\n this.verifyIconSettings([this.icon, this.iconClass]);\n return `${this.avatarClass}`;\n }\n /**\n * @hidden\n */\n get removeIconClass() {\n if (this.removeIcon) {\n return `${this.removeIcon}`;\n }\n return `k-i-close-circle`;\n }\n /**\n * Focuses the Chip component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.element.nativeElement.focus();\n }\n }\n /**\n * Blurs the Chip component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.element.nativeElement.blur();\n }\n }\n /**\n * @hidden\n */\n onRemoveClick(e) {\n if (this.removable) {\n this.remove.emit({ sender: this, originalEvent: e });\n }\n }\n attachElementEventHandlers(chip) {\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(chip, 'focus', () => {\n this.renderer.addClass(chip, 'k-focus');\n }));\n this.subs.add(this.renderer.listen(chip, 'blur', () => {\n this.renderer.removeClass(chip, 'k-focus');\n }));\n this.subs.add(this.renderer.listen(chip, 'click', (e) => {\n const isRemoveClicked = closest(e.target, '.k-chip-remove-action');\n if (!isRemoveClicked) {\n this.ngZone.run(() => {\n this.contentClick.emit({ sender: this, originalEvent: e });\n });\n }\n }));\n });\n }\n /**\n * @hidden\n */\n verifyIconSettings(iconsToCheck) {\n if (isDevMode()) {\n if (iconsToCheck.filter(icon => icon !== null && icon !== undefined).length > 0) {\n this.renderer.removeClass(this.element.nativeElement, 'k-chip-has-icon');\n throw new Error('Invalid configuration: Having multiple icons is not supported. Only a single icon on a chip can be displayed.');\n }\n }\n }\n handleClasses(value, input) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('chip', input, this[input], value);\n if (input === 'fillMode') {\n this.handleThemeColor(this.themeColor, this[input], value);\n }\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleThemeColor(value, prevFillMode, fillMode) {\n const elem = this.element.nativeElement;\n const removeFillMode = prevFillMode ? prevFillMode : this.fillMode;\n const addFillMode = fillMode ? fillMode : this.fillMode;\n const themeColorClass = getThemeColorClasses('chip', removeFillMode, addFillMode, this.themeColor, value);\n this.renderer.removeClass(elem, themeColorClass.toRemove);\n if (addFillMode !== 'none' && fillMode !== 'none') {\n if (themeColorClass.toAdd) {\n this.renderer.addClass(elem, themeColorClass.toAdd);\n }\n }\n }\n}\nChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChipComponent, selector: \"kendo-chip\", inputs: { label: \"label\", icon: \"icon\", iconClass: \"iconClass\", avatarClass: \"avatarClass\", selected: \"selected\", removable: \"removable\", removeIcon: \"removeIcon\", disabled: \"disabled\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\" }, outputs: { remove: \"remove\", contentClick: \"contentClick\" }, host: { properties: { \"attr.tabindex\": \"this.tabIndex\", \"attr.aria-checked\": \"this.ariaChecked\", \"class.k-chip\": \"this.hostClass\", \"class.k-chip-has-icon\": \"this.hasIconClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-selected\": \"this.selectedClass\", \"class.k-focus\": \"this.focusedClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip'\n }\n ], ngImport: i0, template: `\n \n
\n\n \n \n\n \n \n \n\n \n \n {{ label }}\n \n \n \n\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chip',\n template: `\n \n \n\n \n \n\n \n \n \n\n \n \n {{ label }}\n \n \n \n\n \n \n \n \n \n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { label: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], avatarClass: [{\n type: Input\n }], selected: [{\n type: Input\n }], removable: [{\n type: Input\n }], removeIcon: [{\n type: Input\n }], disabled: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], remove: [{\n type: Output\n }], contentClick: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaChecked: [{\n type: HostBinding,\n args: ['attr.aria-checked']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-chip']\n }], hasIconClass: [{\n type: HostBinding,\n args: ['class.k-chip-has-icon']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], selectedClass: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nclass ChipListComponent {\n constructor(localizationService, renderer, element) {\n this.localizationService = localizationService;\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n /**\n * Sets the selection mode of the ChipList.\n *\n * The available values are:\n * * `none` (default)\n * * `single`\n * * `multiple`\n */\n this.selection = 'none';\n /**\n * Fires each time when the ChipList selection is changed.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Fires each time the user clicks on the remove icon of the Chip.\n */\n this.remove = new EventEmitter();\n this.role = 'listbox';\n this._size = 'medium';\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the gap between the Chips in the ChipList\n * ([see example]({% slug appearance_chiplist %}#toc-size)).\n *\n * The possible values are:\n * * `'small'`\n * * `'medium'` (default)\n * * `'large'`\n * * `none`\n */\n set size(size) {\n const sizeValue = size ? size : 'medium';\n this.handleClasses(sizeValue, 'size');\n this._size = sizeValue;\n }\n get size() {\n return this._size;\n }\n get single() {\n return this.selection === 'single';\n }\n get multiple() {\n return this.selection === 'multiple';\n }\n /**\n * @hidden\n */\n onClick($event) {\n const target = $event.target;\n const isRemoveClicked = closest(target, '.k-chip-remove-action');\n const clickedChip = closest(target, '.k-chip');\n const chip = this.chips.find((chip) => clickedChip === chip.element.nativeElement);\n if (isRemoveClicked && clickedChip) {\n const removeEventArgs = { sender: this, originalEvent: $event, removedChip: chip };\n this.remove.emit(removeEventArgs);\n }\n if (this.selection !== 'none' && clickedChip && !isRemoveClicked) {\n this.setSelection(chip);\n }\n }\n ngOnInit() {\n this.dynamicRTLSubscription = this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngAfterViewInit() {\n const stylingInputs = ['size'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngAfterContentInit() {\n this.chips.forEach((chip) => {\n this.renderer.setAttribute(chip.element.nativeElement, 'role', 'option');\n });\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n selectedChips() {\n return this.chips.reduce((acc, cur, idx) => { return cur.selected ? acc.concat(idx) : acc; }, []);\n }\n /**\n * Updates the selection on click of a Chip. Emits events.\n */\n setSelection(chip) {\n if (this.selection === 'single') {\n this.clearSelection(chip);\n }\n chip.selected = !chip.selected;\n this.selectedChange.emit(this.selectedChips());\n }\n clearSelection(chip) {\n this.chips.forEach((c) => {\n if (chip !== c) {\n c.selected = false;\n }\n });\n }\n handleClasses(value, input) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('chip-list', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nChipListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipListComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nChipListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChipListComponent, selector: \"kendo-chiplist, kendo-chip-list\", inputs: { selection: \"selection\", size: \"size\" }, outputs: { selectedChange: \"selectedChange\", remove: \"remove\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-chip-list\": \"this.hostClass\", \"attr.dir\": \"this.direction\", \"class.k-selection-single\": \"this.single\", \"class.k-selection-multiple\": \"this.multiple\", \"attr.role\": \"this.role\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chiplist'\n }\n ], queries: [{ propertyName: \"chips\", predicate: ChipComponent }], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chiplist, kendo-chip-list',\n template: `\n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chiplist'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-chip-list']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], selection: [{\n type: Input\n }], size: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], remove: [{\n type: Output\n }], chips: [{\n type: ContentChildren,\n args: [ChipComponent]\n }], single: [{\n type: HostBinding,\n args: ['class.k-selection-single']\n }], multiple: [{\n type: HostBinding,\n args: ['class.k-selection-multiple']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\nconst exportedModules$1 = [\n ChipComponent,\n ChipListComponent\n];\nconst declarations$1 = [\n ...exportedModules$1\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Chip and ChipList components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Chip module\n * import { ChipModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ChipModule], // import Chip module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nclass ChipModule {\n}\nChipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, declarations: [ChipComponent,\n ChipListComponent], imports: [CommonModule], exports: [ChipComponent,\n ChipListComponent] });\nChipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nfunction getAnchorAlign(fabAlign, rtl) {\n let align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'bottom' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n if (fabAlign.vertical === 'bottom') {\n align.vertical = 'top';\n }\n if (fabAlign.vertical === 'bottom' && fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n align.vertical = 'top';\n }\n return align;\n}\n/**\n * @hidden\n */\nfunction getPopupAlign(fabAlign, rtl) {\n let align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'top' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n if (fabAlign.vertical === 'bottom') {\n align.vertical = 'bottom';\n }\n if (fabAlign.vertical === 'bottom' && fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n align.vertical = 'bottom';\n }\n return align;\n}\n\n/**\n * @hidden\n */\nfunction openAnimation(animationSettings) {\n const isBottom = animationSettings.align.vertical === 'bottom';\n const duration = animationSettings.duration;\n const gap = animationSettings.gap;\n return sequence([\n query(`.k-fab-item`, [\n style({ opacity: 0, transform: `translateY(${isBottom ? '8px' : '-8px'})` }),\n stagger(gap, [animate(`${duration}ms ease-in`, style({ opacity: '*', transform: 'translateY(0)' }))])\n ], { optional: true })\n ]);\n}\n/**\n * @hidden\n */\nfunction closeAnimation(animationSettings) {\n const isBottom = animationSettings.align.vertical === 'bottom';\n const duration = animationSettings.duration;\n const gap = animationSettings.gap;\n return sequence([\n query(`.k-fab-item`, [\n style({ opacity: '*', transform: 'translateY(0)' }),\n stagger(-gap, [animate(`${duration}ms ease-in`, style({ opacity: 0, transform: `translateY(${isBottom ? '8px' : '-8px'})` }))])\n ], { optional: true })\n ]);\n}\n\n/**\n * Represents a template that defines the content of the whole dial item.\n * To define the template, nest an `` tag\n * with the `kendoDialItemTemplate` directive inside the `` tag\n * ([see example]({% slug templates_floatingactionbutton %}#toc-dial-item-template)).\n */\nclass DialItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDialItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDialItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialItemTemplateDirective, selector: \"[kendoDialItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDialItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the FloatingActionButton.\n * To define the template, nest an `` tag\n * with the `kendoFloatingActionButtonTemplate` directive inside the `` tag\n * ([see example]({% slug templates_floatingactionbutton %}#toc-floatingactionbutton-template)).\n */\nclass FloatingActionButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFloatingActionButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFloatingActionButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingActionButtonTemplateDirective, selector: \"[kendoFloatingActionButtonTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFloatingActionButtonTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass DialItemComponent {\n constructor(element, renderer, localisationService) {\n this.element = element;\n this.renderer = renderer;\n this.localisationService = localisationService;\n this.hostClass = true;\n this.role = 'menuitem';\n }\n get disabledClass() {\n return this.item.disabled;\n }\n get title() {\n const label = this.item.label;\n return label ? label : this.itemTitle;\n }\n get indexAttr() {\n return this.index;\n }\n get iconClasses() {\n const classes = [];\n if (this.item.iconClass) {\n classes.push(`${this.item.iconClass}`);\n }\n if (this.item.icon) {\n classes.push(`k-fab-item-icon k-icon k-i-${this.item.icon}`);\n }\n return classes;\n }\n get itemTitle() {\n const icon = this.item.icon;\n const itemTitle = this.item.itemTitle;\n return (icon && itemTitle) ? itemTitle : icon;\n }\n ngAfterViewInit() {\n const element = this.element.nativeElement;\n const rtl = this.localisationService.rtl;\n const hAlign = this.align.horizontal;\n this.renderer.addClass(element, this.getTextDirectionClass(rtl, hAlign));\n }\n getTextDirectionClass(rtl, hAlign) {\n const dir = rtl ? 'rtl' : 'ltr';\n const align = hAlign === 'end' ? 'end' : 'start';\n const directions = {\n rtl: { end: 'k-text-left', start: 'k-text-right' },\n ltr: { start: 'k-text-left', end: 'k-text-right' }\n };\n return directions[dir][align];\n }\n}\nDialItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDialItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialItemComponent, selector: \"[kendoDialItem]\", inputs: { cssClass: \"cssClass\", cssStyle: \"cssStyle\", isFocused: \"isFocused\", index: \"index\", item: \"item\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, host: { properties: { \"class.k-fab-item\": \"this.hostClass\", \"attr.role\": \"this.role\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.title\": \"this.title\", \"attr.aria-label\": \"this.title\", \"attr.data-fab-item-index\": \"this.indexAttr\" } }, ngImport: i0, template: `\n \n \n\n \n {{ item.label }}\n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDialItem]',\n template: `\n \n \n\n \n {{ item.label }}\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-fab-item']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], title: [{\n type: HostBinding,\n args: ['attr.title']\n }, {\n type: HostBinding,\n args: ['attr.aria-label']\n }], indexAttr: [{\n type: HostBinding,\n args: ['attr.data-fab-item-index']\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], isFocused: [{\n type: Input\n }], index: [{\n type: Input\n }], item: [{\n type: Input\n }], dialItemTemplate: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DialListComponent {\n constructor(focusService, cdr) {\n this.focusService = focusService;\n this.cdr = cdr;\n this.hostClass = true;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.focusService.onFocus.subscribe(() => this.cdr.detectChanges()));\n }\n get bottomClass() {\n return this.align.vertical === 'top' || this.align.vertical === 'middle';\n }\n get topClass() {\n return this.align.vertical === 'bottom';\n }\n isFocused(index) {\n return this.focusService.isFocused(index);\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n}\nDialListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialListComponent, deps: [{ token: FocusService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDialListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialListComponent, selector: \"[kendoDialList]\", inputs: { dialItems: \"dialItems\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, host: { properties: { \"class.k-fab-items\": \"this.hostClass\", \"class.k-fab-items-bottom\": \"this.bottomClass\", \"class.k-fab-items-top\": \"this.topClass\" } }, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: DialItemComponent, selector: \"[kendoDialItem]\", inputs: [\"cssClass\", \"cssStyle\", \"isFocused\", \"index\", \"item\", \"dialItemTemplate\", \"align\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: [\"index\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDialList]',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-fab-items']\n }], bottomClass: [{\n type: HostBinding,\n args: ['class.k-fab-items-bottom']\n }], topClass: [{\n type: HostBinding,\n args: ['class.k-fab-items-top']\n }], dialItems: [{\n type: Input\n }], dialItemTemplate: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\nconst NAVIGATION_SETTINGS = {\n useLeftRightArrows: false\n};\nconst NAVIGATION_SETTINGS_PROVIDER = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS\n};\nconst SIZE_CLASSES = {\n small: 'k-fab-sm',\n medium: 'k-fab-md',\n large: 'k-fab-lg'\n};\nconst ROUNDED_CLASSES = {\n small: 'k-rounded-sm',\n medium: 'k-rounded-md',\n large: 'k-rounded-lg',\n full: 'k-rounded-full'\n};\nconst FILLMODE_CLASS = 'k-fab-solid';\nconst DEFAULT_DURATION = 180;\nconst DEFAULT_ITEM_GAP = 90;\nconst DEFAULT_OFFSET = '16px';\nconst DEFAULT_ROUNDED = 'full';\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_THEME_COLOR = 'primary';\n/**\n *\n * Represents the [Kendo UI FloatingActionButton component for Angular]({% slug overview_floatingactionbutton %}).\n * Used to specify the primary or the most common action in an application.\n *\n */\nclass FloatingActionButtonComponent {\n constructor(renderer, element, focusService, navigationService, ngZone, popupService, builder, localizationService) {\n this.renderer = renderer;\n this.element = element;\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.builder = builder;\n this.localizationService = localizationService;\n /**\n * Specifies the positionMode of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-positionMode)).\n *\n * * The possible values are:\n * * `absolute`—Positions the FloatingActionButton absolutely to its first positioned parent element.\n * * `fixed` (Default)—Positions the FloatingActionButton relative to the viewport. It always stays in the same place even if the page is scrolled.\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the animation settings of the FloatingActionButton dial items.\n * ([see example]({% slug dialitems_floatingactionbutton %}#toc-animation)).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`—Applies the default [`DialItemAnimation`]({% slug api_buttons_dialitemanimation %}) settings.\n * * `false`\n * * `DialItemAnimation`\n * * `duration`—Specifies the animation duration in milliseconds for each dial item. Defaults to `180ms`.\n * * `gap`—Specifies the animation duration gap in milliseconds after each dial item is animated. Defaults to `90ms`.\n */\n this.dialItemAnimation = true;\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the FloatingActionButton.\n */\n this.tabIndex = 0;\n /**\n * Specifies the collection of the dial items that will be rendered in the FloatingActionButton popup.\n */\n this.dialItems = [];\n /**\n * Fires each time the FloatingActionButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the FloatingActionButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time a dial item is clicked.\n */\n this.dialItemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed\n * ([more information and example]({% slug overview_floatingactionbutton %}#toc-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open\n * ([more information and example]({% slug overview_floatingactionbutton %}#toc-events)).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.id = `k-${guid()}`;\n this._themeColor = DEFAULT_THEME_COLOR;\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._disabled = false;\n this._align = { horizontal: 'end', vertical: 'bottom' };\n this._offset = { x: DEFAULT_OFFSET, y: DEFAULT_OFFSET };\n this.subscriptions = new Subscription();\n this.rtl = false;\n this.animationEnd = new EventEmitter();\n this.initialSetup = true;\n validatePackage(packageMetadata);\n this.subscribeNavigationEvents();\n this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n }\n get fixedClass() {\n return this.positionMode === 'fixed';\n }\n get absoluteClass() {\n return this.positionMode === 'absolute';\n }\n /**\n * Specifies the theme color of the FloatingActionButton\n * ([see example]({% slug appearance_floatingactionbutton %}#toc-themeColor)).\n * The theme color will be applied as background color of the component.\n *\n * The possible values are:\n * * `primary` (Default)—Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none`— Removes the built in theme color.\n */\n set themeColor(themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR;\n this.handleClasses(newThemeColor, 'themeColor');\n this._themeColor = newThemeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the size of the FloatingActionButton\n * ([see example]({% slug appearance_floatingactionbutton %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the FloatingActionButton.\n *\n * The possible values are:\n * * `small`\n * * `medium`\n * * `large`\n * * `full` (default)\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Specifies whether the FloatingActionButton is disabled.\n */\n set disabled(disabled) {\n this._disabled = disabled;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Specifies the horizontal and vertical alignment of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-align)).\n *\n * The possible values are:\n * * `{ horizontal: 'start'|'center'|'end', vertical: 'top'|'middle'|'bottom' }`\n *\n * The default value is:\n * * `{ horizontal: 'end', vertical: 'bottom' }`\n *\n */\n set align(align) {\n this._align = Object.assign(this._align, align);\n }\n get align() {\n return this._align;\n }\n /**\n * Specifies the horizontal and vertical offset position of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-offset)).\n *\n * * The default value is:\n * * `{ x: '16px', y: '16px' }`\n */\n set offset(offset) {\n this._offset = Object.assign(this._offset, offset);\n this.offsetStyles();\n }\n get offset() {\n return this._offset;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? (-1) : this.tabIndex;\n }\n ngAfterViewInit() {\n ['size', 'rounded', 'themeColor'].forEach(option => this.handleClasses(this[option], option));\n this.renderer.addClass(this.element.nativeElement, this.alignClass());\n this.offsetStyles();\n this.initialSetup = false;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * Indicates whether the FloatingActionButton is currently open.\n */\n get isOpen() { return isPresent(this.popupRef); }\n /**\n * Focuses the FloatingActionButton.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the FloatingActionButton.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n }\n }\n /**\n * Toggles the visibility of the FloatingActionButton dial items popup.\n *\n * If you use the `toggleDial` method to open or close the dial items,\n * the `open` and `close` events do not fire ([more information and examples]({% slug openstate_floatingactionbutton %}#toc-events)).\n *\n * @param open - The state of dial items popup.\n */\n toggleDial(open) {\n if (this.disabled || !this.hasDialItems) {\n return;\n }\n const shouldOpen = isPresent(open) ? open : !this.isOpen;\n if (this.disabled || shouldOpen === this.isOpen) {\n return;\n }\n if (shouldOpen) {\n setTimeout(() => this.openDial());\n }\n else {\n this.closeDial();\n }\n }\n /**\n * @hidden\n */\n get role() {\n return (this.dialItems && this.dialItems.length) ? 'menubutton' : 'button';\n }\n /**\n * @hidden\n */\n get ariaExpanded() {\n return isPresent(this.isOpen);\n }\n /**\n * @hidden\n */\n get ariaHasPopup() {\n return isPresent(this.isOpen);\n }\n /**\n * @hidden\n */\n get iconClasses() {\n const classes = [];\n if (this.iconClass) {\n classes.push(`${this.iconClass}`);\n }\n if (this.icon) {\n classes.push(`k-fab-icon k-icon k-i-${this.icon}`);\n }\n return classes;\n }\n /**\n * @hidden\n */\n clickHandler() {\n if (this.disabled || !this.hasDialItems) {\n return;\n }\n this.ngZone.run(() => {\n const shouldOpen = !this.isOpen;\n this.toggleDialWithEvents(shouldOpen);\n });\n }\n /**\n * @hidden\n */\n keyDownHandler(event) {\n this.keyHandler(event);\n }\n /**\n * @hidden\n */\n keyHandler(event, keyEvent) {\n if (this.disabled) {\n return;\n }\n const focused = this.focusService.focused || 0;\n const keyCode = event.keyCode;\n const action = this.navigationService.process({\n altKey: event.altKey,\n current: focused,\n keyCode,\n keyEvent: keyEvent,\n max: this.dialItems ? this.dialItems.length - 1 : 0,\n min: 0,\n flipNavigation: this.align.vertical === 'bottom'\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n onItemClick(event) {\n const item = closest(event.target, '.k-fab-item');\n if (!item) {\n return;\n }\n const index = item.getAttribute('data-fab-item-index');\n this.emitItemClick(index);\n }\n /**\n * @hidden\n */\n focusHandler() {\n if (!this.disabled) {\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n blurHandler() {\n this.onBlur.emit();\n this.toggleDialWithEvents(false);\n }\n handleClasses(inputValue, input) {\n if (isPresent(this.button) && (this[input] !== inputValue || this.initialSetup)) {\n const button = this.button.nativeElement;\n const classesToRemove = {\n themeColor: `${FILLMODE_CLASS}-${this.themeColor}`,\n size: SIZE_CLASSES[this.size],\n rounded: ROUNDED_CLASSES[this.rounded]\n };\n const classesToAdd = {\n themeColor: inputValue !== 'none' ? `${FILLMODE_CLASS}-${inputValue}` : '',\n size: SIZE_CLASSES[inputValue],\n rounded: ROUNDED_CLASSES[inputValue]\n };\n this.renderer.removeClass(button, classesToRemove[input]);\n if (classesToAdd[input]) {\n this.renderer.addClass(button, classesToAdd[input]);\n }\n }\n }\n onEnterPressed() {\n const index = this.focusService.focused;\n this.emitItemClick(index);\n }\n emitItemClick(index) {\n const item = this.dialItems[index];\n if (item && !item.disabled) {\n const clickEventArgs = { item: item, index: index };\n this.dialItemClick.emit(clickEventArgs);\n this.toggleDialWithEvents(false);\n }\n }\n subscribeNavigationEvents() {\n this.subscriptions.add(this.navigationService.navigate.subscribe(this.onArrowKeyNavigate.bind(this)));\n this.subscriptions.add(this.navigationService.enter.subscribe(this.onNavigationEnterPress.bind(this)));\n this.subscriptions.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(this.onNavigationClose.bind(this)));\n }\n onArrowKeyNavigate(index) {\n this.focusService.focus(index);\n }\n onNavigationEnterPress() {\n this.ngZone.run(() => {\n if (this.isOpen) {\n let focusedIndex = this.focusService.focused;\n const focusedItem = this.dialItems[focusedIndex];\n if (focusedItem && focusedItem.disabled) {\n return;\n }\n if (isPresent(focusedIndex) && focusedIndex !== -1) {\n this.onEnterPressed();\n return;\n }\n }\n if (!this.isOpen && isDocumentAvailable()) {\n this.toggleDialWithEvents(true);\n this.button.nativeElement.focus();\n }\n });\n }\n onNavigationClose() {\n if (this.isOpen) {\n this.ngZone.run(() => {\n this.toggleDialWithEvents(false);\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n });\n }\n }\n alignClass() {\n return `k-pos-${this.align.vertical}-${this.align.horizontal}`;\n }\n toggleDialWithEvents(open) {\n if (open === this.isOpen) {\n return;\n }\n const event = new PreventableEvent();\n if (open) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n if (open) {\n this.openDial();\n }\n else {\n this.closeDial();\n }\n }\n openPopup() {\n if (this.isOpen) {\n return;\n }\n const isIconFab = this.icon && !this.text;\n const rtl = this.rtl;\n const align = this.align;\n this.popupRef = this.popupService.open({\n anchor: this.element.nativeElement,\n animate: false,\n content: this.popupTemplate,\n anchorAlign: getAnchorAlign(align, rtl),\n popupAlign: getPopupAlign(align, rtl),\n popupClass: 'k-fab-popup k-popup-transparent'\n });\n const popupElement = this.popupRef.popupElement;\n this.renderer.setStyle(popupElement, 'box-shadow', 'none');\n if (isIconFab) {\n this.subscriptions.add(this.popupRef.popupOpen.subscribe(() => this.positionPopup()));\n }\n this.ngZone.runOutsideAngular(() => {\n this.popupMouseDownListener = this.renderer.listen(popupElement, 'mousedown', (event) => {\n event.preventDefault();\n });\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.toggleDialWithEvents(false));\n }\n closePopup() {\n if (this.isOpen) {\n if (this.popupMouseDownListener) {\n this.popupMouseDownListener();\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n openDial() {\n this.openPopup();\n this.focusService.focus(0);\n if (this.dialItemAnimation && this.isValidAnimation()) {\n this.playAnimation(true);\n }\n }\n closeDial() {\n if (this.dialItemAnimation && this.isValidAnimation()) {\n this.playAnimation(false);\n this.animationEnd.pipe(take(1)).subscribe(() => this.closePopup());\n }\n else {\n this.closePopup();\n }\n }\n isValidAnimation() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean') {\n return animation.duration !== 0;\n }\n return true;\n }\n positionPopup() {\n if (this.dialItemTemplate) {\n return;\n }\n const fab = this.element.nativeElement;\n const fabWidth = fab.getBoundingClientRect().width;\n const popupEl = this.popupRef.popupElement;\n const icon = popupEl.querySelector('.k-fab-item-icon');\n if (!icon) {\n return;\n }\n const iconWidth = icon.getBoundingClientRect().width;\n const left = (fabWidth / 2) - (iconWidth / 2);\n const popupLeft = popupEl.getBoundingClientRect().left;\n const isEndAlign = this.align.horizontal === 'end';\n const leftValue = isEndAlign ? (popupLeft - left) : (left + popupLeft);\n const rtlLeftValue = isEndAlign ? (left + popupLeft) : (popupLeft - left);\n popupEl.style.left = this.rtl ? `${rtlLeftValue}px` : `${leftValue}px`;\n }\n offsetStyles() {\n const hostElement = this.element.nativeElement;\n this.renderer.setStyle(hostElement, this.horizontalPosition, this.horizontalOffset);\n this.renderer.setStyle(hostElement, this.verticalPosition, this.verticalOffset);\n }\n get hasDialItems() {\n return isPresent(this.dialItems) && this.dialItems.length !== 0;\n }\n /**\n * Gets the CSS prop name of the selected vertical position (`top`/`bottom`);\n */\n get verticalPosition() {\n return {\n top: 'top',\n middle: 'top',\n bottom: 'bottom'\n }[this.align.vertical];\n }\n /**\n * Gets the offset according to the selected vertical position.\n */\n get verticalOffset() {\n if (this.align.vertical === 'middle') {\n return this.offset.y === DEFAULT_OFFSET ? '50%' : `calc(50% + ${this.offset.y})`;\n }\n return this.offset.y;\n }\n /**\n * Gets the CSS prop name of the selected horizontal position (`left`/`right`);\n */\n get horizontalPosition() {\n const { horizontal } = this.align;\n return {\n end: this.rtl ? 'left' : 'right',\n center: 'left',\n start: this.rtl ? 'right' : 'left'\n }[horizontal];\n }\n /**\n * Gets the offset according to the selected horizontal position.\n */\n get horizontalOffset() {\n if (this.align.horizontal === 'center') {\n return this.offset.x === DEFAULT_OFFSET ? '50%' : `calc(50% + ${this.offset.x})`;\n }\n return this.offset.x;\n }\n playerFor(element, animation) {\n const factory = this.builder.build(animation);\n return factory.create(element);\n }\n playAnimation(open) {\n const durationSettings = this.durationSettings();\n const animationSettings = {\n duration: durationSettings.duration,\n gap: durationSettings.gap,\n align: this.align\n };\n const animation = open ? openAnimation(animationSettings) : closeAnimation(animationSettings);\n let player = this.playerFor(this.popupRef.popupElement, animation);\n player.play();\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n }\n durationSettings() {\n return {\n duration: this.animationDuration(),\n gap: this.animationGap()\n };\n }\n animationGap() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean' && isPresent(animation.gap)) {\n return animation.gap;\n }\n return DEFAULT_ITEM_GAP;\n }\n animationDuration() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean' && isPresent(animation.duration)) {\n return animation.duration;\n }\n return DEFAULT_DURATION;\n }\n}\nFloatingActionButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: FocusService }, { token: NavigationService }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i4.AnimationBuilder }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFloatingActionButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingActionButtonComponent, selector: \"kendo-floatingactionbutton\", inputs: { themeColor: \"themeColor\", size: \"size\", rounded: \"rounded\", disabled: \"disabled\", align: \"align\", offset: \"offset\", positionMode: \"positionMode\", icon: \"icon\", iconClass: \"iconClass\", buttonClass: \"buttonClass\", dialClass: \"dialClass\", text: \"text\", dialItemAnimation: \"dialItemAnimation\", tabIndex: \"tabIndex\", dialItems: \"dialItems\" }, outputs: { onBlur: \"blur\", onFocus: \"focus\", dialItemClick: \"dialItemClick\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-pos-fixed\": \"this.fixedClass\", \"class.k-pos-absolute\": \"this.absoluteClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatingactionbutton'\n }\n ], queries: [{ propertyName: \"dialItemTemplate\", first: true, predicate: DialItemTemplateDirective, descendants: true }, { propertyName: \"fabTemplate\", first: true, predicate: FloatingActionButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n\n \n \n {{ text }}\n \n \n\n \n \n \n \n `, isInline: true, components: [{ type: DialListComponent, selector: \"[kendoDialList]\", inputs: [\"dialItems\", \"dialItemTemplate\", \"align\"] }], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-floatingactionbutton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatingactionbutton'\n }\n ],\n template: `\n \n \n \n\n \n \n {{ text }}\n \n \n\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FocusService }, { type: NavigationService }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i4.AnimationBuilder }, { type: i1.LocalizationService }]; }, propDecorators: { fixedClass: [{\n type: HostBinding,\n args: ['class.k-pos-fixed']\n }], absoluteClass: [{\n type: HostBinding,\n args: ['class.k-pos-absolute']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], dialItemTemplate: [{\n type: ContentChild,\n args: [DialItemTemplateDirective, { static: false }]\n }], fabTemplate: [{\n type: ContentChild,\n args: [FloatingActionButtonTemplateDirective, { static: false }]\n }], themeColor: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], disabled: [{\n type: Input\n }], align: [{\n type: Input\n }], offset: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], dialClass: [{\n type: Input\n }], text: [{\n type: Input\n }], dialItemAnimation: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], dialItems: [{\n type: Input\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], dialItemClick: [{\n type: Output,\n args: ['dialItemClick']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }] } });\n\nconst exportedModules = [\n FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective\n];\nconst declarations = [\n ...exportedModules,\n DialListComponent,\n DialItemComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the FloatingActionButton component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the FloatingActionButton module\n * import { FloatingActionButtonModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FloatingActionButtonModule], // import FloatingActionButton module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nclass FloatingActionButtonModule {\n}\nFloatingActionButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFloatingActionButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, declarations: [FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective, DialListComponent,\n DialItemComponent], imports: [CommonModule, PopupModule, ListModule, EventsModule], exports: [FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective] });\nFloatingActionButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, imports: [[CommonModule, PopupModule, ListModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule, PopupModule, ListModule, EventsModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the Buttons components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Buttons module\n * import { ButtonsModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ButtonsModule], // import Buttons module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ButtonsModule {\n}\nButtonsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] });\nButtonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, imports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ButtonDirective as Button, ButtonDirective, ButtonGroupComponent as ButtonGroup, ButtonGroupComponent, ButtonGroupModule, ButtonItemTemplateDirective, ButtonModule, ButtonsModule, ChipComponent, ChipListComponent, ChipModule, DialItemTemplateDirective, DropDownButtonComponent as DropDownButton, DropDownButtonComponent, DropDownButtonModule, FloatingActionButtonComponent, FloatingActionButtonModule, FloatingActionButtonTemplateDirective, FocusableDirective, ListComponent, ListModule, LocalizedSplitButtonMessagesDirective, PreventableEvent, SplitButtonComponent as SplitButton, SplitButtonComponent, SplitButtonCustomMessagesComponent, SplitButtonModule, TemplateContextDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, NgModule, Injectable, Component } from '@angular/core';\nimport Draggable from '@telerik/kendo-draggable';\nimport { CommonModule } from '@angular/common';\nimport { auditTime } from 'rxjs/operators';\nimport { merge, fromEvent, from } from 'rxjs';\n\n/**\n * @hidden\n */\nconst isDocumentAvailable = () => typeof document !== 'undefined';\n\n/**\n * @hidden\n */\nconst isChanged = (propertyName, changes, skipFirstChange = true) => (typeof changes[propertyName] !== 'undefined' &&\n (!changes[propertyName].isFirstChange() || !skipFirstChange) &&\n changes[propertyName].previousValue !== changes[propertyName].currentValue);\n\n/**\n * @hidden\n */\nconst anyChanged = (propertyNames, changes, skipFirstChange = true) => propertyNames.some(name => isChanged(name, changes, skipFirstChange));\n\n/**\n * @hidden\n */\nconst hasObservers = (emitter) => emitter && emitter.observers.length > 0;\n\n/**\n * @hidden\n */\nconst guid = () => {\n let id = \"\";\n for (let i = 0; i < 32; i++) {\n const random = Math.random() * 16 | 0; // eslint-disable-line no-bitwise\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n // eslint-disable-next-line no-bitwise\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n\nclass DraggableDirective {\n constructor(element, ngZone) {\n this.element = element;\n this.ngZone = ngZone;\n this.enableDrag = true;\n this.kendoPress = new EventEmitter();\n this.kendoDrag = new EventEmitter();\n this.kendoRelease = new EventEmitter();\n }\n ngOnInit() {\n this.toggleDraggable();\n }\n ngOnChanges(changes) {\n if (isChanged('enableDrag', changes)) {\n this.toggleDraggable();\n }\n }\n ngOnDestroy() {\n this.destroyDraggable();\n }\n toggleDraggable() {\n if (isDocumentAvailable()) {\n this.destroyDraggable();\n if (this.enableDrag) {\n this.draggable = new Draggable({\n drag: (e) => this.kendoDrag.next(e),\n press: (e) => this.kendoPress.next(e),\n release: (e) => this.kendoRelease.next(e)\n });\n this.ngZone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n }\n }\n destroyDraggable() {\n if (this.draggable) {\n this.draggable.destroy();\n this.draggable = null;\n }\n }\n}\nDraggableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDraggableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DraggableDirective, selector: \"[kendoDraggable]\", inputs: { enableDrag: \"enableDrag\" }, outputs: { kendoPress: \"kendoPress\", kendoDrag: \"kendoDrag\", kendoRelease: \"kendoRelease\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDraggable]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { enableDrag: [{\n type: Input\n }], kendoPress: [{\n type: Output\n }], kendoDrag: [{\n type: Output\n }], kendoRelease: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass DraggableModule {\n}\nDraggableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDraggableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, declarations: [DraggableDirective], imports: [CommonModule], exports: [DraggableDirective] });\nDraggableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DraggableDirective],\n exports: [DraggableDirective],\n imports: [CommonModule]\n }]\n }] });\n\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\nconst contains = (parent, node, matchSelf = false) => {\n const outside = !closest(node, (child) => child === parent);\n if (outside) {\n return false;\n }\n const el = closest(node, (child) => child === node);\n return el && (matchSelf || el !== parent);\n};\n\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst isFocusable = (element) => {\n if (!element.tagName) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n const hasTabIndex = Boolean(element.getAttribute('tabIndex'));\n const focusable = !element.disabled && focusableRegex.test(tagName);\n return focusable || hasTabIndex;\n};\n\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n\nconst isFocusableWithTabKey = (element, checkVisibility = true) => {\n if (!isFocusable(element)) {\n return false;\n }\n const tabIndex = element.getAttribute('tabIndex');\n const visible = !checkVisibility || isVisible(element);\n return visible && tabIndex !== '-1';\n};\n\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility));\n};\n\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n\nconst matchesClasses = (classNames) => (element) => hasClasses(element, classNames);\n\nconst NODE_NAME_PREDICATES = {};\nconst matchesNodeName = (nodeName) => {\n if (!NODE_NAME_PREDICATES[nodeName]) {\n NODE_NAME_PREDICATES[nodeName] = (element) => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();\n }\n return NODE_NAME_PREDICATES[nodeName];\n};\n\n/**\n * Normalizes a scroll position value in RTL mode.\n */\nfunction rtlScrollPosition(position, element, initial) {\n let result = position;\n if (initial < 0) {\n result = -position;\n }\n else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\n\n/**\n * @hidden\n */\nclass EventsOutsideAngularDirective {\n constructor(element, ngZone, renderer) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.events = {};\n }\n ngOnInit() {\n if (!this.element || !this.element.nativeElement) {\n return;\n }\n const events = this.events;\n this.subscriptions = [];\n this.ngZone.runOutsideAngular(() => {\n for (let name in events) {\n if (events.hasOwnProperty(name)) {\n this.subscriptions.push(this.renderer.listen(this.element.nativeElement, name, this.scope ? events[name].bind(this.scope) : events[name]));\n }\n }\n });\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n for (let idx = 0; idx < this.subscriptions.length; idx++) {\n this.subscriptions[idx]();\n }\n this.subscriptions = null;\n }\n }\n}\nEventsOutsideAngularDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsOutsideAngularDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nEventsOutsideAngularDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: { events: [\"kendoEventsOutsideAngular\", \"events\"], scope: \"scope\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsOutsideAngularDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoEventsOutsideAngular]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { events: [{\n type: Input,\n args: ['kendoEventsOutsideAngular']\n }], scope: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass EventsModule {\n}\nEventsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nEventsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, declarations: [EventsOutsideAngularDirective], exports: [EventsOutsideAngularDirective] });\nEventsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [EventsOutsideAngularDirective],\n exports: [EventsOutsideAngularDirective]\n }]\n }] });\n\nclass ResizeService {\n constructor(resizeBatchService) {\n this.resizeBatchService = resizeBatchService;\n this.resize = new EventEmitter();\n this.acceptedSize = false;\n this.state = 0 /* Initial */;\n }\n acceptSize(size = this.measure()) {\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n this.acceptedSize = true;\n }\n checkChanges() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.state === 0 /* Initial */) {\n this.state = 1 /* Initializing */;\n // batch initial measure\n this.resizeBatchService.schedule(this, this.init);\n }\n }\n destroy() {\n this.resizeBatchService.cancel(this);\n }\n checkSize() {\n if (!this.parentElement) {\n return;\n }\n const { width, height } = this.measure();\n const sameSize = width === this.lastWidth && height === this.lastHeight;\n if (sameSize) {\n return;\n }\n this.lastWidth = width;\n this.lastHeight = height;\n this.acceptedSize = false;\n this.resize.emit();\n return true;\n }\n initSize() {\n const size = this.measure();\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n }\n measure() {\n let width = 0;\n let height = 0;\n if (this.parentElement) {\n height = this.parentElement.offsetHeight;\n width = this.parentElement.offsetWidth;\n }\n return { height, width };\n }\n}\n\n// eslint-disable import/no-deprecated\nconst div = style => {\n const el = document.createElement('div');\n el.style.cssText = style;\n return el;\n};\nconst computedProp = (elem, prop) => getComputedStyle(elem, null).getPropertyValue(prop);\nconst WRAP_STYLE = 'position: absolute; display: block; left: 0; top: 0; right: 0; bottom: 0; z-index: -1;' +\n 'overflow: hidden; visibility: hidden;';\nconst EXPAND_CHILD_STYLE = 'position: absolute; left: 0; top: 0; transition: 0s;';\nconst SHRINK_CHILD_STYLE = EXPAND_CHILD_STYLE + 'width: 200%; height: 200%;';\nclass ResizeCompatService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n checkChanges() {\n if (this.state === 2 /* Initialized */) {\n if (!this.resizeBatchService.isScheduled(this)) {\n this.resizeBatchService.schedule(this, this.checkSize);\n }\n return;\n }\n super.checkChanges();\n }\n destroy() {\n super.destroy();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.expand) {\n const element = this.element.nativeElement;\n element.removeChild(this.expand);\n element.removeChild(this.shrink);\n this.expand.removeChild(this.expandChild);\n this.expand = this.expandChild = this.shrink = this.element = null;\n }\n }\n checkSize() {\n if (super.checkSize()) {\n this.reset();\n return true;\n }\n }\n init() {\n const parentElement = this.parentElement = this.element.nativeElement.parentElement;\n if (computedProp(parentElement, 'position') === 'static') {\n parentElement.style.position = 'relative';\n }\n this.state = 2 /* Initialized */;\n this.render();\n this.reset();\n this.initSize();\n this.subscribe();\n }\n render() {\n const element = this.element.nativeElement;\n element.style.cssText = WRAP_STYLE;\n element.setAttribute('dir', 'ltr');\n this.expand = div(WRAP_STYLE);\n this.expandChild = div(EXPAND_CHILD_STYLE);\n this.expand.appendChild(this.expandChild);\n element.appendChild(this.expand);\n this.shrink = div(WRAP_STYLE);\n const shrinkChild = div(SHRINK_CHILD_STYLE);\n this.shrink.appendChild(shrinkChild);\n element.appendChild(this.shrink);\n }\n reset() {\n const expandChild = this.expandChild;\n expandChild.style.width = 100000 + 'px';\n expandChild.style.height = 100000 + 'px';\n const expand = this.expand;\n expand.scrollLeft = 100000;\n expand.scrollTop = 100000;\n const shrink = this.shrink;\n shrink.scrollLeft = 100000;\n shrink.scrollTop = 100000;\n }\n subscribe() {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = merge(fromEvent(this.shrink, 'scroll'), fromEvent(this.expand, 'scroll'))\n .subscribe(() => {\n this.checkSize();\n });\n });\n }\n}\n\nconst HAS_OBSERVER = typeof ResizeObserver !== 'undefined';\n/**\n * @hidden\n */\nclass ResizeObserverService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n static supported() {\n return HAS_OBSERVER;\n }\n destroy() {\n super.destroy();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n this.parentElement = null;\n }\n init() {\n this.parentElement = this.element.nativeElement.parentElement;\n this.initSize();\n this.state = 2 /* Initialized */;\n this.ngZone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkSize();\n });\n this.resizeObserver.observe(this.parentElement);\n });\n }\n}\n\n/**\n * @hidden\n */\nclass ResizeBatchService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.scheduled = [];\n this.resolvedPromise = Promise.resolve(null);\n this.flush = this.flush.bind(this);\n }\n schedule(instance, method) {\n this.scheduled.push({ instance, method });\n if (!this.subscription) {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = from(this.resolvedPromise)\n .subscribe(this.flush);\n });\n }\n }\n isScheduled(instance) {\n return Boolean(this.scheduled.find(item => item.instance === instance));\n }\n cancel(instance) {\n const scheduled = this.scheduled;\n const count = scheduled.length;\n for (let idx = 0; idx < count; idx++) {\n if (scheduled[idx].instance === instance) {\n scheduled.splice(idx, 1);\n if (!scheduled.length) {\n this.unsubscribe();\n }\n return;\n }\n }\n }\n ngOnDestroy() {\n this.unsubscribe();\n }\n unsubscribe() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n }\n flush() {\n this.scheduled.forEach(item => {\n item.method.call(item.instance);\n });\n this.scheduled = [];\n this.unsubscribe();\n }\n}\nResizeBatchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nResizeBatchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Emit up to 10 resize events per second by default.\n * Chosen as a compromise between responsiveness and performance.\n */\nconst DEFAULT_RATE_LIMIT = 10;\n/**\n * Resize Sensor Component\n *\n * Triggers a \"resize\" event whenever the parent DOM element size changes.\n */\nclass ResizeSensorComponent {\n constructor(resizeBatchService, element, ngZone) {\n /**\n * The maximum number of resize events to emit per second.\n *\n * Defaults to 10.\n */\n this.rateLimit = DEFAULT_RATE_LIMIT;\n /**\n * Fires when the parent DOM element has been resized.\n */\n this.resize = new EventEmitter();\n const serviceType = ResizeObserverService.supported() ? ResizeObserverService : ResizeCompatService;\n this.resizeService = new serviceType(resizeBatchService, element, ngZone);\n const throttleTime = 1000 / (this.rateLimit || DEFAULT_RATE_LIMIT);\n this.subscription = this.resizeService.resize\n .pipe(auditTime(throttleTime))\n .subscribe(() => {\n if (!this.resizeService.acceptedSize) {\n this.resize.emit();\n }\n });\n }\n ngAfterViewChecked() {\n this.resizeService.checkChanges();\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.resizeService.destroy();\n }\n acceptSize(size) {\n this.resizeService.acceptSize(size);\n }\n}\nResizeSensorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorComponent, deps: [{ token: ResizeBatchService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nResizeSensorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: { rateLimit: \"rateLimit\" }, outputs: { resize: \"resize\" }, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-resize-sensor',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ResizeBatchService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rateLimit: [{\n type: Input\n }], resize: [{\n type: Output\n }] } });\n\nconst COMPONENT_DIRECTIVES = [ResizeSensorComponent];\n/**\n * Resize Sensor module\n */\nclass ResizeSensorModule {\n}\nResizeSensorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nResizeSensorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, declarations: [ResizeSensorComponent], exports: [ResizeSensorComponent] });\nResizeSensorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, providers: [ResizeBatchService] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n providers: [ResizeBatchService]\n }]\n }] });\n\nclass KendoInput {\n}\n\n/**\n * Enum with key codes.\n */\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"Alt\"] = 18] = \"Alt\";\n Keys[Keys[\"ArrowDown\"] = 40] = \"ArrowDown\";\n Keys[Keys[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Keys[Keys[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Keys[Keys[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Keys[Keys[\"Backspace\"] = 8] = \"Backspace\";\n Keys[Keys[\"Control\"] = 17] = \"Control\";\n Keys[Keys[\"Delete\"] = 46] = \"Delete\";\n Keys[Keys[\"Digit0\"] = 48] = \"Digit0\";\n Keys[Keys[\"Digit1\"] = 49] = \"Digit1\";\n Keys[Keys[\"Digit2\"] = 50] = \"Digit2\";\n Keys[Keys[\"Digit3\"] = 51] = \"Digit3\";\n Keys[Keys[\"Digit4\"] = 52] = \"Digit4\";\n Keys[Keys[\"Digit5\"] = 53] = \"Digit5\";\n Keys[Keys[\"Digit6\"] = 54] = \"Digit6\";\n Keys[Keys[\"Digit7\"] = 55] = \"Digit7\";\n Keys[Keys[\"Digit8\"] = 56] = \"Digit8\";\n Keys[Keys[\"Digit9\"] = 57] = \"Digit9\";\n Keys[Keys[\"End\"] = 35] = \"End\";\n Keys[Keys[\"Enter\"] = 13] = \"Enter\";\n Keys[Keys[\"Escape\"] = 27] = \"Escape\";\n Keys[Keys[\"F1\"] = 112] = \"F1\";\n Keys[Keys[\"F2\"] = 113] = \"F2\";\n Keys[Keys[\"F10\"] = 121] = \"F10\";\n Keys[Keys[\"Home\"] = 36] = \"Home\";\n Keys[Keys[\"Insert\"] = 45] = \"Insert\";\n Keys[Keys[\"KeyA\"] = 65] = \"KeyA\";\n Keys[Keys[\"KeyB\"] = 66] = \"KeyB\";\n Keys[Keys[\"KeyC\"] = 67] = \"KeyC\";\n Keys[Keys[\"KeyD\"] = 68] = \"KeyD\";\n Keys[Keys[\"KeyE\"] = 69] = \"KeyE\";\n Keys[Keys[\"KeyF\"] = 70] = \"KeyF\";\n Keys[Keys[\"KeyG\"] = 71] = \"KeyG\";\n Keys[Keys[\"KeyH\"] = 72] = \"KeyH\";\n Keys[Keys[\"KeyI\"] = 73] = \"KeyI\";\n Keys[Keys[\"KeyJ\"] = 74] = \"KeyJ\";\n Keys[Keys[\"KeyK\"] = 75] = \"KeyK\";\n Keys[Keys[\"KeyL\"] = 76] = \"KeyL\";\n Keys[Keys[\"KeyM\"] = 77] = \"KeyM\";\n Keys[Keys[\"KeyN\"] = 78] = \"KeyN\";\n Keys[Keys[\"KeyO\"] = 79] = \"KeyO\";\n Keys[Keys[\"KeyP\"] = 80] = \"KeyP\";\n Keys[Keys[\"KeyQ\"] = 81] = \"KeyQ\";\n Keys[Keys[\"KeyR\"] = 82] = \"KeyR\";\n Keys[Keys[\"KeyS\"] = 83] = \"KeyS\";\n Keys[Keys[\"KeyT\"] = 84] = \"KeyT\";\n Keys[Keys[\"KeyU\"] = 85] = \"KeyU\";\n Keys[Keys[\"KeyV\"] = 86] = \"KeyV\";\n Keys[Keys[\"KeyW\"] = 87] = \"KeyW\";\n Keys[Keys[\"KeyX\"] = 88] = \"KeyX\";\n Keys[Keys[\"KeyY\"] = 89] = \"KeyY\";\n Keys[Keys[\"KeyZ\"] = 90] = \"KeyZ\";\n Keys[Keys[\"NumpadDecimal\"] = 110] = \"NumpadDecimal\";\n Keys[Keys[\"PageDown\"] = 34] = \"PageDown\";\n Keys[Keys[\"PageUp\"] = 33] = \"PageUp\";\n Keys[Keys[\"Shift\"] = 16] = \"Shift\";\n Keys[Keys[\"Space\"] = 32] = \"Space\";\n Keys[Keys[\"Tab\"] = 9] = \"Tab\";\n})(Keys || (Keys = {}));\n\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\nconst canCreateElement = () => isDocumentAvailable() && document.createElement;\nconst propName = '--kendo-scrollbar-width';\nfunction scrollbarWidth() {\n let scrollbarWidth = 0;\n if (canCreateElement()) {\n const div = document.createElement('div');\n div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n scrollbarWidth = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return scrollbarWidth;\n}\n/**\n * @hidden\n */\nclass ScrollbarWidthService {\n constructor() {\n this.changes = new EventEmitter();\n if (typeof window !== 'undefined' && isDocumentAvailable()) {\n document.body.style.setProperty(propName, `${scrollbarWidth()}px`);\n }\n }\n}\nScrollbarWidthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollbarWidthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nScrollbarWidthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollbarWidthService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollbarWidthService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DraggableDirective, DraggableModule, EventsModule, EventsOutsideAngularDirective, KendoInput, Keys, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ResizeSensorModule, ScrollbarWidthService, anyChanged, closest, closestInScope, contains, findElement, findFocusable, findFocusableChild, guid, hasClasses, hasObservers, isChanged, isDocumentAvailable, isFocusable, isFocusableWithTabKey, isVisible, matchesClasses, matchesNodeName, rtlScrollPosition };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, isDevMode, Directive, Input, Component, Output, ChangeDetectionStrategy, HostBinding, forwardRef, ElementRef, ContentChild, ViewChild, HostListener, InjectionToken, Inject, NgZone, Optional, ViewContainerRef, ViewChildren, TemplateRef, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';\nimport * as i1$1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';\nimport { cloneDate, addDays, getDate, isEqual, addDecades, addCenturies, firstDecadeOfCentury, lastDecadeOfCentury, firstYearOfDecade, createDate, lastYearOfDecade, lastMonthOfYear, lastDayOfMonth, durationInCenturies, addYears, durationInDecades, addWeeks, addMonths, firstDayOfMonth, dayOfWeek, durationInMonths, firstMonthOfYear, durationInYears, weekInYear } from '@progress/kendo-date-math';\nimport * as i5 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, guid, Keys, hasObservers, KendoInput, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1 from '@progress/kendo-angular-intl';\nimport { IntlModule } from '@progress/kendo-angular-intl';\nimport { Subject, Subscription, ReplaySubject, Observable, combineLatest, of, interval, animationFrameScheduler, fromEvent, EMPTY, from, BehaviorSubject, merge } from 'rxjs';\nimport * as i7 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { map, scan, takeWhile, debounceTime, tap, filter } from 'rxjs/operators';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { touchEnabled } from '@progress/kendo-common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dateinputs',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652250169,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nvar Action;\n(function (Action) {\n Action[Action[\"Left\"] = 0] = \"Left\";\n Action[Action[\"Right\"] = 1] = \"Right\";\n Action[Action[\"Up\"] = 2] = \"Up\";\n Action[Action[\"Down\"] = 3] = \"Down\";\n Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n Action[Action[\"NextView\"] = 5] = \"NextView\";\n Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n\n/**\n * @hidden\n *\n * The Enum which defines all possible Calendar view types.\n */\nvar CalendarViewEnum;\n(function (CalendarViewEnum) {\n CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n\n/**\n * @hidden\n */\nconst MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nconst MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nconst MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nconst MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nconst MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n\n/**\n * @hidden\n */\nconst EMPTY_SELECTIONRANGE = { start: null, end: null };\n\n/**\n * @hidden\n */\nconst requiresZoneOnBlur = (ngControl) => ngControl &&\n (!ngControl.touched || (ngControl.control && ngControl.control.updateOn === 'blur'));\n/**\n * @hidden\n */\nconst preventDefault = (args) => args.preventDefault();\n/**\n * @hidden\n */\nconst currentFocusTarget = (blurArgs) => blurArgs.relatedTarget || document.activeElement;\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== undefined && value !== null;\n/**\n * @hidden\n *\n * If the provided parameter is an array with at least one item\n * and all items in the array are numbers, returns `true.\n */\nconst isNumberArray = (value) => Array.isArray(value) && value.length > 0 && value.every(item => typeof item === 'number');\n/**\n * @hidden\n *\n * If the provided parameter is an array with at least one item\n * and all items in the array are dates, returns `true`.\n */\nconst isDateArray = (value) => Array.isArray(value) && value.length > 0 && value.every(item => item instanceof Date);\n\nconst isSet = (value) => value !== null && value !== undefined;\nconst setter = (method) => (date, value) => {\n const clone = cloneDate(date);\n clone[method](value);\n return clone;\n};\n/**\n * @hidden\n */\nconst setTime = (origin, candidate) => {\n const date = cloneDate(origin);\n date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n return date;\n};\nconst normalizeTimes = (candidate, min, max) => ({\n candidateValue: setTime(MIDNIGHT_DATE, candidate),\n maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ||\n (min.getHours() === max.getHours() && min.getMinutes() < max.getMinutes()) ? 0 : 1),\n minValue: setTime(MIDNIGHT_DATE, min)\n});\n/**\n * @hidden\n */\nconst setYears = setter('setFullYear');\n/**\n * @hidden\n */\nconst setHours$1 = setter('setHours');\n/**\n * @hidden\n */\nconst setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nconst setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nconst setMilliseconds = setter('setMilliseconds');\n/**\n * @hidden\n */\nconst range = (start, end, step = 1) => {\n const result = [];\n for (let i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\n/**\n * @hidden\n */\nconst isInRange = (candidate, min, max) => (!candidate || !((min && min > candidate) || (max && max < candidate)));\n/**\n * @hidden\n */\nconst isInTimeRange = (candidate, min, max) => {\n if (!candidate || !min || !max) {\n return true;\n }\n const { candidateValue, minValue, maxValue } = normalizeTimes(candidate, min, max);\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nconst isValidRange = (min, max) => (!isSet(min) || !isSet(max) || min <= max);\n/**\n * @hidden\n */\nconst dateInRange = (candidate, min, max) => {\n if (!candidate) {\n return candidate;\n }\n if (min && candidate < min) {\n return cloneDate(min);\n }\n if (max && candidate > max) {\n return cloneDate(max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nconst timeInRange = (candidate, min, max) => {\n if (!candidate || !min || !max) {\n return candidate;\n }\n const { candidateValue, minValue, maxValue } = normalizeTimes(candidate, min, max);\n if (candidateValue < minValue) {\n return setTime(candidate, min);\n }\n if (candidateValue > maxValue) {\n return setTime(candidate, max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nconst getNow = () => new Date();\n/**\n * @hidden\n */\nconst getToday = () => getDate(new Date());\n/**\n * @hidden\n */\nconst noop$2 = (_) => { }; // eslint-disable-line no-empty\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst stringifyClassObject = (classes) => {\n const pushToAcc = (acc, cls) => classes[cls] ? acc.concat(cls) : acc;\n return Object.keys(classes).reduce(pushToAcc, []).join(' ');\n};\n/**\n * @hidden\n */\nconst shiftWeekNames = (names, offset) => (names.slice(offset).concat(names.slice(0, offset)));\n/**\n * @hidden\n */\nconst approximateStringMatching = (oldTextOrigin, oldFormat, newTextOrigin, caret) => {\n // Remove the right part of the cursor.\n //oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n const oldIndex = caret + oldTextOrigin.length - newTextOrigin.length;\n const oldTextSeparator = oldTextOrigin[oldIndex];\n const oldText = oldTextOrigin.substring(0, caret + oldTextOrigin.length - newTextOrigin.length);\n const newText = newTextOrigin.substring(0, caret);\n const diff = [];\n // Handle typing a single character over the same selection.\n if (oldText === newText && caret > 0) {\n diff.push([oldFormat[caret - 1], newText[caret - 1]]);\n return diff;\n }\n if (oldText.indexOf(newText) === 0 && (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n // Handle Delete/Backspace.\n let deletedSymbol = \"\";\n //XXX:\n // Whole text is replaced with a same char\n // Nasty patch required to keep the selection in the first segment\n if (newText.length === 1) {\n diff.push([oldFormat[0], newText[0]]);\n }\n for (let i = newText.length; i < oldText.length; i++) {\n if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== \"_\") {\n deletedSymbol = oldFormat[i];\n diff.push([deletedSymbol, \"\"]);\n }\n }\n return diff;\n }\n // Handle inserting text (the new text is longer than the previous one).\n // Handle typing over a literal as well.\n if (newText.indexOf(oldText) === 0 || oldFormat[caret - 1] === \"_\") {\n let symbol = oldFormat[0];\n for (let i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n if (oldFormat[i] !== \"_\") {\n symbol = oldFormat[i];\n break;\n }\n }\n return [[symbol, newText[caret - 1]]];\n }\n // Handle entering a space or a separator, for navigation to the next item.\n if (newText[newText.length - 1] === \" \" || (newText[newText.length - 1] === oldTextSeparator && oldFormat[oldIndex] === '_')) {\n return [[oldFormat[caret - 1], \"_\"]];\n }\n // Handle typing over a correctly selected part.\n return [[oldFormat[caret - 1], newText[caret - 1]]];\n};\n/**\n * @hidden\n */\nconst domContainerFactory = (type) => (children, classes = \"\", styles = {}) => {\n const container = document.createElement(type);\n container.className = classes;\n Object.keys(styles).map(key => container.style[key] = styles[key]);\n if (typeof children === 'string') {\n container.innerHTML = children || '';\n }\n else {\n (children || []).forEach(child => child && container.appendChild(child));\n }\n return container;\n};\n/**\n * @hidden\n */\nconst hasChange = (changes, field) => changes[field] !== undefined;\n/**\n * @hidden\n */\nconst hasExistingValue = (changes, field) => changes[field] && changes[field].currentValue !== undefined && changes[field].currentValue !== null;\n/**\n * @hidden\n */\nconst last = (list = []) => list && list[list.length - 1];\n/**\n * @hidden\n */\nconst isInSelectionRange = (value, selectionRange) => {\n const { start, end } = selectionRange || EMPTY_SELECTIONRANGE;\n if (!start || !end) {\n return false;\n }\n return start < value && value < end;\n};\n/**\n * @hidden\n */\nconst either = (value1, value2) => value1 || value2;\n/**\n * @hidden\n */\nconst clampRange = (value) => ({ start: value, end: value });\n/**\n * @hidden\n */\nconst isEqualRange = (initial, updated) => {\n const { start: initialStart, end: initialEnd } = initial || EMPTY_SELECTIONRANGE;\n const { start: updatedStart, end: updatedEnd } = updated || EMPTY_SELECTIONRANGE;\n return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n/**\n * @hidden\n */\nconst areDatesEqual = (first, second) => {\n first = first || [];\n second = second || [];\n return first.length === second.length && first.every((date, index) => isEqual(date, second[index]));\n};\n/**\n * @hidden\n */\nconst sortDates = (dates) => {\n return dates.filter(date => isPresent(date)).sort((a, b) => a.getTime() - b.getTime());\n};\n/**\n * @hidden\n *\n * Creates a new date based on the date information from the specified date portion\n * and the time information from the time portion.\n * If a parameter is not provided, returns `null`.\n */\nconst mergeDateAndTime = (date, time) => {\n if (!(date && time)) {\n return null;\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n};\n/**\n * @hidden\n */\nconst lastMillisecondOfDate = (date) => {\n if (!date) {\n return null;\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\n};\n/**\n * @hidden\n *\n * Returns an array with dates ranging between and including the specified start and\n * end dates that are evaluated as disabled.\n */\nconst disabledDatesInRange = (start, end, isDateDisabled) => {\n if (!(start && end && isDateDisabled) || (start > end)) {\n return [];\n }\n const dates = [];\n let current = start;\n while (current <= end) {\n if (isDateDisabled(current)) {\n dates.push(current);\n }\n current = addDays(current, 1);\n }\n return dates;\n};\n/**\n * @hidden\n *\n * Crops the last two digits from the year of the provided date value.\n */\nconst cropTwoDigitYear = (date) => {\n if (!isPresent(date) || isNaN(date.getTime())) {\n return 0;\n }\n return Number(date\n .getFullYear()\n .toString()\n .slice(-2));\n};\n/**\n * @hidden\n *\n * Used when resetting millisecond segment value in the DateInput\n */\nconst msPaddingFromFormat = (format) => {\n return Array(format.match(/S+(\\1)/)[0].length).join(\"0\");\n};\n/**\n * @hidden\n */\nconst millisecondDigitsInFormat = (format) => {\n const result = format && format.match(/S+(\\1)/);\n return result ? result[0].length : 0;\n};\n/**\n * @hidden\n */\nconst millisecondStepFor = (digits) => {\n return Math.pow(10, 3 - digits);\n};\n/**\n * @hidden\n *\n * Checks if a tab keydown would would move the focus outside of the calendar.\n */\nconst isTabExitingCalendar = (calendarType, focusedElement, shiftKey) => {\n if (!isPresent(focusedElement)) {\n return false;\n }\n return calendarType === 'infinite' || ( // infinte calendar is always exited on first tab keydown\n calendarType === 'classic' &&\n (shiftKey && focusedElement.classList.contains('k-calendar')) || // exited on main calendar element focused and back-tab\n (!shiftKey && focusedElement.classList.contains('k-next-view')) // exited on next button focused and regular tab\n );\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n/**\n * @hidden\n * Returns the rounded class based on the rounded input.\n */\nconst getRoundedClass = (rounded) => {\n const ROUNDED_CLASSES = {\n 'small': 'k-rounded-sm',\n 'medium': 'k-rounded-md',\n 'large': 'k-rounded-lg',\n 'full': 'k-rounded-full'\n };\n return ROUNDED_CLASSES[rounded];\n};\n/**\n * @hidden\n * Return the fillMode class based on the component and fillMode input.\n */\nconst getFillModeClass = (component, fillMode) => {\n const FILLMODE_CLASSES = {\n 'solid': `k-${component}-solid`,\n 'flat': `k-${component}-flat`,\n 'outline': `k-${component}-outline`\n };\n return FILLMODE_CLASSES[fillMode];\n};\n/**\n * @hidden\n */\nconst DEFAULT_ROUNDED = 'medium';\n/**\n * @hidden\n */\nconst DEFAULT_SIZE = 'medium';\n/**\n * @hidden\n */\nconst DEFAULT_FILL_MODE = 'solid';\n\nconst EMPTY_DATA$3 = [[]];\nconst CELLS_LENGTH$3 = 4;\nconst ROWS_LENGTH$3 = 3;\nconst ACTIONS$3 = {\n [Action.Left]: (date) => addDecades(date, -1),\n [Action.Up]: (date) => addDecades(date, -5),\n [Action.Right]: (date) => addDecades(date, 1),\n [Action.Down]: (date) => addDecades(date, 5),\n [Action.PrevView]: (date) => addCenturies(date, -1),\n [Action.NextView]: (date) => addCenturies(date, 1),\n [Action.FirstInView]: (date) => firstDecadeOfCentury(date),\n [Action.LastInView]: (date) => lastDecadeOfCentury(date)\n};\n/**\n * @hidden\n */\nclass CenturyViewService {\n constructor() {\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addDecades(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addCenturies(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addCenturies(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA$3;\n }\n const cells = range(0, CELLS_LENGTH$3);\n const firstDate = firstDecadeOfCentury(viewDate);\n const lastDate = lastDecadeOfCentury(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH$3).map(rowOffset => {\n const baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH$3);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addDecades(baseDate, cellOffset), min, max);\n const nextCentury = cellDate.getFullYear() > lastDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || nextCentury) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n }\n isInRange(candidate, min, max) {\n const year = firstYearOfDecade(candidate).getFullYear();\n const aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n const belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n const firstYear = firstYearOfDecade(firstDecadeOfCentury(date));\n return createDate(firstYear.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const decade = lastDecadeOfCentury(date);\n const year = lastYearOfDecade(decade);\n const month = lastMonthOfYear(year);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 1000 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS$3[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return firstYearOfDecade(value).getFullYear().toString();\n }\n navigationTitle(value) {\n return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n }\n title(value) {\n if (!value) {\n return '';\n }\n return `${firstDecadeOfCentury(value).getFullYear()} - ${lastDecadeOfCentury(value).getFullYear()}`;\n }\n rowLength() {\n return CELLS_LENGTH$3;\n }\n skip(value, min) {\n return durationInCenturies(min, value);\n }\n total(min, max) {\n return durationInCenturies(min, max) + 1;\n }\n value(current) {\n return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const centuriesToSubtract = viewsCount - viewsInRange;\n return addCenturies(date, -1 * centuriesToSubtract);\n }\n return date;\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nCenturyViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCenturyViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService, decorators: [{\n type: Injectable\n }] });\n\nconst EMPTY_DATA$2 = [[]];\nconst CELLS_LENGTH$2 = 4;\nconst ROWS_LENGTH$2 = 3;\nconst ACTIONS$2 = {\n [Action.Left]: (date) => addYears(date, -1),\n [Action.Up]: (date) => addYears(date, -5),\n [Action.Right]: (date) => addYears(date, 1),\n [Action.Down]: (date) => addYears(date, 5),\n [Action.PrevView]: (date) => addDecades(date, -1),\n [Action.NextView]: (date) => addDecades(date, 1),\n [Action.FirstInView]: (date) => firstYearOfDecade(date),\n [Action.LastInView]: (date) => lastYearOfDecade(date)\n};\n/**\n * @hidden\n */\nclass DecadeViewService {\n constructor() {\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addYears(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addDecades(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addDecades(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA$2;\n }\n const cells = range(0, CELLS_LENGTH$2);\n const firstDate = firstYearOfDecade(viewDate);\n const lastDate = lastYearOfDecade(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH$2).map(rowOffset => {\n const baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH$2);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addYears(baseDate, cellOffset), min, max);\n const nextDecade = cellDate.getFullYear() > lastDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || nextDecade) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n }\n isInRange(candidate, min, max) {\n const year = candidate.getFullYear();\n const aboveMin = !min || min.getFullYear() <= year;\n const belowMax = !max || year <= max.getFullYear();\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n const firstYear = firstYearOfDecade(date);\n return createDate(firstYear.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const year = lastYearOfDecade(date);\n const month = lastMonthOfYear(year);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 100 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS$2[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return value.getFullYear().toString();\n }\n navigationTitle(value) {\n return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n }\n title(value) {\n if (!value) {\n return '';\n }\n return `${firstYearOfDecade(value).getFullYear()} - ${lastYearOfDecade(value).getFullYear()}`;\n }\n rowLength() {\n return CELLS_LENGTH$2;\n }\n skip(value, min) {\n return durationInDecades(min, value);\n }\n total(min, max) {\n return durationInDecades(min, max) + 1;\n }\n value(current) {\n return current ? current.getFullYear().toString() : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const decadesToSubtract = viewsCount - viewsInRange;\n return addDecades(date, -1 * decadesToSubtract);\n }\n return date;\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nDecadeViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDecadeViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService, decorators: [{\n type: Injectable\n }] });\n\nconst EMPTY_DATA$1 = [[]];\nconst CELLS_LENGTH$1 = 7;\nconst ROWS_LENGTH$1 = 6;\nconst ACTIONS$1 = {\n [Action.Left]: (date) => addDays(date, -1),\n [Action.Up]: (date) => addWeeks(date, -1),\n [Action.Right]: (date) => addDays(date, 1),\n [Action.Down]: (date) => addWeeks(date, 1),\n [Action.PrevView]: (date) => addMonths(date, -1),\n [Action.NextView]: (date) => addMonths(date, 1),\n [Action.FirstInView]: (date) => firstDayOfMonth(date),\n [Action.LastInView]: (date) => lastDayOfMonth(date)\n};\n/**\n * @hidden\n */\nclass MonthViewService {\n constructor(_intlService) {\n this._intlService = _intlService;\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addDays(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addMonths(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addMonths(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate, isDateDisabled = () => false } = options;\n if (!viewDate) {\n return EMPTY_DATA$1;\n }\n const firstMonthDate = firstDayOfMonth(viewDate);\n const firstMonthDay = getDate(firstMonthDate);\n const lastMonthDate = lastDayOfMonth(viewDate);\n const lastMonthDay = getDate(lastMonthDate);\n const backward = -1;\n const date = dayOfWeek(firstMonthDate, this._intlService.firstDay(), backward);\n const cells = range(0, CELLS_LENGTH$1);\n const today = getToday();\n return range(0, ROWS_LENGTH$1).map(rowOffset => {\n const baseDate = addDays(date, rowOffset * CELLS_LENGTH$1);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addDays(baseDate, cellOffset), min, max);\n const cellDay = getDate(cellDate);\n const otherMonth = cellDay < firstMonthDay || cellDay > lastMonthDay;\n const outOfRange = cellDate < min || cellDate > max;\n if (outOfRange) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: this.isWeekend(cellDate),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstMonthDate),\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastMonthDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate,\n isDisabled: isDateDisabled(cellDate),\n isOtherMonth: otherMonth\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return getDate(candidate).getTime() === getDate(expected).getTime();\n }\n isInArray(date, dates) {\n if (dates.length === 0) {\n return false;\n }\n const lowerBound = this.beginningOfPeriod(dates[0]);\n const upperBound = this.beginningOfPeriod(addMonths(dates[dates.length - 1], 1));\n return lowerBound <= date && date < upperBound;\n }\n isInRange(candidate, min, max) {\n const value = getDate(candidate);\n const aboveMin = !min || getDate(min) <= value;\n const belowMax = !max || value <= getDate(max);\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n return createDate(date.getFullYear(), date.getMonth(), 1);\n }\n lastDayOfPeriod(date) {\n return lastDayOfMonth(date);\n }\n isRangeStart(value) {\n return !value.getMonth();\n }\n move(value, action) {\n const modifier = ACTIONS$1[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return this._intlService.formatDate(value, 'D');\n }\n navigationTitle(value) {\n if (!value) {\n return '';\n }\n return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n }\n title(current) {\n return `${this.wideMonthNames()[current.getMonth()]} ${current.getFullYear()}`;\n }\n rowLength(options = {}) {\n return CELLS_LENGTH$1 + (options.prependCell ? 1 : 0);\n }\n skip(value, min) {\n return durationInMonths(min, value);\n }\n total(min, max) {\n return durationInMonths(min, max) + 1;\n }\n value(current) {\n return current ? current.getDate().toString() : \"\";\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const monthsToSubtract = viewsCount - viewsInRange;\n return addMonths(date, -1 * monthsToSubtract);\n }\n return date;\n }\n isWeekend(date) {\n const { start, end } = this._intlService.weekendRange();\n const day = date.getDay();\n if (end < start) {\n return day <= end || start <= day;\n }\n return start <= day && day <= end;\n }\n abbrMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n wideMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'wide', type: 'months' });\n }\n}\nMonthViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMonthViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst EMPTY_DATA = [[]];\nconst CELLS_LENGTH = 4;\nconst ROWS_LENGTH = 3;\nconst upStep = (month) => {\n if (month > 4) {\n return -5;\n }\n if (month < 2) {\n return -2;\n }\n return -7;\n};\nconst downStep = (month) => {\n if (month < 7) {\n return 5;\n }\n if (month < 10) {\n return 7;\n }\n return 2;\n};\nconst ACTIONS = {\n [Action.Left]: (date) => addMonths(date, -1),\n [Action.Up]: (date) => addMonths(date, upStep(date.getMonth())),\n [Action.Right]: (date) => addMonths(date, 1),\n [Action.Down]: (date) => addMonths(date, downStep(date.getMonth())),\n [Action.PrevView]: (date) => addYears(date, -1),\n [Action.NextView]: (date) => addYears(date, 1),\n [Action.FirstInView]: (date) => firstMonthOfYear(date),\n [Action.LastInView]: (date) => lastMonthOfYear(date)\n};\n/**\n * @hidden\n */\nclass YearViewService {\n constructor(_intlService) {\n this._intlService = _intlService;\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addMonths(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addYears(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addYears(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n const months = this.abbrMonthNames();\n const firstDate = firstMonthOfYear(viewDate);\n const lastDate = lastMonthOfYear(viewDate);\n const currentYear = firstDate.getFullYear();\n const cells = range(0, CELLS_LENGTH);\n const today = getToday();\n return range(0, ROWS_LENGTH).map(rowOffset => {\n const baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addMonths(baseDate, cellOffset), min, max);\n const changedYear = currentYear < cellDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || changedYear) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: months[cellDate.getMonth()],\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear() &&\n candidate.getMonth() === expected.getMonth();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n }\n isInRange(candidate, min, max) {\n const candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n const aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n const belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n return createDate(date.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const month = lastMonthOfYear(date);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 10 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return `${value.getFullYear()} ${this.value(value)}`;\n }\n navigationTitle(value) {\n return this.title(value);\n }\n title(current) {\n return current ? current.getFullYear().toString() : '';\n }\n rowLength() {\n return CELLS_LENGTH;\n }\n skip(value, min) {\n return durationInYears(min, value);\n }\n total(min, max) {\n return durationInYears(min, max) + 1;\n }\n value(current) {\n return current ? this.abbrMonthNames()[current.getMonth()] : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const yearsToSubtract = viewsCount - viewsInRange;\n return addYears(date, -1 * yearsToSubtract);\n }\n return date;\n }\n abbrMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nYearViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nYearViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst services$1 = {\n [CalendarViewEnum.month]: MonthViewService,\n [CalendarViewEnum.year]: YearViewService,\n [CalendarViewEnum.decade]: DecadeViewService,\n [CalendarViewEnum.century]: CenturyViewService\n};\nconst viewOffset = (view, offset) => {\n const candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nclass BusViewService {\n constructor(injector) {\n this.injector = injector;\n this.viewChanged = new EventEmitter();\n this.bottom = CalendarViewEnum.month;\n this.top = CalendarViewEnum.century;\n }\n configure(bottom, top) {\n this.bottom = bottom;\n this.top = top;\n }\n service(view) {\n const serviceType = services$1[view];\n return serviceType ? this.injector.get(serviceType) : null;\n }\n moveDown(view) {\n this.move(view, -1);\n }\n moveUp(view) {\n this.move(view, 1);\n }\n moveToBottom(activeView) {\n if (activeView === this.bottom) {\n return;\n }\n this.viewChanged.emit({ view: this.bottom });\n }\n canMoveDown(view) {\n return this.bottom < view;\n }\n canMoveUp(view) {\n return view < this.top;\n }\n clamp(view) {\n if (view < this.bottom) {\n return this.bottom;\n }\n if (view > this.top) {\n return this.top;\n }\n return view;\n }\n move(view, offset) {\n const candidate = this.clamp(viewOffset(view, offset));\n if (candidate === view) {\n return;\n }\n this.viewChanged.emit({ view: candidate });\n }\n}\nBusViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\nBusViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.Injector }]; } });\n\n/**\n * @hidden\n */\nclass WeekNamesService {\n constructor(intl) {\n this.intl = intl;\n }\n getWeekNames(includeWeekNumber = false) {\n const weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n }\n}\nWeekNamesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nWeekNamesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\nconst noop$1 = () => false;\nconst DISABLED_DATES_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/disabled-dates/';\n/**\n * @hidden\n */\nclass DisabledDatesService {\n constructor() {\n /**\n * Emits every time the `isDateDisabled` method changes.\n */\n this.changes = new Subject();\n /**\n * Based on the user-defined `disabledDates` input evaluates if the date is disabled.\n * If not set, returns `false`.\n */\n this.isDateDisabled = noop$1;\n }\n /**\n * Configures the `isDateDisabled` function.\n *\n * * If a function is provided, uses it as-is and passes each date to it for evaluation.\n * The time part is set to `midnight`.\n * * If a `Date[]` is provided, creates a function that checks the targeted date against\n * the listed dates and, if the targeted date is listed, marks it as disabled.\n * * If a `Day[]` is provided, creates a function that evaluates the provided days of the\n * week as disabled.\n */\n initialize(disabledDates) {\n if (typeof disabledDates === 'function') {\n this.isDateDisabled = (date) => disabledDates(getDate(date));\n }\n else if (isNumberArray(disabledDates)) {\n const disabledWeekDays = new Set(disabledDates);\n this.isDateDisabled = (date) => disabledWeekDays.has(date.getDay());\n }\n else if (isDateArray(disabledDates)) {\n const normalizedDisabledDates = new Set(disabledDates.map(date => getDate(date).getTime()));\n this.isDateDisabled = (date) => normalizedDisabledDates.has(getDate(date).getTime());\n }\n else {\n this.isDateDisabled = noop$1;\n this.notifyInvalidInput(disabledDates);\n }\n this.notifyServiceChange();\n }\n notifyInvalidInput(disabledDates) {\n if (isPresent(disabledDates) && isDevMode()) {\n throw new Error(`The 'disabledDates' value should be a function, a Day array or a Date array. Check ${DISABLED_DATES_DOC_LINK} for more information.`);\n }\n }\n notifyServiceChange() {\n this.changes.next();\n }\n}\nDisabledDatesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDisabledDatesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass KForOfContext {\n constructor($implicit, kForOf, index, count) {\n this.$implicit = $implicit;\n this.kForOf = kForOf;\n this.index = index;\n this.count = count;\n }\n get first() { return this.index === 0; }\n get last() { return this.index === this.count - 1; }\n get even() { return this.index % 2 === 0; }\n get odd() { return !this.even; }\n}\n/**\n * @hidden\n */\n// eslint-disable-next-line\nclass KForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._differ = null;\n }\n set kForTemplate(value) {\n if (value) {\n this._template = value;\n }\n }\n ngOnChanges(changes) {\n if ('kForOf' in changes) {\n const value = changes.kForOf.currentValue;\n if (this._differ || !value) {\n return;\n }\n try {\n this._differ = this._differs.find(value).create(this.kForTrackBy);\n }\n catch (e) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeNameForDebugging(value)}'.`);\n }\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this.kForOf);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _applyChanges(changes) {\n if (!isDocumentAvailable()) {\n return;\n }\n const viewContainerLength = this._viewContainer.length;\n const dataLength = this.kForOf.length;\n const tuples = {};\n changes.forEachOperation((record, _, currentIndex) => {\n if (currentIndex !== null) {\n tuples[currentIndex] = record.item;\n }\n });\n for (let i = viewContainerLength; i < dataLength; i++) {\n this._viewContainer.createEmbeddedView(this._template, new KForOfContext(null, this.kForOf, -1, -1), i);\n }\n for (let i = this._viewContainer.length; i > dataLength; i--) {\n this._viewContainer.remove(i - 1);\n }\n for (let i = 0; i < this._viewContainer.length; i++) {\n const view = this._viewContainer.get(i);\n view.context.index = i;\n view.context.count = length;\n view.context.$implicit = tuples[i] || null;\n }\n }\n}\nKForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nKForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: KForOf, selector: \"[kFor][kForOf]\", inputs: { kForOf: \"kForOf\", kForTrackBy: \"kForTrackBy\", kForTemplate: \"kForTemplate\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[kFor][kForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { kForOf: [{\n type: Input\n }], kForTrackBy: [{\n type: Input\n }], kForTemplate: [{\n type: Input\n }] } });\n/**\n * @hidden\n */\nfunction getTypeNameForDebugging(type) {\n return type.name || typeof type;\n}\n\n/**\n * @hidden\n */\nclass ViewComponent {\n constructor(bus, intl, cdr, element, zone, renderer, disabledDatesService) {\n this.bus = bus;\n this.intl = intl;\n this.cdr = cdr;\n this.element = element;\n this.zone = zone;\n this.renderer = renderer;\n this.disabledDatesService = disabledDatesService;\n this.direction = 'vertical';\n this.isActive = true;\n this.selectedDates = [];\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.cellEnter = new EventEmitter();\n this.cellLeave = new EventEmitter();\n this.colSpan = 0;\n this.subscriptions = new Subscription();\n this.domEvents = [];\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n this.subscriptions.add(this.disabledDatesService.changes.subscribe(this.disabledDatesChange.bind(this)));\n }\n get weekNumber() {\n return this.showWeekNumbers && this.activeView === CalendarViewEnum.month;\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n ngOnInit() {\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.colSpan = this.service.rowLength({ prependCell: this.weekNumber });\n this.title = this.service.title(this.viewDate);\n this.updateData();\n if (changes.activeView) {\n this.currentCellIndex = null;\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domEvents.forEach(unsubscribeCallback => unsubscribeCallback());\n }\n isHorizontal() {\n return this.direction === 'horizontal';\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n shouldRenderCellContent(cellCtx) {\n return isPresent(cellCtx) && !(!this.isHorizontal() && cellCtx.isOtherMonth);\n }\n firstDate(rowCtx) {\n const ctx = this.firstWeekDateContext(rowCtx);\n return ctx ? ctx.value : null;\n }\n getWeekNumber(date) {\n if (!this.weekNumber) {\n return null;\n }\n return weekInYear(date, this.intl.firstDay());\n }\n getWeekNumberContext(rowCtx) {\n const ctx = this.firstWeekDateContext(rowCtx);\n if (!this.weekNumber || !ctx) {\n return null;\n }\n const weekNumber = weekInYear(ctx.value, this.intl.firstDay()).toString();\n return {\n formattedValue: weekNumber,\n id: null,\n isFocused: false,\n isSelected: false,\n isWeekend: false,\n title: weekNumber,\n value: cloneDate(ctx.value)\n };\n }\n getStyles(context) {\n const { isRangeEnd, isRangeStart } = context;\n const isEndActive = this.activeRangeEnd === 'end' && isRangeEnd;\n const isStartActive = this.activeRangeEnd === 'start' && isRangeStart;\n return stringifyClassObject({\n 'k-range-end': !context.isOtherMonth && isRangeEnd,\n 'k-range-mid': !context.isOtherMonth && context.isRangeMid,\n 'k-range-split-end': !context.isOtherMonth && context.isRangeSplitEnd,\n 'k-range-split-start': !context.isOtherMonth && context.isRangeSplitStart,\n 'k-range-start': !context.isOtherMonth && isRangeStart,\n 'k-state-active': isStartActive || isEndActive,\n 'k-state-focused': !context.isOtherMonth && this.isActive && context.isFocused,\n 'k-state-selected': !context.isOtherMonth && (context.isSelected || isRangeStart || isRangeEnd),\n 'k-today': !context.isOtherMonth && context.isToday,\n 'k-weekend': context.isWeekend,\n 'k-disabled': context.isDisabled,\n 'k-other-month': context.isOtherMonth\n });\n }\n tableCellIndex(rowIndex, cellIndex) {\n return `${rowIndex}:${cellIndex}`;\n }\n handleWeekNumberClick(week) {\n const availableDates = week.map(item => item.value).filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.weekNumberCellClick.emit(availableDates);\n }\n firstWeekDateContext(rowCtx) {\n if (!this.weekNumber) {\n return null;\n }\n let idx = 0;\n let ctx = this.shouldRenderCellContent(rowCtx[idx]) ? rowCtx[idx] : null;\n while (!ctx && idx < rowCtx.length) {\n const cellCtx = rowCtx[++idx];\n ctx = this.shouldRenderCellContent(cellCtx) ? cellCtx : null;\n }\n return ctx;\n }\n updateData() {\n const time = last(this.selectedDates) || getToday();\n const viewDate = setTime(this.viewDate, time);\n this.data = this.service.data({\n cellUID: this.cellUID,\n focusedDate: this.focusedDate,\n isActiveView: !this.bus.canMoveDown(this.activeView),\n max: this.max,\n min: this.min,\n selectedDates: this.selectedDates,\n selectionRange: this.selectionRange,\n viewDate: viewDate,\n isDateDisabled: this.disabledDatesService.isDateDisabled,\n direction: this.direction\n });\n }\n intlChange() {\n this.updateData();\n this.cdr.markForCheck();\n }\n disabledDatesChange() {\n this.updateData();\n this.cdr.markForCheck();\n }\n bindEvents() {\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'mouseover', this.cellMouseoverHandler.bind(this)), this.renderer.listen(element, 'mouseleave', this.mouseLeaveHandler.bind(this)), this.renderer.listen(element, 'click', this.clickHandler.bind(this)));\n }\n clickHandler(args) {\n const cell = this.closestCell(args);\n if (!cell) {\n return;\n }\n const index = cell.getAttribute('data-cell-index');\n const cellContext = this.cellByIndex(index);\n if (!cellContext.isDisabled) {\n const { ctrlKey, metaKey, shiftKey } = args;\n this.cellClick.emit({\n date: cellContext.value,\n modifiers: { ctrlKey, metaKey, shiftKey }\n });\n }\n }\n mouseLeaveHandler() {\n if (this.currentCellIndex) {\n this.emitCellLeave();\n }\n }\n cellMouseoverHandler(args) {\n const cell = this.closestCell(args);\n if (cell) {\n const index = cell.getAttribute('data-cell-index');\n if (this.currentCellIndex && this.currentCellIndex !== index) {\n this.emitCellLeave();\n }\n const value = this.cellByIndex(index).value;\n this.cellEnter.emit(value);\n this.currentCellIndex = index;\n }\n else if (this.currentCellIndex) {\n this.emitCellLeave();\n }\n }\n closestCell(eventArgs) {\n return closestInScope(eventArgs.target, node => node.hasAttribute('data-cell-index'), this.element.nativeElement);\n }\n emitCellLeave() {\n const item = this.cellByIndex(this.currentCellIndex);\n if (item) {\n this.cellLeave.emit(item.value);\n }\n this.currentCellIndex = null;\n }\n cellByIndex(index) {\n const [rowIndex, cellIndex] = index.split(':');\n return this.data[rowIndex][cellIndex];\n }\n}\nViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DisabledDatesService }], target: i0.ɵɵFactoryTarget.Component });\nViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: { direction: \"direction\", isActive: \"isActive\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", viewDate: \"viewDate\", activeRangeEnd: \"activeRangeEnd\", selectionRange: \"selectionRange\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\", viewIndex: \"viewIndex\", templateRef: \"templateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\" }, usesOnChanges: true, ngImport: i0, template: `\n  \n {{title}}\n \n \n \n \n {{getWeekNumber(firstDate(row))}}\n \n \n \n \n \n \n \n {{cell.formattedValue}}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line\n selector: '[kendoCalendarView]',\n template: `\n  \n {{title}}\n \n \n \n \n {{getWeekNumber(firstDate(row))}}\n \n \n \n \n \n \n \n {{cell.formattedValue}}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: DisabledDatesService }]; }, propDecorators: { direction: [{\n type: Input\n }], isActive: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], viewIndex: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }] } });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst DEFAULT_VIEWS_LENGTH = 2;\n/**\n * @hidden\n */\nclass HorizontalViewListComponent {\n constructor(bus, intl, weekService, cdr, element, renderer) {\n this.bus = bus;\n this.intl = intl;\n this.weekService = weekService;\n this.cdr = cdr;\n this.element = element;\n this.renderer = renderer;\n this.activeView = CalendarViewEnum.month;\n this.isActive = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.selectedDates = [];\n this.views = DEFAULT_VIEWS_LENGTH;\n this.showViewHeader = false;\n this.animateNavigation = false;\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.cellEnter = new EventEmitter();\n this.cellLeave = new EventEmitter();\n this.activeDateChange = new EventEmitter();\n this.getComponentClass = true;\n this.weekNames = [];\n this.dates = [];\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n get weekNumber() {\n return this.showWeekNumbers && this.isMonthView();\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n get getComponentMonthClass() {\n return this.activeView === CalendarViewEnum.month;\n }\n get getComponentYearClass() {\n return this.activeView === CalendarViewEnum.year;\n }\n get getComponentDecadeClass() {\n return this.activeView === CalendarViewEnum.decade;\n }\n get getComponentCenturyClass() {\n return this.activeView === CalendarViewEnum.century;\n }\n ngOnChanges(changes) {\n this.initService();\n if (this.weekNames.length === 0 || changes.weekNumber) {\n this.weekNames = this.weekService.getWeekNames(this.weekNumber);\n }\n if (!this.service) {\n return;\n }\n this.views = this.views || DEFAULT_VIEWS_LENGTH;\n const focusedDate = this.focusedDate;\n const viewDate = this.clampDate(this.service.viewDate(focusedDate, this.max, this.views));\n this.skip = this.service.skip(viewDate, this.min);\n this.total = this.service.total(this.min, this.max);\n const activeViewChanged = hasChange(changes, 'activeView');\n const viewsHasChanged = this.views > 0 && hasChange(changes, 'views');\n if (activeViewChanged || !this.isInDates(focusedDate) || viewsHasChanged || !this.activeDate) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n this.activeDate = cloneDate(this.dates[0]);\n this.activeDateChange.emit(this.activeDate);\n }\n }\n ngAfterViewInit() {\n // make the calendar look the same in the different browsers\n // which also smoothens the navigation animation\n if (this.views === 1) {\n this.setTableMinWidth();\n }\n }\n ngOnDestroy() {\n this.intlSubscription.unsubscribe();\n }\n initService() {\n this.service = this.bus.service(this.activeView);\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n getCaptionTitle(date) {\n return this.service.title(date);\n }\n getCaptionClass() {\n return this.isMonthView() ? 'k-month-header' : 'k-meta-header';\n }\n animateView(action) {\n const container = this.element.nativeElement;\n const table = container.querySelector('table');\n // the whole width excluding padding/margin\n const initialContainerWidth = parseFloat(getComputedStyle(container).width);\n // table width\n const tableWidth = parseFloat(getComputedStyle(table).width);\n this.renderer.setStyle(container, 'width', `${initialContainerWidth}px`);\n this.renderer.setStyle(container, 'overflow', 'visible');\n // initialize an additional view for the animation\n if (action === Action.NextView) {\n // animating Action.NextView requires adding an additional view before the rendered views\n this.nextAnimationDate = cloneDate(this.dates[0]);\n }\n else {\n // animating Action.PrevView requires adding an additional view after the rendered views\n this.prevAnimationDate = cloneDate(this.dates[this.dates.length - 1]);\n }\n // run cdr to render the additional view\n this.cdr.detectChanges();\n container.querySelectorAll('table').forEach(table => {\n this.renderer.setStyle(table, 'width', `${tableWidth}px`);\n if (this.views === 1) {\n this.renderer.setStyle(table, 'min-width', `${initialContainerWidth}px`);\n }\n });\n // we always slide by the width of 1 table\n // cross-browser compatibility is ensured by measuring the client rectangle and substracting the gap\n const tabRect = table.getBoundingClientRect();\n const containerGap = parseFloat(getComputedStyle(container).columnGap);\n const start = action === Action.NextView ? 'translateX(0)' : `translateX(-${tabRect.width + containerGap}px)`;\n const end = action === Action.NextView ? `translateX(-${tabRect.width + containerGap}px)` : 'translateX(0)';\n if (!this.animation) {\n this.animation = container.animate([\n { transform: start },\n { transform: end }\n ], {\n duration: 500,\n easing: 'ease-out'\n });\n this.animation.oncancel = this.animation.onfinish = () => {\n // clear all inline styles\n this.renderer.removeStyle(container, 'width');\n this.renderer.removeStyle(container, 'overflow');\n container.querySelectorAll('table').forEach(table => {\n this.renderer.removeStyle(table, 'width');\n });\n // clear the animation and the animation view\n this.animation = null;\n this.nextAnimationDate = null;\n this.prevAnimationDate = null;\n // run cdr to remove additional animation view from the markup\n this.cdr.detectChanges();\n };\n }\n else {\n // if animation is already running, cancel it and show the end navigation result on multiple prev/next button clicks\n this.animation.cancel();\n }\n }\n navigate(action) {\n if (this.animateNavigation && isDocumentAvailable() && isPresent(this.element.nativeElement.animate)) {\n this.animateView(action);\n }\n const candidate = this.move(action);\n const list = this.service.datesList(candidate, this.getTake(this.skip));\n if (this.isListInRange(list)) {\n this.dates = list;\n }\n this.activeDate = cloneDate(this.dates[0]);\n this.focusedDate = cloneDate(candidate);\n this.cdr.markForCheck();\n this.activeDateChange.emit(this.activeDate);\n return cloneDate(candidate);\n }\n canNavigate(action) {\n if (!this.service) {\n return false;\n }\n return this.isListInRange(this.service.datesList(this.move(action), this.getTake(this.skip)));\n }\n setTableMinWidth() {\n const container = this.element.nativeElement;\n const table = container.querySelector('table');\n if (table) {\n const containerWidth = parseFloat(getComputedStyle(container).width);\n this.renderer.setStyle(table, 'min-width', `${containerWidth}px`);\n }\n }\n intlChange() {\n this.weekNames = this.weekService.getWeekNames(this.weekNumber);\n this.cdr.markForCheck();\n }\n clampDate(value) {\n return dateInRange(value, this.min, this.max);\n }\n move(action) {\n return this.service.move(this.dates[0] || this.focusedDate, action);\n }\n isListInRange(list) {\n const lowerBound = this.service.beginningOfPeriod(this.min);\n const upperBound = this.service.beginningOfPeriod(this.service.addToDate(this.max, 1));\n return lowerBound <= list[0] && list[list.length - 1] < upperBound;\n }\n isInDates(value) {\n return this.service.isInArray(value, this.dates);\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.views);\n }\n}\nHorizontalViewListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HorizontalViewListComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: WeekNamesService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nHorizontalViewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HorizontalViewListComponent, selector: \"kendo-calendar-horizontal\", inputs: { cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", activeRangeEnd: \"activeRangeEnd\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", isActive: \"isActive\", min: \"min\", max: \"max\", selectionRange: \"selectionRange\", selectedDates: \"selectedDates\", views: \"views\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", activeDateChange: \"activeDateChange\" }, host: { properties: { \"class.k-calendar-view\": \"this.getComponentClass\", \"class.k-hstack\": \"this.getComponentClass\", \"class.k-align-items-start\": \"this.getComponentClass\", \"class.k-justify-content-center\": \"this.getComponentClass\", \"class.k-calendar-monthview\": \"this.getComponentMonthClass\", \"class.k-calendar-yearview\": \"this.getComponentYearClass\", \"class.k-calendar-decadeview\": \"this.getComponentDecadeClass\", \"class.k-calendar-centuryview\": \"this.getComponentCenturyClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n {{ getCaptionTitle(date) }}\n \n \n {{name}}\n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n \n `, isInline: true, components: [{ type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: [\"direction\", \"isActive\", \"activeView\", \"cellUID\", \"focusedDate\", \"viewDate\", \"activeRangeEnd\", \"selectionRange\", \"min\", \"max\", \"selectedDates\", \"weekNumber\", \"viewIndex\", \"templateRef\", \"weekNumberTemplateRef\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\"] }], directives: [{ type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HorizontalViewListComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-horizontal',\n template: `\n \n \n {{ getCaptionTitle(date) }}\n \n \n {{name}}\n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i1.IntlService }, { type: WeekNamesService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { cellTemplateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], views: [{\n type: Input\n }], showViewHeader: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-view\"]\n }, {\n type: HostBinding,\n args: [\"class.k-hstack\"]\n }, {\n type: HostBinding,\n args: [\"class.k-align-items-start\"]\n }, {\n type: HostBinding,\n args: [\"class.k-justify-content-center\"]\n }], getComponentMonthClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-monthview\"]\n }], getComponentYearClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-yearview\"]\n }], getComponentDecadeClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-decadeview\"]\n }], getComponentCenturyClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-centuryview\"]\n }] } });\n\n/**\n * @hidden\n */\nclass HeaderComponent {\n constructor(bus, cdr, localization, intl, disabledDatesService) {\n this.bus = bus;\n this.cdr = cdr;\n this.localization = localization;\n this.intl = intl;\n this.disabledDatesService = disabledDatesService;\n this.navigate = true;\n this.todayAvailable = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.rangeLength = 1;\n this.isPrevDisabled = true;\n this.isNextDisabled = true;\n this.showNavigationButtons = false;\n this.todayButtonClick = new EventEmitter();\n this.prevButtonClick = new EventEmitter();\n this.nextButtonClick = new EventEmitter();\n this.getComponentClass = true;\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(this.l10nChange.bind(this)));\n this.subscriptions.add(this.disabledDatesService.changes.subscribe(this.setTodayAvailability.bind(this)));\n }\n ngOnChanges(_) {\n const service = this.bus.service(this.activeView);\n if (!service) {\n return;\n }\n this.activeViewValue = CalendarViewEnum[this.activeView];\n this.todayMessage = this.localization.get('today');\n this.setTodayAvailability();\n this.navigate = this.bus.canMoveUp(this.activeView);\n this.title = this.getTitle();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleTodayClick() {\n if (!this.todayAvailable) {\n return;\n }\n this.bus.moveToBottom(this.activeView);\n this.todayButtonClick.emit(dateInRange(getToday(), this.min, this.max));\n }\n handleNavigation() {\n if (!this.navigate) {\n return;\n }\n this.bus.moveUp(this.activeView);\n }\n intlChange() {\n if (this.currentDate && this.bus.service(this.activeView)) {\n this.title = this.getTitle();\n this.cdr.markForCheck();\n }\n }\n l10nChange() {\n this.prevButtonTitle = this.localization.get('prevButtonTitle');\n this.nextButtonTitle = this.localization.get('nextButtonTitle');\n this.todayMessage = this.localization.get('today');\n this.cdr.markForCheck();\n }\n getTitle() {\n if (!this.currentDate) {\n return '';\n }\n const service = this.bus.service(this.activeView);\n const take = this.rangeLength - 1;\n const title = service.title(this.currentDate);\n const nextDate = service.addToDate(this.currentDate, take);\n if (take < 1 || !service.isInRange(nextDate, this.min, this.max)) {\n return title;\n }\n return `${title} - ${service.title(nextDate)}`;\n }\n setTodayAvailability() {\n const today = getToday();\n const isTodayInRange = isInRange(today, getDate(this.min), getDate(this.max));\n const isDisabled = this.disabledDatesService.isDateDisabled(today);\n this.todayAvailable = isTodayInRange && !isDisabled;\n this.cdr.markForCheck();\n }\n}\nHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1$1.LocalizationService }, { token: i1.IntlService }, { token: DisabledDatesService }], target: i0.ɵɵFactoryTarget.Component });\nHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: { activeView: \"activeView\", currentDate: \"currentDate\", min: \"min\", max: \"max\", rangeLength: \"rangeLength\", templateRef: \"templateRef\", isPrevDisabled: \"isPrevDisabled\", isNextDisabled: \"isNextDisabled\", showNavigationButtons: \"showNavigationButtons\" }, outputs: { todayButtonClick: \"todayButtonClick\", prevButtonClick: \"prevButtonClick\", nextButtonClick: \"nextButtonClick\" }, host: { properties: { \"class.k-calendar-header\": \"this.getComponentClass\", \"class.k-hstack\": \"this.getComponentClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n {{title}}\n \n \n \n \n \n \n \n \n {{ todayMessage }}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-calendar-header',\n template: `\n \n {{title}}\n \n \n \n \n \n \n \n \n {{ todayMessage }}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1$1.LocalizationService }, { type: i1.IntlService }, { type: DisabledDatesService }]; }, propDecorators: { activeView: [{\n type: Input\n }], currentDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeLength: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], isPrevDisabled: [{\n type: Input\n }], isNextDisabled: [{\n type: Input\n }], showNavigationButtons: [{\n type: Input\n }], todayButtonClick: [{\n type: Output\n }], prevButtonClick: [{\n type: Output\n }], nextButtonClick: [{\n type: Output\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-header\"]\n }, {\n type: HostBinding,\n args: [\"class.k-hstack\"]\n }] } });\n\nconst KEY_TO_ACTION = {\n '33': Action.PrevView,\n '34': Action.NextView,\n '35': Action.LastInView,\n '36': Action.FirstInView,\n '37': Action.Left,\n '38': Action.Up,\n '39': Action.Right,\n '40': Action.Down,\n 'meta+38': Action.UpperView,\n 'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(bus) {\n this.bus = bus;\n }\n action(event) {\n const action = `${event.ctrlKey || event.metaKey ? 'meta+' : ''}${event.keyCode}`;\n return KEY_TO_ACTION[action];\n }\n move(value, action, activeView) {\n const service = this.bus.service(activeView);\n if (!service) {\n return value;\n }\n if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n this.bus.moveUp(activeView);\n return value;\n }\n if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n this.bus.moveDown(activeView);\n return value;\n }\n return service.move(value, action);\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: BusViewService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: BusViewService }]; } });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor(bus) {\n this.bus = bus;\n }\n performSelection(args) {\n let { date, modifiers, selectionMode, activeViewEnum, rangePivot } = args;\n let selectedDates = args.selectedDates.slice();\n if (selectionMode === 'multiple') {\n if (modifiers.ctrlKey || modifiers.metaKey) {\n if (this.isDateSelected(selectedDates, date)) {\n selectedDates = selectedDates.filter(item => !isEqual(item, date));\n }\n else {\n selectedDates.push(date);\n }\n rangePivot = date;\n }\n else if (modifiers.shiftKey) {\n const [start, end] = sortDates([rangePivot || date, date]);\n selectedDates = this.bus.service(activeViewEnum).dateRange(start, end);\n rangePivot = date > selectedDates[0] ? selectedDates[0] : last(selectedDates);\n }\n else {\n selectedDates = [date];\n rangePivot = date;\n }\n }\n else {\n selectedDates = [date];\n rangePivot = date;\n }\n return { selectedDates, rangePivot };\n }\n isDateSelected(selectedDates, date) {\n return selectedDates.some(item => isEqual(item, date));\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [{ token: BusViewService }], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: BusViewService }]; } });\n\n/**\n * Used for rendering the cell content of the Calendar. To define the cell template, nest an `` tag\n * with the `kendoCalendarCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details\n * about the current cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * > `kendoCalendarCellTemplate` is equivalent to\n * > [`kendoCalendarMonthCellTemplate`]({% slug api_dateinputs_monthcelltemplatedirective %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{date.getDate()}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellTemplateDirective, selector: \"[kendoCalendarCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the month cell content of the Calendar. To define the month cell template, nest an `` tag\n * with the `kendoCalendarMonthCellTemplate` directive inside the component tag. The template context is set to the current\n * component. To get a reference to the current date, use the `let-date` directive. To provide more details about the current\n * month cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass MonthCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nMonthCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMonthCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthCellTemplateDirective, selector: \"[kendoCalendarMonthCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarMonthCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the year cell content of the Calendar. To define the year cell template, nest an\n * `` tag with the `kendoCalendarYearCellTemplate` directive inside the component tag.\n * The template context is set to the current component. To get a reference to the current date, use\n * the `let-date` directive. To provide more details about the current year cell, get a reference to the\n * current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'year';\n * }\n * ```\n */\nclass YearCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nYearCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nYearCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YearCellTemplateDirective, selector: \"[kendoCalendarYearCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarYearCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the decade cell content of the Calendar. To define the decade cell template, nest an ``\n * tag with the `kendoCalendarDecadeCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details about\n * the current decade cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'decade';\n * }\n * ```\n */\nclass DecadeCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDecadeCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nDecadeCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DecadeCellTemplateDirective, selector: \"[kendoCalendarDecadeCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarDecadeCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the century cell content of the Calendar. To define the century cell template, nest an ``\n * tag with the `kendoCalendarCenturyCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details about\n * the current century cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'century';\n * }\n * ```\n */\nclass CenturyCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCenturyCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCenturyCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CenturyCellTemplateDirective, selector: \"[kendoCalendarCenturyCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCenturyCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the week number cell content in the month view of the Calendar. To define the month week number cell template,\n * nest an `` tag with the `kendoCalendarWeekNumberCellTemplate` directive inside the component tag. The template\n * context is set to the current component. To get a reference to the current date, use the `let-date` directive. To provide more\n * details about the current week number cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass WeekNumberCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nWeekNumberCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNumberCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nWeekNumberCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WeekNumberCellTemplateDirective, selector: \"[kendoCalendarWeekNumberCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNumberCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarWeekNumberCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the header title of the Calendar. To define the header title template, nest an `` tag\n * with the `kendoCalendarHeaderTitleTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current title, use the `let-title` directive. To provide more details about\n * the current title, get a reference to the current `date` by using the `let-date` directive or get a reference to the\n * current active view by using the `let-activeView` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{title}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass HeaderTitleTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTitleTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTitleTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTitleTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTitleTemplateDirective, selector: \"[kendoCalendarHeaderTitleTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTitleTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarHeaderTitleTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nconst minValidator = (minValue) => {\n return (control) => {\n const err = {\n minError: {\n minValue: minValue,\n value: control.value\n }\n };\n if (!minValue || !control.value) {\n return null;\n }\n return control.value < minValue ? err : null;\n };\n};\n\n/**\n * @hidden\n */\nconst maxValidator = (maxValue) => {\n return (control) => {\n const err = {\n maxError: {\n maxValue: maxValue,\n value: control.value\n }\n };\n if (!maxValue || !control.value) {\n return null;\n }\n return control.value > maxValue ? err : null;\n };\n};\n\nconst noop = () => null;\n/**\n * @hidden\n */\nconst disabledDatesRangeValidator = (isDateDisabled) => {\n if (!isPresent(isDateDisabled)) {\n return noop;\n }\n return (selectedRange) => {\n const isRangeComplete = isPresent(selectedRange) && isPresent(selectedRange.start) && isPresent(selectedRange.end);\n if (!isRangeComplete || selectedRange.start > selectedRange.end) {\n return null;\n }\n const disabledDates = disabledDatesInRange(selectedRange.start, selectedRange.end, isDateDisabled);\n const error = {\n disabledDatesInRange: disabledDates\n };\n return disabledDates.length ? error : null;\n };\n};\n\n/**\n * @hidden\n */\nclass Messages$1 extends ComponentMessages {\n}\nMessages$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages$1.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages$1, selector: \"kendo-multiview-calendar-messages-base\", inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-multiview-calendar-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass MultiViewCalendarLocalizedMessagesDirective extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nMultiViewCalendarLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nMultiViewCalendarLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarLocalizedMessagesDirective, selector: \"[kendoMultiViewCalendarLocalizedMessages]\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoMultiViewCalendarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst BOTTOM_VIEW_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-bottomview';\nconst TOP_VIEW_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-topview';\nconst MIN_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-min';\nconst MAX_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-max';\nconst VALUE_DOC_LINK$5 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/#toc-using-with-json';\n/**\n * @hidden\n */\nconst RANGE_CALENDAR_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiViewCalendarComponent)\n};\n/**\n * @hidden\n */\nconst RANGE_CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MultiViewCalendarComponent)\n};\n/**\n * Represents the Kendo UI MultiViewCalendar component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass MultiViewCalendarComponent {\n constructor(bus, element, navigator, renderer, cdr, zone, disabledDatesService, selectionService) {\n this.bus = bus;\n this.element = element;\n this.navigator = navigator;\n this.renderer = renderer;\n this.cdr = cdr;\n this.zone = zone;\n this.disabledDatesService = disabledDatesService;\n this.selectionService = selectionService;\n /**\n * @hidden\n */\n this.id = guid();\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = false;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_multiviewcalendar %}#toc-validation)).\n */\n this.disabledDatesRangeValidation = false;\n /**\n * Sets the Calendar selection mode\n * ([see example]({% slug multiple_selection_multiviewcalendar %})).\n *\n * The available values are:\n * * `single` (default)\n * * `multiple`\n */\n this.selection = 'single';\n /**\n * Sets or gets the `disabled` property of the Calendar and\n * determines whether the component is active\n * ([see example]({% slug disabled_multiviewcalendar %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the `tabindex` property of the Calendar. Based on the\n * [HTML `tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) behavior,\n * it determines whether the component is focusable.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.isActive = false;\n /**\n * @hidden\n */\n this.isHeaderActive = false;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug activeview_multiviewcalendar %})).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost view, to which the user can navigate\n * ([see example]({% slug dates_multiviewcalendar %}#toc-partial-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost view, to which the user can navigate.\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Determines whether to display a header for every view (for example the month name).\n */\n this.showViewHeader = false;\n /**\n * Determines whether to enable animation when navigating to previous/next view.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view\n * ([see example]({% slug weeknumcolumn_multiviewcalendar %})).\n */\n this.weekNumber = false;\n /**\n * Sets or gets the `views` property of the Calendar and\n * defines the number of rendered months.\n */\n this.views = 2;\n /**\n * Fires when the active view is changed\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Fires when navigating in the currently active view\n * ([more information and example]({% slug events_multiviewcalendar %})).\n */\n this.navigate = new EventEmitter();\n /**\n * Fires when a view cell is entered\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.cellEnter = new EventEmitter();\n /**\n * Fires when a view cell is leaved\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.cellLeave = new EventEmitter();\n /**\n * Fires when the value is changed\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.blurEvent = new EventEmitter();\n this.cellUID = guid();\n this.isHovered = false;\n this.isPrevDisabled = true;\n this.isNextDisabled = true;\n this.prevView = Action.PrevView;\n this.nextView = Action.NextView;\n this.selectedDates = [];\n this._min = new Date(MIN_DATE);\n this._max = new Date(MAX_DATE);\n this._focusedDate = getToday();\n this.resolvedPromise = Promise.resolve();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesRangeValidateFn = noop$2;\n this.subscriptions = new Subscription();\n this.setClasses(element.nativeElement);\n }\n /**\n * Sets or gets the `focusedDate` property of the Calendar and\n * defines the focused date of the component\n * ([see example]({% slug dates_multiviewcalendar %}#toc-focused-dates)).\n *\n * > If the Calendar is out of the min or max range, it normalizes the defined `focusedDate`.\n */\n set focusedDate(focusedDate) {\n this._focusedDate = focusedDate || getToday();\n }\n get focusedDate() {\n return this._focusedDate;\n }\n /**\n * Sets or gets the `min` property of the Calendar and\n * defines the minimum allowed date value.\n * By default, the `min` value is `1900-1-1`.\n */\n set min(min) {\n this._min = min || new Date(MIN_DATE);\n }\n get min() {\n return this._min;\n }\n /**\n * Sets or gets the `max` property of the Calendar and\n * defines the maximum allowed date value.\n * By default, the `max` value is `2099-12-31`.\n */\n set max(max) {\n this._max = max || new Date(MAX_DATE);\n }\n get max() {\n return this._max;\n }\n /**\n * Sets or gets the `value` property of the Calendar and defines the selected value of the component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date)\n * instance when in `single` selection mode or an array of valid JavaScript Date instances when in `multiple` selection mode.\n */\n get value() {\n return this._value;\n }\n set value(candidate) {\n this.verifyValue(candidate);\n this._value = Array.isArray(candidate) ?\n candidate.filter(date => isPresent(date)).map(element => cloneDate(element)) :\n cloneDate(candidate);\n const selection = [].concat(candidate).filter(date => isPresent(date)).map(date => cloneDate(date));\n if (!areDatesEqual(selection, this.selectedDates)) {\n const lastSelected = last(selection);\n this.rangePivot = cloneDate(lastSelected);\n this.focusedDate = cloneDate(lastSelected) || this.focusedDate;\n this.selectedDates = selection;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the MultiViewCalendar that will be disabled\n * ([see example]({% slug disabled_dates_multiviewcalendar %})).\n */\n set disabledDates(value) {\n this.disabledDatesService.initialize(value);\n }\n /**\n * Sets or gets the `selectionRange` property of the Calendar and\n * defines the selection range of the component\n * ([see example]({% slug dates_multiviewcalendar %}#toc-selection-range)).\n */\n set selectionRange(range) {\n this._selectionRange = range;\n if (this.disabledDatesRangeValidation) {\n this.onValidatorChange();\n }\n }\n get selectionRange() {\n return this._selectionRange;\n }\n /**\n * @hidden\n *\n * Defines the template for each cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set cellTemplateRef(template) {\n this._cellTemplateRef = template;\n }\n get cellTemplateRef() {\n return this._cellTemplateRef || this.cellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each month cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set monthCellTemplateRef(template) {\n this._monthCellTemplateRef = template;\n }\n get monthCellTemplateRef() {\n return this._monthCellTemplateRef || this.monthCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each year cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set yearCellTemplateRef(template) {\n this._yearCellTemplateRef = template;\n }\n get yearCellTemplateRef() {\n return this._yearCellTemplateRef || this.yearCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each decade cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set decadeCellTemplateRef(template) {\n this._decadeCellTemplateRef = template;\n }\n get decadeCellTemplateRef() {\n return this._decadeCellTemplateRef || this.decadeCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each century cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set centuryCellTemplateRef(template) {\n this._centuryCellTemplateRef = template;\n }\n get centuryCellTemplateRef() {\n return this._centuryCellTemplateRef || this.centuryCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the week cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set weekNumberTemplateRef(template) {\n this._weekNumberTemplateRef = template;\n }\n get weekNumberTemplateRef() {\n return this._weekNumberTemplateRef || this.weekNumberTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the header title.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set headerTitleTemplateRef(template) {\n this._headerTitleTemplateRef = template;\n }\n get headerTitleTemplateRef() {\n return this._headerTitleTemplateRef || this.headerTitleTemplate;\n }\n get activeViewEnum() {\n const activeView = CalendarViewEnum[this.activeView];\n return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;\n }\n get bottomViewEnum() {\n return CalendarViewEnum[this.bottomView];\n }\n get topViewEnum() {\n return CalendarViewEnum[this.topView];\n }\n get widgetId() {\n return this.id;\n }\n get calendarTabIndex() {\n return this.disabled ? undefined : this.tabIndex;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get ariaActivedescendant() {\n return this.cellUID + this.focusedDate.getTime();\n }\n /**\n * @hidden\n */\n handleFocusout(event) {\n const relatedTarget = event.relatedTarget;\n if (!this.element.nativeElement.contains(relatedTarget)) {\n this.blurEvent.emit(event);\n this.onControlTouched();\n }\n this.isActive = false;\n this.isHovered = false; //ensure that hovered is also not active\n this.isHeaderActive = this.headerElement.nativeElement.contains(relatedTarget);\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isActive = true;\n this.isHeaderActive = false;\n }\n /**\n * @hidden\n */\n handleMouseEnter() {\n this.isHovered = true;\n }\n /**\n * @hidden\n */\n handleMouseLeave() {\n this.isHovered = false;\n }\n /**\n * @hidden\n */\n handleMousedown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleClick() {\n if (this.isActive) {\n return;\n }\n this.focus();\n }\n /**\n * @hidden\n */\n keydown(event) {\n if (this.isHeaderActive) {\n return;\n }\n if (event.keyCode === Keys.Enter) {\n this.performSelection(this.focusedDate, event);\n }\n const candidate = dateInRange(this.navigator.move(this.focusedDate, this.navigator.action(event), this.activeViewEnum), this.min, this.max);\n if (isEqual(this.focusedDate, candidate)) {\n return;\n }\n this.focusedDate = candidate;\n event.preventDefault();\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);\n if (!isSameView) {\n this.emitNavigate(this.focusedDate);\n }\n }\n ngOnInit() {\n this.subscriptions.add(this.bus.viewChanged.subscribe(({ view }) => {\n this.activeView = CalendarViewEnum[view];\n this.activeViewChange.emit(this.activeView);\n this.cdr.detectChanges();\n this.updateButtonState();\n }));\n }\n ngOnChanges(changes) {\n this.verifyChanges();\n this.bus.configure(this.bottomViewEnum, this.topViewEnum);\n if (hasExistingValue(changes, 'focusedDate')) {\n const focusedDate = changes.focusedDate.currentValue;\n this.focusedDate = dateInRange(focusedDate, this.min, this.max);\n }\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDates || changes.disabledDatesRangeValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesRangeValidateFn = this.disabledDatesRangeValidation ? disabledDatesRangeValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.onValidatorChange();\n }\n if (changes.min || changes.max || changes.focusedDate || changes.activeView) {\n this.updateButtonState();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n ngAfterViewInit() {\n this.updateButtonState();\n }\n /**\n * Focuses the host element of the Calendar.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.focus();\n }\n /**\n * Blurs the Calendar component.\n */\n blur() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.blur();\n }\n /**\n * @hidden\n */\n handleHeaderFocus() {\n this.isHeaderActive = true;\n }\n /**\n * @hidden\n */\n handleDateChange(args) {\n const canNavigateDown = this.bus.canMoveDown(this.activeViewEnum);\n const availableDates = args.selectedDates.filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.focusedDate = args.focusedDate || this.focusedDate;\n const sameDates = !canNavigateDown && areDatesEqual(availableDates, this.selectedDates);\n if (this.disabled || sameDates) {\n return;\n }\n if (canNavigateDown) {\n this.bus.moveDown(this.activeViewEnum);\n return;\n }\n if (this.disabledDatesService.isDateDisabled(this.focusedDate)) {\n return;\n }\n this.selectedDates = availableDates.map(date => cloneDate(date));\n this.value = this.parseSelectionToValue(availableDates);\n this.onControlChange(this.parseSelectionToValue(availableDates));\n this.valueChange.emit(this.parseSelectionToValue(availableDates));\n }\n /**\n * @hidden\n */\n handleTodayButtonClick(args) {\n const todayDate = args.focusedDate;\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(todayDate, this.viewList.dates);\n const isBottomView = !this.bus.canMoveDown(this.activeViewEnum);\n if (!isSameView && isBottomView) {\n this.emitNavigate(todayDate);\n }\n this.handleDateChange(args);\n }\n /**\n * @hidden\n */\n setActiveDate(date) {\n this.activeDate = cloneDate(date);\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n writeValue(candidate) {\n this.verifyValue(candidate);\n this.value = candidate;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesRangeValidateFn(this.selectionRange);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n activeCellTemplate() {\n switch (this.activeViewEnum) {\n case CalendarViewEnum.month:\n return this.monthCellTemplateRef || this.cellTemplateRef;\n case CalendarViewEnum.year:\n return this.yearCellTemplateRef;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplateRef;\n case CalendarViewEnum.century:\n return this.centuryCellTemplateRef;\n default:\n return null;\n }\n }\n /**\n * @hidden\n */\n navigateView(action) {\n this.focusedDate = this.viewList.navigate(action);\n this.updateButtonState();\n this.emitNavigate(this.focusedDate);\n }\n /**\n * @hidden\n */\n emitNavigate(focusedDate) {\n const activeView = CalendarViewEnum[this.activeViewEnum];\n this.navigate.emit({ activeView, focusedDate });\n }\n /**\n * @hidden\n */\n emitCellEvent(emitter, args) {\n if (hasObservers(emitter)) {\n this.zone.run(() => {\n emitter.emit(args);\n });\n }\n }\n /**\n * @hidden\n */\n handleCellClick({ date, modifiers }) {\n this.performSelection(date, modifiers);\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);\n if (!isSameView) {\n this.emitNavigate(this.focusedDate);\n }\n }\n /**\n * @hidden\n */\n handleWeekNumberClick(dates) {\n if (this.selection === 'single') {\n return;\n }\n this.zone.run(() => {\n this.handleDateChange({\n selectedDates: dates,\n focusedDate: last(dates)\n });\n });\n }\n setClasses(element) {\n this.renderer.addClass(element, 'k-widget');\n this.renderer.addClass(element, 'k-calendar');\n this.renderer.addClass(element, 'k-calendar-range');\n }\n verifyChanges() {\n if (!isDevMode()) {\n return;\n }\n if (this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$3} and ${MAX_DOC_LINK$3}.`);\n }\n if (this.bottomViewEnum > this.topViewEnum) {\n throw new Error(`The topView should be greater than bottomView. See ${BOTTOM_VIEW_DOC_LINK$1} and ${TOP_VIEW_DOC_LINK$1}.`);\n }\n }\n verifyValue(candidate) {\n if (!isDevMode()) {\n return;\n }\n if (this.selection === 'single' && candidate && !(candidate instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$5} for possible resolution.`);\n }\n else if (this.selection === 'multiple' && candidate && Array.isArray(candidate)) {\n const onlyDates = candidate.every(value => value instanceof Date);\n if (!onlyDates) {\n throw new Error(`The 'value' should be an array of valid JavaScript Date instances. Check ${VALUE_DOC_LINK$5} for possible resolution.`);\n }\n }\n }\n updateButtonState() {\n this.resolvedPromise.then(() => {\n this.isPrevDisabled = !this.viewList.canNavigate(this.prevView);\n this.isNextDisabled = !this.viewList.canNavigate(this.nextView);\n this.cdr.markForCheck();\n });\n }\n parseSelectionToValue(selection) {\n selection = selection || [];\n return this.selection === 'single' ? cloneDate(last(selection)) : selection.map(date => cloneDate(date));\n }\n performSelection(date, selectionModifiers) {\n const selection = this.selectionService.performSelection({\n date: date,\n modifiers: selectionModifiers,\n selectionMode: this.selection,\n activeViewEnum: this.activeViewEnum,\n rangePivot: this.rangePivot,\n selectedDates: this.selectedDates\n });\n this.rangePivot = selection.rangePivot;\n this.handleDateChange({\n selectedDates: selection.selectedDates,\n focusedDate: date\n });\n }\n}\nMultiViewCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarComponent, deps: [{ token: BusViewService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: DisabledDatesService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component });\nMultiViewCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: { id: \"id\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", disabledDatesRangeValidation: \"disabledDatesRangeValidation\", selection: \"selection\", value: \"value\", disabled: \"disabled\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", isActive: \"isActive\", disabledDates: \"disabledDates\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", activeRangeEnd: \"activeRangeEnd\", selectionRange: \"selectionRange\", views: \"views\", cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"] }, outputs: { activeViewChange: \"activeViewChange\", navigate: \"navigate\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", valueChange: \"valueChange\", blurEvent: \"blur\" }, host: { listeners: { \"focusout\": \"handleFocusout($event)\", \"focus\": \"handleFocus()\", \"mouseenter\": \"handleMouseEnter()\", \"mouseleave\": \"handleMouseLeave()\", \"mousedown\": \"handleMousedown($event)\", \"click\": \"handleClick()\", \"keydown\": \"keydown($event)\" }, properties: { \"attr.id\": \"this.widgetId\", \"attr.tabindex\": \"this.calendarTabIndex\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-disabled\": \"this.ariaDisabled\", \"attr.aria-activedescendant\": \"this.ariaActivedescendant\" } }, providers: [\n BusViewService,\n RANGE_CALENDAR_VALUE_ACCESSOR,\n RANGE_CALENDAR_RANGE_VALIDATORS,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiviewcalendar'\n },\n NavigationService,\n SelectionService\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"headerElement\", first: true, predicate: HeaderComponent, descendants: true, read: ElementRef }, { propertyName: \"viewList\", first: true, predicate: HorizontalViewListComponent, descendants: true }], exportAs: [\"kendo-multiviewcalendar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: [\"activeView\", \"currentDate\", \"min\", \"max\", \"rangeLength\", \"templateRef\", \"isPrevDisabled\", \"isNextDisabled\", \"showNavigationButtons\"], outputs: [\"todayButtonClick\", \"prevButtonClick\", \"nextButtonClick\"] }, { type: HorizontalViewListComponent, selector: \"kendo-calendar-horizontal\", inputs: [\"cellTemplateRef\", \"weekNumberTemplateRef\", \"activeRangeEnd\", \"activeView\", \"cellUID\", \"focusedDate\", \"isActive\", \"min\", \"max\", \"selectionRange\", \"selectedDates\", \"views\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\", \"activeDateChange\"] }], directives: [{ type: MultiViewCalendarLocalizedMessagesDirective, selector: \"[kendoMultiViewCalendarLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-multiviewcalendar',\n providers: [\n BusViewService,\n RANGE_CALENDAR_VALUE_ACCESSOR,\n RANGE_CALENDAR_RANGE_VALIDATORS,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiviewcalendar'\n },\n NavigationService,\n SelectionService\n ],\n selector: 'kendo-multiviewcalendar',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: DisabledDatesService }, { type: SelectionService }]; }, propDecorators: { id: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesRangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], isActive: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], showViewHeader: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], views: [{\n type: Input\n }], activeViewChange: [{\n type: Output\n }], navigate: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], headerElement: [{\n type: ViewChild,\n args: [HeaderComponent, { static: false, read: ElementRef }]\n }], viewList: [{\n type: ViewChild,\n args: [HorizontalViewListComponent, { static: false }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], calendarTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], ariaActivedescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], handleFocusout: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], handleFocus: [{\n type: HostListener,\n args: [\"focus\"]\n }], handleMouseEnter: [{\n type: HostListener,\n args: [\"mouseenter\"]\n }], handleMouseLeave: [{\n type: HostListener,\n args: [\"mouseleave\"]\n }], handleMousedown: [{\n type: HostListener,\n args: [\"mousedown\", ['$event']]\n }], handleClick: [{\n type: HostListener,\n args: [\"click\"]\n }], keydown: [{\n type: HostListener,\n args: [\"keydown\", [\"$event\"]]\n }] } });\n\n/**\n * @hidden\n */\nconst update = (arr, idx, value) => ([\n ...arr.slice(0, idx + 1),\n ...(arr.slice(idx + 1).map(x => x + value))\n]);\n/**\n * @hidden\n */\nclass RowHeightService {\n constructor(total = 0, rowHeight, detailRowHeight) {\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n let agg = 0;\n for (let idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n height(rowIndex) {\n return this.heights[rowIndex];\n }\n expandDetail(rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n }\n collapseDetail(rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n }\n index(position) {\n if (position < 0) {\n return undefined;\n }\n const result = this.offsets.reduce((prev, current, idx) => {\n if (prev !== undefined) {\n return prev;\n }\n else if (current === position) {\n return idx;\n }\n else if (current > position) {\n return idx - 1;\n }\n return undefined;\n }, undefined);\n return result === undefined ? this.total - 1 : result;\n }\n offset(rowIndex) {\n return this.offsets[rowIndex];\n }\n totalHeight() {\n return this.heights.reduce((prev, curr) => prev + curr, 0);\n }\n updateRowHeight(rowIndex, value) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n }\n}\n\nconst normalize = x => Math.max(x, 0);\n/**\n * @hidden\n */\nclass ScrollAction {\n constructor(offset) {\n this.offset = offset;\n }\n}\n/**\n * @hidden\n */\nclass PageAction {\n constructor(skip) {\n this.skip = skip;\n }\n}\n/**\n * @hidden\n */\nclass ScrollerService {\n constructor(scrollObservable) {\n this.scrollObservable = scrollObservable;\n this.firstLoaded = 0;\n this.bottomOffset = 0;\n this.topOffset = 0;\n }\n create(rowHeightService, skip, take, total, topOffset = 0, bottomOffset = 0, direction = 'vertical') {\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScroll = 0;\n this.topOffset = topOffset;\n this.bottomOffset = bottomOffset;\n this.direction = direction;\n const subject = new ReplaySubject(2);\n const offsetBufferRows = this.rowsForHeight(topOffset);\n const skipWithOffset = normalize(skip - offsetBufferRows);\n subject.next(new ScrollAction(this.rowOffset(skipWithOffset)));\n if (offsetBufferRows) {\n subject.next(new PageAction(skipWithOffset));\n }\n this.subscription = new Observable(observer => {\n this.unsubscribe();\n this.scrollSubscription = this.scrollObservable.subscribe(x => this.onScroll(x, observer));\n }).subscribe((x) => subject.next(x));\n return subject;\n }\n destroy() {\n this.unsubscribe();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n onScroll({ scrollLeft, scrollTop, offsetHeight, offsetWidth }, observer) {\n const scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n const offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n if (this.lastScroll === scrollPosition) {\n return;\n }\n const up = this.lastScroll >= scrollPosition;\n this.lastScroll = scrollPosition;\n const firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n const lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n this.firstLoaded = firstItemIndex;\n observer.next(new ScrollAction(this.rowOffset(firstItemIndex)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded));\n }\n if (up && firstItemIndex <= this.firstLoaded) {\n const nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n observer.next(new ScrollAction(this.rowOffset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded));\n }\n }\n rowOffset(index) {\n return this.rowHeightService.offset(index) + this.topOffset;\n }\n rowsForHeight(height) {\n return Math.ceil(height / this.rowHeightService.height(0));\n }\n unsubscribe() {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n this.scrollSubscription = null;\n }\n }\n}\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nconst SCROLLER_FACTORY_TOKEN = new InjectionToken('dateinputs-scroll-service-factory');\n/**\n * @hidden\n */\nfunction DEFAULT_SCROLLER_FACTORY(observable) {\n return new ScrollerService(observable);\n}\n/**\n * @hidden\n */\nvar ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nconst FRAME_DURATION = 17;\nconst scrollModifiers = {\n [ScrollDirection.Forward]: (step) => value => value + step,\n [ScrollDirection.Backward]: (step) => value => value - step\n};\nconst scrollNormalizers = {\n [ScrollDirection.Forward]: (end) => value => Math.min(value, end),\n [ScrollDirection.Backward]: (end) => value => Math.max(value, end)\n};\nconst scrollValidators = {\n [ScrollDirection.Forward]: end => start => start < end,\n [ScrollDirection.Backward]: end => start => start > end\n};\nconst differenceToScroll = (scrollTop, staticOffset, maxScrollDifference) => {\n return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\n/**\n * @hidden\n */\nclass VirtualizationComponent {\n constructor(scrollerFactory, container, renderer, zone) {\n this.container = container;\n this.renderer = renderer;\n this.zone = zone;\n this.direction = 'vertical';\n this.itemHeight = 1;\n this.itemWidth = 1;\n this.topOffset = 0;\n this.bottomOffset = 0;\n this.maxScrollDifference = 100;\n this.scrollOffsetSize = 0;\n this.scrollDuration = 150;\n this.activeIndexChange = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.scrollChange = new EventEmitter();\n this.wrapperClasses = true;\n this.resolvedPromise = Promise.resolve(null);\n this.dispatcher = new Subject();\n this.scroller = scrollerFactory(this.dispatcher);\n }\n get horizontalClass() {\n return this.direction === 'horizontal';\n }\n get totalVertexLength() {\n const value = `${this.totalSize}px`;\n return this.direction === 'vertical' ? { height: value } : { width: value };\n }\n get containerOffsetSize() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n }\n get containerScrollSize() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n }\n get containerScrollPosition() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n }\n ngOnChanges(changes) {\n if (changes.direction || changes.take || changes.total) {\n this.initServices();\n this.totalSize = this.rowHeightService.totalHeight() + this.bottomOffset;\n }\n }\n ngOnInit() {\n if (!this.rowHeightService) {\n this.rowHeightService = this.createRowHeightService();\n }\n }\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.containerScrollSubscription = this.scroll$()\n .pipe(map((event) => event.target))\n .subscribe(t => {\n this.dispatcher.next(t);\n this.emitActiveIndex();\n });\n });\n }\n ngOnDestroy() {\n if (this.containerScrollSubscription) {\n this.containerScrollSubscription.unsubscribe();\n }\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n if (this.animationSubscription) {\n this.animationSubscription.unsubscribe();\n }\n }\n getContainerProperty(propertyName) {\n return this.container.nativeElement[propertyName];\n }\n activeIndex() {\n return this.itemIndex(Math.ceil(this.containerScrollPosition)); //handle subpixeling\n }\n itemIndex(offset) {\n return this.rowHeightService.index(offset);\n }\n itemOffset(index) {\n return this.rowHeightService.offset(index);\n }\n isIndexVisible(index) {\n if (!this.rowHeightService) {\n return false;\n }\n const containerTop = this.containerScrollPosition;\n const containerBottom = containerTop + this.containerOffsetSize;\n const top = this.rowHeightService.offset(index);\n const bottom = top + this.rowHeightService.height(index);\n return top >= containerTop && bottom <= containerBottom;\n }\n isListScrolled(index) {\n return this.containerScrollPosition !== this.rowHeightService.offset(index);\n }\n scrollTo(value) {\n const scrollProperty = this.direction === \"vertical\" ? 'scrollTop' : 'scrollLeft';\n this.renderer.setProperty(this.container.nativeElement, scrollProperty, value);\n }\n scrollToIndex(index) {\n //XXX: scrolling with tick is required to prevent list jump in Chrome.\n //Original issue: focus first day in the month and press LEFT arrow.\n //Notice how the view jumps on every day change.\n //\n this.zone.runOutsideAngular(() => {\n this.resolvedPromise.then(() => {\n this.scrollTo(this.rowHeightService.offset(index));\n });\n });\n }\n scrollToBottom() {\n this.scrollTo(this.totalSize);\n }\n animateToIndex(index) {\n if (this.animationSubscription) {\n this.animationSubscription.unsubscribe();\n }\n const indexOffset = this.rowHeightService.offset(index);\n const direction = this.getContainerScrollDirection(indexOffset);\n const { start, end } = this.scrollRange(indexOffset, direction);\n if (start === end) {\n return;\n }\n const step = this.scrollStep(start, end);\n const modifyScroll = scrollModifiers[direction](step);\n const normalizeScroll = scrollNormalizers[direction](end);\n const isScrollValid = scrollValidators[direction](modifyScroll(end));\n this.zone.runOutsideAngular(() => {\n this.animationSubscription =\n combineLatest(of(start), interval(0, animationFrameScheduler)).pipe(map(stream => stream[0]), scan(modifyScroll), takeWhile(isScrollValid), map(normalizeScroll)).subscribe((x) => this.scrollTo(x));\n });\n }\n scrollRange(indexOffset, direction) {\n const containerScroll = this.containerScrollPosition;\n if (parseInt(indexOffset, 10) === parseInt(containerScroll, 10)) {\n return { start: indexOffset, end: indexOffset };\n }\n const maxScroll = this.containerMaxScroll();\n const sign = direction === ScrollDirection.Backward ? 1 : -1;\n const difference = differenceToScroll(containerScroll, indexOffset, this.maxScrollDifference);\n const end = Math.min(indexOffset, maxScroll);\n const start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n return { start, end };\n }\n scrollStep(start, end) {\n return Math.abs(end - start) / (this.scrollDuration / FRAME_DURATION);\n }\n scroll$() {\n return isDocumentAvailable() ? fromEvent(this.container.nativeElement, 'scroll') : EMPTY;\n }\n initServices() {\n this.rowHeightService = this.createRowHeightService();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n this.scrollSubscription = this.scroller\n .create(this.rowHeightService, this.skip, this.take, this.total, this.topOffset, this.scrollOffsetSize, this.direction)\n .subscribe((x) => {\n if (x instanceof PageAction) {\n this.pageChange.emit(x);\n }\n else {\n this.scrollChange.emit(x);\n }\n });\n }\n createRowHeightService() {\n const dimension = this.direction === 'vertical' ? this.itemHeight : this.itemWidth;\n return new RowHeightService(this.total, dimension, 0);\n }\n emitActiveIndex() {\n const index = this.rowHeightService.index(this.containerScrollPosition - this.topOffset);\n if (this.lastActiveIndex !== index) {\n this.lastActiveIndex = index;\n this.activeIndexChange.emit(index);\n }\n }\n containerMaxScroll() {\n return this.containerScrollSize - this.containerOffsetSize;\n }\n getContainerScrollDirection(indexOffset) {\n return indexOffset < this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n }\n}\nVirtualizationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nVirtualizationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: { direction: \"direction\", itemHeight: \"itemHeight\", itemWidth: \"itemWidth\", topOffset: \"topOffset\", bottomOffset: \"bottomOffset\", maxScrollDifference: \"maxScrollDifference\", scrollOffsetSize: \"scrollOffsetSize\", scrollDuration: \"scrollDuration\", skip: \"skip\", take: \"take\", total: \"total\" }, outputs: { activeIndexChange: \"activeIndexChange\", pageChange: \"pageChange\", scrollChange: \"scrollChange\" }, host: { properties: { \"class.k-flex\": \"this.wrapperClasses\", \"class.k-content\": \"this.wrapperClasses\", \"class.k-calendar-content\": \"this.wrapperClasses\", \"class.k-scrollable\": \"this.wrapperClasses\", \"class.k-scrollable-horizontal\": \"this.horizontalClass\" } }, providers: [{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }], usesOnChanges: true, ngImport: i0, template: `\n \n \n `, isInline: true, directives: [{ type: i7.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }],\n selector: 'kendo-virtualization',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [SCROLLER_FACTORY_TOKEN]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { direction: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], itemWidth: [{\n type: Input\n }], topOffset: [{\n type: Input\n }], bottomOffset: [{\n type: Input\n }], maxScrollDifference: [{\n type: Input\n }], scrollOffsetSize: [{\n type: Input\n }], scrollDuration: [{\n type: Input\n }], skip: [{\n type: Input\n }], take: [{\n type: Input\n }], total: [{\n type: Input\n }], activeIndexChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], scrollChange: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-flex']\n }, {\n type: HostBinding,\n args: ['class.k-content']\n }, {\n type: HostBinding,\n args: ['class.k-calendar-content']\n }, {\n type: HostBinding,\n args: ['class.k-scrollable']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-scrollable-horizontal']\n }] } });\n\nconst div$1 = domContainerFactory('div');\nconst ul$1 = domContainerFactory('ul');\nconst li$1 = domContainerFactory('li');\nconst td = domContainerFactory('td');\nconst th = domContainerFactory('th');\nconst tr = domContainerFactory('tr');\nconst tbody = domContainerFactory('tbody');\nconst thead = domContainerFactory('thead');\nconst table = domContainerFactory('table');\nconst monthHeader = () => (div$1(`\n March 2017\n \n \n TODAY\n \n `, 'k-calendar-header k-hstack'));\nconst monthWeekHeader = () => (table([\n thead([\n tr([th('MO', 'k-calendar-th')], 'k-calendar-tr')\n ], 'k-calendar-thead')\n], 'k-calendar-weekdays k-calendar-table'));\nconst repeat = (count, mapper) => new Array(count).fill('1').map(mapper);\nconst content = (rows, cells = 1) => (table([\n tbody([tr([th('1', 'k-calendar-th')], 'k-calendar-tr')].concat(repeat(rows, () => tr(repeat(cells, c => td(`${c}`, 'k-calendar-td')), 'k-calendar-tr'))), 'k-calendar-tbody')\n], 'k-calendar-table'));\nconst scrollable$1 = (children) => div$1(children, 'k-flex k-content k-calendar-content k-scrollable');\nconst view = (contentElement, className, renderWeekHeader) => (div$1([\n monthHeader(),\n renderWeekHeader ? monthWeekHeader() : null,\n scrollable$1([contentElement, contentElement])\n], className, { left: '-10000px', position: 'absolute' }));\nconst navigationList = (() => {\n let navElement;\n return () => {\n if (!isDocumentAvailable) {\n return null;\n }\n if (!navElement) {\n navElement = div$1([scrollable$1([ul$1([li$1('FEB')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n }\n return navElement;\n };\n})();\nconst viewFactory = ({ cells, rows }, className, renderWeekHeader) => {\n let viewElement;\n return () => {\n if (!isDocumentAvailable) {\n return null;\n }\n if (!viewElement) {\n viewElement = view(content(rows, cells), className, renderWeekHeader);\n }\n return viewElement;\n };\n};\nconst getScrollable = (element) => element.querySelector('.k-scrollable');\nconst horizontal = element => {\n const scrollableElement = getScrollable(element);\n scrollableElement.classList.add('k-scrollable-horizontal');\n return element;\n};\nconst monthView = viewFactory({ cells: 7, rows: 6 }, 'k-vstack k-calendar-view k-calendar-monthview', true);\nconst yearView = viewFactory({ cells: 4, rows: 3 }, 'k-vstack k-calendar-view k-calendar-yearview', false);\nconst decadeView = viewFactory({ cells: 4, rows: 3 }, 'k-vstack k-calendar-view k-calendar-decadeview', false);\nconst horzMonthView = () => horizontal(monthView());\nconst horzYearView = () => horizontal(yearView());\nconst horzDecadeView = () => horizontal(decadeView());\nconst height = (element) => (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight);\nconst width = (element) => {\n const styles = window.getComputedStyle(element);\n const computed = parseFloat(styles.width)\n + parseFloat(styles.paddingLeft)\n + parseFloat(styles.paddingRight);\n return computed || element.offsetWidth;\n};\nconst getBody = (element) => element.querySelector('tbody');\n/**\n * @hidden\n */\nclass CalendarDOMService {\n ensureHeights() {\n if (this.calendarHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n }\n calculateHeights(container) {\n if (!isDocumentAvailable()) {\n return;\n }\n this.hostContainer = container;\n this.batch(monthView(), (contentElement) => {\n const viewElement = getBody(contentElement);\n this.calendarHeight = height(contentElement);\n this.monthViewHeight = height(viewElement);\n this.headerHeight = height(viewElement.children[0]);\n this.scrollableContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzMonthView(), (contentElement) => {\n const viewElement = getBody(contentElement);\n this.calendarWidth = width(contentElement);\n this.monthViewWidth = width(viewElement);\n this.scrollableContentWidth = width(getScrollable(contentElement));\n });\n this.batch(yearView(), (contentElement) => {\n this.yearViewHeight = height(getBody(contentElement));\n this.scrollableYearContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzYearView(), (contentElement) => {\n this.yearViewWidth = width(getBody(contentElement));\n });\n this.batch(decadeView(), (contentElement) => {\n this.decadeViewHeight = height(getBody(contentElement));\n this.centuryViewHeight = this.decadeViewHeight;\n });\n this.batch(horzDecadeView(), (contentElement) => {\n this.decadeViewWidth = width(getBody(contentElement));\n this.centuryViewWidth = this.decadeViewWidth;\n });\n this.batch(navigationList(), (contentElement) => {\n this.navigationItemHeight = height(contentElement.querySelector('li'));\n });\n }\n viewHeight(viewType) {\n return this.viewDimension(viewType, 'height');\n }\n viewWidth(viewType) {\n return this.viewDimension(viewType, 'width');\n }\n viewDimension(viewType, dimension) {\n const viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n switch (viewType) {\n case CalendarViewEnum.month:\n return this[`month${viewProp}`];\n case CalendarViewEnum.year:\n return this[`year${viewProp}`];\n case CalendarViewEnum.decade:\n return this[`decade${viewProp}`];\n case CalendarViewEnum.century:\n return this[`century${viewProp}`];\n default:\n return 1;\n }\n }\n batch(contentElement, action) {\n if (!isPresent(this.hostContainer)) {\n return;\n }\n const hostClone = this.hostContainer.cloneNode();\n document.body.appendChild(hostClone);\n try {\n const appendedContent = hostClone.appendChild(contentElement);\n action(appendedContent);\n }\n catch (error) {\n throw error;\n }\n finally {\n document.body.removeChild(hostClone);\n }\n }\n}\nCalendarDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService, decorators: [{\n type: Injectable\n }] });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nclass NavigationComponent {\n constructor(bus, dom, intl, cdr, renderer) {\n this.bus = bus;\n this.dom = dom;\n this.intl = intl;\n this.cdr = cdr;\n this.renderer = renderer;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.focusedDate = new Date();\n this.valueChange = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.dates = [];\n this.take = ITEMS_COUNT;\n this.indexToScroll = -1;\n }\n get getComponentClass() {\n return true;\n }\n ngOnInit() {\n this.dom.ensureHeights();\n const calendarHeight = this.dom.calendarHeight;\n this.itemHeight = this.dom.navigationItemHeight;\n this.maxViewHeight = this.dom.monthViewHeight;\n this.topOffset = (calendarHeight - this.itemHeight) / 2;\n this.bottomOffset = calendarHeight - this.itemHeight;\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.activeViewValue = CalendarViewEnum[this.activeView];\n const viewDate = dateInRange(this.focusedDate, this.min, this.max);\n const total = this.service.total(this.min, this.max);\n const totalChanged = this.total && this.total !== total;\n this.skip = this.service.skip(viewDate, this.min);\n this.total = total;\n if (totalChanged || !this.service.isInArray(viewDate, this.dates)) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n }\n if (!!changes.focusedDate || totalChanged) {\n this.indexToScroll = this.service.skip(this.focusedDate, this.min);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n ngAfterViewChecked() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n onPageChange({ skip }) {\n this.dates = this.service.datesList(this.service.addToDate(this.min, skip), this.getTake(skip));\n this.pageChange.emit();\n }\n scrollChange({ offset }) {\n const el = this.list.nativeElement;\n const translate = `translateY(${offset}px)`;\n this.renderer.setStyle(el, 'transform', translate);\n this.renderer.setStyle(el, '-ms-transform', translate);\n }\n handleDateChange(args) {\n const item = closestInScope(args.target, node => node.hasAttribute('data-date-index'), this.list.nativeElement);\n if (item) {\n const index = parseInt(item.getAttribute('data-date-index'), 10);\n const candidate = this.dates[index];\n this.valueChange.emit(cloneDate(candidate));\n }\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.take);\n }\n intlChange() {\n if (this.activeView === CalendarViewEnum.month) {\n this.cdr.markForCheck();\n }\n }\n}\nNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigationComponent, selector: \"kendo-calendar-navigation\", inputs: { activeView: \"activeView\", min: \"min\", max: \"max\", focusedDate: \"focusedDate\", templateRef: \"templateRef\" }, outputs: { valueChange: \"valueChange\", pageChange: \"pageChange\" }, host: { properties: { \"class.k-calendar-navigation\": \"this.getComponentClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
  • \n \n {{service.navigationTitle(date)}}\n \n \n
  • \n
\n \n `, isInline: true, components: [{ type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }], directives: [{ type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-navigation',\n template: `\n \n \n
    \n
  • \n \n {{service.navigationTitle(date)}}\n \n \n
  • \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { activeView: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-navigation\"]\n }] } });\n\nconst VIEWS_COUNT = 5;\nconst isEqualMonthYear = (date1, date2) => (date1 && date2 &&\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth());\n/**\n * @hidden\n */\nclass ViewListComponent {\n constructor(bus, cdr, intl, dom, renderer) {\n this.bus = bus;\n this.cdr = cdr;\n this.intl = intl;\n this.dom = dom;\n this.renderer = renderer;\n this.isActive = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.selectedDates = [];\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.activeDateChange = new EventEmitter();\n this.todayButtonClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.getComponentClass = true;\n this.dates = [];\n this.cols = [];\n this.weekNames = [];\n this.take = VIEWS_COUNT;\n this.animateToIndex = true;\n this.indexToScroll = -1;\n this.minViewsToRender = 1;\n }\n get weekNumber() {\n return this.showWeekNumbers && this.isMonthView();\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n get getComponentMonthClass() {\n return this.activeView === CalendarViewEnum.month;\n }\n get getComponentYearClass() {\n return this.activeView === CalendarViewEnum.year;\n }\n get getComponentDecadeClass() {\n return this.activeView === CalendarViewEnum.decade;\n }\n get getComponentCenturyClass() {\n return this.activeView === CalendarViewEnum.century;\n }\n ngOnInit() {\n this.weekNames = this.getWeekNames();\n this.bottomOffset = this.getBottomOffset();\n this.viewOffset = -1 * this.dom.headerHeight;\n this.viewHeight = this.dom.viewHeight(this.activeView);\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.cols = new Array(this.service.rowLength({ prependCell: this.weekNumber })).fill('');\n this.colWidth = Math.round(100 / this.cols.length);\n this.weekNames = hasChange(changes, 'weekNumber') && this.weekNumber ? this.getWeekNames() : this.weekNames;\n const activeViewChanged = hasChange(changes, 'activeView');\n const focusedDate = this.focusedDate;\n const viewDate = dateInRange(this.service.viewDate(focusedDate, this.max, this.minViewsToRender), this.min, this.max);\n const total = this.service.total(this.min, this.max);\n const totalChanged = this.total && this.total !== total;\n const generateDates = totalChanged || !this.service.isInArray(focusedDate, this.dates);\n this.skip = this.service.skip(viewDate, this.min);\n this.total = total;\n this.animateToIndex = !activeViewChanged;\n this.bottomOffset = this.getBottomOffset();\n this.viewHeight = this.dom.viewHeight(this.activeView);\n if (generateDates) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n }\n if (!isEqualMonthYear(this.activeDate, focusedDate)) {\n this.activeDate = cloneDate(focusedDate);\n }\n const updateIndex = hasChange(changes, 'focusedDate') || activeViewChanged;\n if (generateDates || updateIndex || this.virtualization.isIndexVisible(this.skip)) {\n this.indexToScroll = this.service.skip(focusedDate, this.min);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n ngAfterViewChecked() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization[this.animateToIndex ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n this.animateToIndex = true;\n this.indexToScroll = -1;\n }\n onPageChange({ skip }) {\n this.dates = this.service.datesList(this.service.addToDate(this.min, skip), this.getTake(skip));\n this.pageChange.emit();\n }\n scrollChange({ offset }) {\n const el = this.list.nativeElement;\n const translate = `translateY(${offset}px)`;\n this.renderer.setStyle(el, 'transform', translate);\n this.renderer.setStyle(el, '-ms-transform', translate);\n }\n setActiveDate(index) {\n const candidate = this.service.addToDate(this.min, index);\n this.activeDate = candidate;\n this.activeDateChange.emit(candidate);\n this.cdr.detectChanges();\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n isScrolled() {\n return this.virtualization.isListScrolled(this.service.skip(this.focusedDate, this.min));\n }\n getBottomOffset() {\n return this.getScrollableHeight() - this.dom.viewHeight(this.activeView);\n }\n getScrollableHeight() {\n return this.activeView === CalendarViewEnum.month ?\n this.dom.scrollableContentHeight :\n this.dom.scrollableYearContentHeight;\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.take);\n }\n getWeekNames() {\n const weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return this.weekNumber ? [''].concat(weekNames) : weekNames;\n }\n intlChange() {\n this.weekNames = this.getWeekNames();\n if (this.isMonthView()) {\n this.cdr.markForCheck();\n }\n }\n}\nViewListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewListComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: CalendarDOMService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nViewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ViewListComponent, selector: \"kendo-calendar-viewlist\", inputs: { cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", headerTitleTemplateRef: \"headerTitleTemplateRef\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", isActive: \"isActive\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", activeDateChange: \"activeDateChange\", todayButtonClick: \"todayButtonClick\", pageChange: \"pageChange\" }, host: { properties: { \"class.k-vstack\": \"this.getComponentClass\", \"class.k-calendar-view\": \"this.getComponentClass\", \"class.k-calendar-monthview\": \"this.getComponentMonthClass\", \"class.k-calendar-yearview\": \"this.getComponentYearClass\", \"class.k-calendar-decadeview\": \"this.getComponentDecadeClass\", \"class.k-calendar-centuryview\": \"this.getComponentCenturyClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n
{{name}}
\n \n \n \n\n \n \n \n `, isInline: true, components: [{ type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: [\"activeView\", \"currentDate\", \"min\", \"max\", \"rangeLength\", \"templateRef\", \"isPrevDisabled\", \"isNextDisabled\", \"showNavigationButtons\"], outputs: [\"todayButtonClick\", \"prevButtonClick\", \"nextButtonClick\"] }, { type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }, { type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: [\"direction\", \"isActive\", \"activeView\", \"cellUID\", \"focusedDate\", \"viewDate\", \"activeRangeEnd\", \"selectionRange\", \"min\", \"max\", \"selectedDates\", \"weekNumber\", \"viewIndex\", \"templateRef\", \"weekNumberTemplateRef\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\"] }], directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewListComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-viewlist',\n template: `\n \n \n \n \n \n \n \n \n
{{name}}
\n \n \n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: CalendarDOMService }, { type: i0.Renderer2 }]; }, propDecorators: { cellTemplateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], headerTitleTemplateRef: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], todayButtonClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-vstack\"]\n }, {\n type: HostBinding,\n args: [\"class.k-calendar-view\"]\n }], getComponentMonthClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-monthview\"]\n }], getComponentYearClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-yearview\"]\n }], getComponentDecadeClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-decadeview\"]\n }], getComponentCenturyClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-centuryview\"]\n }] } });\n\nconst divideByMagnitude = (magnitude) => x => Math.floor(x / magnitude);\nconst powerByMagnitude = (magnitude) => x => x * magnitude;\n/**\n * @hidden\n */\nclass ScrollSyncService {\n constructor(dom, zone) {\n this.dom = dom;\n this.zone = zone;\n }\n configure(activeView) {\n const magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n this.divideByMagnitude = divideByMagnitude(magnitude);\n this.powerByMagnitude = powerByMagnitude(magnitude);\n }\n sync(navigator, view) {\n this.unsubscribe();\n if (!navigator || !view) {\n return;\n }\n this.navigator = navigator;\n this.view = view;\n this.zone.runOutsideAngular(() => {\n let navScrolled, monthScrolled;\n this.navSubscription = navigator.scroll$()\n .subscribe((e) => {\n if (monthScrolled) {\n monthScrolled = false;\n return;\n }\n navScrolled = true;\n this.scrollSiblingOf(e.target);\n });\n this.viewSubscription = view.scroll$()\n .subscribe((e) => {\n if (navScrolled) {\n navScrolled = false;\n return;\n }\n monthScrolled = true;\n this.scrollSiblingOf(e.target);\n });\n });\n }\n scrollSiblingOf(scrolledElement) {\n const component = this.siblingComponent(scrolledElement);\n const scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n component.scrollTo(scrollTop);\n }\n siblingComponent(scrollableElement) {\n return this.navigator.container.nativeElement === scrollableElement ? this.view : this.navigator;\n }\n calculateScroll(component, scrollTop) {\n const modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n return modifier(scrollTop);\n }\n destroy() {\n this.unsubscribe();\n }\n unsubscribe() {\n if (this.navSubscription) {\n this.navSubscription.unsubscribe();\n }\n if (this.viewSubscription) {\n this.viewSubscription.unsubscribe();\n }\n }\n}\nScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, deps: [{ token: CalendarDOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: CalendarDOMService }, { type: i0.NgZone }]; } });\n\n/**\n * Used for rendering the navigation item of the Calendar. To define the navigation item template, nest an ``\n * tag with the `kendoCalendarNavigationItemTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current item value, use the `let-title` directive. To provide more details\n * about the current title, get a reference to the current `date` by using the `let-date='date'` directive or get a reference\n * to the current active view by using the `let-activeView='activeView'` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{title}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass NavigationItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNavigationItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNavigationItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigationItemTemplateDirective, selector: \"[kendoCalendarNavigationItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarNavigationItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass PickerService {\n constructor() {\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.sameDateSelected = new EventEmitter();\n this.dateCompletenessChange = new EventEmitter();\n }\n}\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass MultiViewCalendarCustomMessagesComponent extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nMultiViewCalendarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nMultiViewCalendarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarCustomMessagesComponent, selector: \"kendo-multiviewcalendar-messages\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-multiviewcalendar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass CalendarMessages extends ComponentMessages {\n}\nCalendarMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nCalendarMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarMessages, selector: \"kendo-calendar-messages-base\", inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-calendar-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass CalendarLocalizedMessagesDirective extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nCalendarLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nCalendarLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarLocalizedMessagesDirective, selector: \"[kendoCalendarLocalizedMessages]\", providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoCalendarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst BOTTOM_VIEW_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-bottomview';\nconst TOP_VIEW_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-topview';\nconst MIN_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-min';\nconst MAX_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-max';\nconst VALUE_DOC_LINK$4 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/#toc-using-with-json';\nconst virtualizationProp = x => x ? x.virtualization : null;\n/**\n * @hidden\n */\nconst CALENDAR_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * @hidden\n */\nconst CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * @hidden\n */\nconst KENDO_INPUT_PROVIDER = {\n provide: KendoInput,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * Represents the [Kendo UI Calendar component for Angular]({% slug overview_calendar %}#toc-basic-usage).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass CalendarComponent {\n constructor(bus, dom, element, navigator, renderer, cdr, ngZone, injector, scrollSyncService, disabledDatesService, localization, selectionService, pickerService) {\n this.bus = bus;\n this.dom = dom;\n this.element = element;\n this.navigator = navigator;\n this.renderer = renderer;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.injector = injector;\n this.scrollSyncService = scrollSyncService;\n this.disabledDatesService = disabledDatesService;\n this.localization = localization;\n this.selectionService = selectionService;\n this.pickerService = pickerService;\n /**\n * @hidden\n */\n this.id = guid();\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = false;\n /**\n * Sets the Calendar selection mode\n * ([see example]({% slug multiple_selection_calendar %})).\n *\n * The available values are:\n * * `single` (default)\n * * `multiple`\n */\n this.selection = 'single';\n /**\n * Sets or gets the `disabled` property of the Calendar and\n * determines whether the component is active\n * ([see example]({% slug disabled_calendar %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the `tabindex` property of the Calendar. Based on the\n * [HTML `tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) behavior,\n * it determines whether the component is focusable.\n */\n this.tabindex = 0;\n /**\n * Sets or gets the `navigation` property of the Calendar\n * and determines whether the navigation side-bar will be displayed\n * ([see example]({% slug sidebar_calendar %})).\n * Applies to the [`infinite`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n */\n this.navigation = true;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug activeview_calendar %})).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost view to which the user can navigate\n * ([see example]({% slug dates_calendar %}#toc-partial-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost view to which the user can navigate\n * ([see example]({% slug sidebar_calendar %}#toc-partial-dates)).\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Determines whether to enable animation when navigating to previous/next view.\n * Applies to the [`classic`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view\n * ([see example]({% slug weeknumcolumn_calendar %})).\n */\n this.weekNumber = false;\n /**\n * Fires when the active view is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Fires when navigating in the currently active view\n * ([more information and example]({% slug events_calendar %})).\n */\n this.navigate = new EventEmitter();\n /**\n * Fires when the active view date is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n * Applies to the [`infinite`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n */\n this.activeViewDateChange = new EventEmitter();\n /**\n * Fires when the value is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n this.isActive = false;\n this.cellUID = guid();\n this.selectedDates = [];\n this._min = new Date(MIN_DATE);\n this._max = new Date(MAX_DATE);\n this._focusedDate = getToday();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.syncNavigation = true;\n this._type = 'infinite';\n this.domEvents = [];\n this.resolvedPromise = Promise.resolve(null);\n this.destroyed = false;\n validatePackage(packageMetadata);\n this.setClasses(element.nativeElement);\n if (this.pickerService) {\n this.pickerService.calendar = this;\n }\n }\n /**\n * Sets or gets the `focusedDate` property of the Calendar and\n * defines the focused date of the component\n * ([see example]({% slug dates_calendar %}#toc-focused-dates)).\n *\n * > If the Calendar is out of the min or max range, it normalizes the defined `focusedDate`.\n */\n set focusedDate(focusedDate) {\n if (this.activeViewDate && !isEqual(this._focusedDate, focusedDate)) {\n const service = this.bus.service(this.activeViewEnum);\n const lastDayInPeriod = service.lastDayOfPeriod(this.activeViewDate);\n const isFocusedDateInRange = service.isInRange(focusedDate, this.activeViewDate, lastDayInPeriod);\n if (!isFocusedDateInRange) {\n this.emitNavigate(focusedDate);\n }\n }\n this._focusedDate = focusedDate || getToday();\n this.setAriaActivedescendant();\n }\n get focusedDate() {\n return this._focusedDate;\n }\n /**\n * Sets or gets the `min` property of the Calendar and\n * defines the minimum allowed date value\n * ([see example]({% slug dateranges_calendar %})).\n * By default, the `min` value is `1900-1-1`.\n */\n set min(min) {\n this._min = min || new Date(MIN_DATE);\n }\n get min() {\n return this._min;\n }\n /**\n * Sets or gets the `max` property of the Calendar and\n * defines the maximum allowed date value\n * ([see example]({% slug dateranges_calendar %})).\n * By default, the `max` value is `2099-12-31`.\n */\n set max(max) {\n this._max = max || new Date(MAX_DATE);\n }\n get max() {\n return this._max;\n }\n /**\n * Sets or gets the `value` property of the Calendar and defines the selected value of the component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date)\n * instance when in `single` selection mode or an array of valid JavaScript Date instances when in `multiple` selection mode.\n */\n get value() {\n return this._value;\n }\n set value(candidate) {\n this.verifyValue(candidate);\n this._value = Array.isArray(candidate) ?\n candidate.filter(date => isPresent(date)).map(element => cloneDate(element)) :\n cloneDate(candidate);\n const selection = [].concat(candidate).filter(date => isPresent(date)).map(date => cloneDate(date));\n if (!areDatesEqual(selection, this.selectedDates)) {\n const lastSelected = last(selection);\n this.rangePivot = cloneDate(lastSelected);\n this.focusedDate = cloneDate(lastSelected) || this.focusedDate;\n this.selectedDates = selection;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the Calendar that will be disabled\n * ([see example]({% slug disabled_dates_calendar %})).\n */\n set disabledDates(value) {\n this.disabledDatesService.initialize(value);\n this._disabledDates = value;\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n set type(type) {\n this.renderer.removeClass(this.element.nativeElement, `k-calendar-${this.type}`);\n this.renderer.addClass(this.element.nativeElement, `k-calendar-${type}`);\n this._type = type;\n }\n get type() {\n return this._type;\n }\n /**\n * @hidden\n *\n * Defines the template for each cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set cellTemplateRef(template) {\n this._cellTemplateRef = template;\n }\n get cellTemplateRef() {\n return this._cellTemplateRef || this.cellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each month cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set monthCellTemplateRef(template) {\n this._monthCellTemplateRef = template;\n }\n get monthCellTemplateRef() {\n return this._monthCellTemplateRef || this.monthCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each year cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set yearCellTemplateRef(template) {\n this._yearCellTemplateRef = template;\n }\n get yearCellTemplateRef() {\n return this._yearCellTemplateRef || this.yearCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each decade cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set decadeCellTemplateRef(template) {\n this._decadeCellTemplateRef = template;\n }\n get decadeCellTemplateRef() {\n return this._decadeCellTemplateRef || this.decadeCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each century cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set centuryCellTemplateRef(template) {\n this._centuryCellTemplateRef = template;\n }\n get centuryCellTemplateRef() {\n return this._centuryCellTemplateRef || this.centuryCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the week cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set weekNumberTemplateRef(template) {\n this._weekNumberTemplateRef = template;\n }\n get weekNumberTemplateRef() {\n return this._weekNumberTemplateRef || this.weekNumberTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the header title.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set headerTitleTemplateRef(template) {\n this._headerTitleTemplateRef = template;\n }\n get headerTitleTemplateRef() {\n return this._headerTitleTemplateRef || this.headerTitleTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the navigation item.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set navigationItemTemplateRef(template) {\n this._navigationItemTemplateRef = template;\n }\n get navigationItemTemplateRef() {\n return this._navigationItemTemplateRef || this.navigationItemTemplate;\n }\n get activeViewEnum() {\n const activeView = CalendarViewEnum[this.activeView];\n return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;\n }\n get bottomViewEnum() {\n return CalendarViewEnum[this.bottomView];\n }\n get topViewEnum() {\n return CalendarViewEnum[this.topView];\n }\n get widgetId() {\n return this.id;\n }\n get calendarTabIndex() {\n // in Classic mode, the inner MultiViewCalendar is the focusable element\n return this.disabled || this.type === 'classic' ? undefined : this.tabIndex;\n }\n get ariaDisabled() {\n // in Classic mode, the inner MultiViewCalendar should handle the disabled class and aria attr\n return this.type === 'classic' ? undefined : this.disabled;\n }\n ngOnInit() {\n this.dom.calculateHeights(this.element.nativeElement);\n this.scrollSyncService.configure(this.activeViewEnum);\n this.localizationChangeSubscription = this.localization.changes.subscribe(() => this.cdr.markForCheck());\n this.viewChangeSubscription = this.bus.viewChanged.subscribe(({ view }) => this.handleActiveViewChange(CalendarViewEnum[view]));\n this.control = this.injector.get(NgControl, null);\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnChanges(changes) {\n this.verifyChanges();\n this.bus.configure(this.bottomViewEnum, this.topViewEnum);\n this.scrollSyncService.configure(this.activeViewEnum);\n if (hasExistingValue(changes, 'focusedDate')) {\n const focusedDate = changes.focusedDate.currentValue;\n this.focusedDate = dateInRange(focusedDate, this.min, this.max);\n }\n if (changes.navigation) {\n this.syncNavigation = true;\n }\n if (changes.min || changes.max || changes.rangeValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.onValidatorChange();\n }\n }\n ngAfterViewInit() {\n this.setAriaActivedescendant();\n }\n ngAfterViewChecked() {\n if (!this.syncNavigation) {\n return;\n }\n this.syncNavigation = false;\n this.scrollSyncService.sync(virtualizationProp(this.navigationView), virtualizationProp(this.monthView));\n }\n ngOnDestroy() {\n this.scrollSyncService.destroy();\n this.domEvents.forEach(unbindCallback => unbindCallback());\n if (this.pickerService) {\n this.pickerService.calendar = null;\n }\n if (this.viewChangeSubscription) {\n this.viewChangeSubscription.unsubscribe();\n }\n if (this.pageChangeSubscription) {\n this.pageChangeSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n this.destroyed = true;\n }\n /**\n * @hidden\n */\n onResize() {\n this.focusedDate = new Date(this.focusedDate);\n this.cdr.detectChanges();\n }\n /**\n * Focuses the host element of the Calendar.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const focusTarget = this.type === 'infinite' ?\n this.element && this.element.nativeElement :\n this.multiViewCalendar;\n if (isPresent(focusTarget)) {\n focusTarget.focus();\n }\n }\n /**\n * Blurs the Calendar component.\n */\n blur() {\n const blurTarget = this.type === 'infinite' ?\n this.element && this.element.nativeElement :\n this.multiViewCalendar;\n if (isPresent(blurTarget)) {\n blurTarget.blur();\n }\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.element.nativeElement));\n }\n /**\n * @hidden\n */\n handleNavigation(candidate) {\n if (this.disabled) {\n return;\n }\n const focusTarget = candidate ? new Date(cloneDate(candidate).setDate(1)) : this.focusedDate;\n this.focusedDate = dateInRange(focusTarget, this.min, this.max);\n this.detectChanges();\n }\n /**\n * @hidden\n */\n onPageChange() {\n if (!NgZone.isInAngularZone()) {\n if (this.pageChangeSubscription) {\n this.pageChangeSubscription.unsubscribe();\n }\n this.pageChangeSubscription = from(this.resolvedPromise)\n .subscribe(() => {\n this.detectChanges(); // requires zone if templates\n });\n }\n }\n /**\n * @hidden\n */\n handleMultiViewCalendarValueChange(date, focusedDate) {\n const selectedDates = Array.isArray(date) ? date : [date];\n this.handleDateChange({ selectedDates, focusedDate });\n }\n /**\n * @hidden\n */\n handleDateChange(args) {\n const selectedDates = Array.isArray(args.selectedDates) ? args.selectedDates : [args.selectedDates];\n const canNavigateDown = this.bus.canMoveDown(this.activeViewEnum);\n const availableDates = selectedDates.filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.focusedDate = args.focusedDate || this.focusedDate;\n if (this.disabled) {\n return;\n }\n if (!canNavigateDown && areDatesEqual(availableDates, this.selectedDates)) {\n this.emitSameDate();\n return;\n }\n if (canNavigateDown) {\n this.bus.moveDown(this.activeViewEnum);\n return;\n }\n if (this.disabledDatesService.isDateDisabled(this.focusedDate)) {\n return;\n }\n this.ngZone.run(() => {\n this.selectedDates = availableDates.map(date => cloneDate(date));\n this.value = this.parseSelectionToValue(availableDates);\n this.onControlChange(this.parseSelectionToValue(availableDates));\n this.valueChange.emit(this.parseSelectionToValue(availableDates));\n this.cdr.markForCheck();\n });\n }\n /**\n * @hidden\n */\n writeValue(candidate) {\n this.verifyValue(candidate);\n this.value = candidate;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n activeCellTemplate() {\n switch (this.activeViewEnum) {\n case CalendarViewEnum.month:\n return this.monthCellTemplateRef || this.cellTemplateRef;\n case CalendarViewEnum.year:\n return this.yearCellTemplateRef;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplateRef;\n case CalendarViewEnum.century:\n return this.centuryCellTemplateRef;\n default:\n return null;\n }\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n this.focusedDate = event.focusedDate;\n this.activeView = event.activeView;\n this.emitNavigate(this.focusedDate);\n }\n /**\n * @hidden\n */\n emitNavigate(focusedDate) {\n const activeView = CalendarViewEnum[this.activeViewEnum];\n this.navigate.emit({ activeView, focusedDate });\n }\n /**\n * @hidden\n */\n emitEvent(emitter, args) {\n if (hasObservers(emitter)) {\n this.ngZone.run(() => {\n emitter.emit(args);\n });\n }\n }\n /**\n * @hidden\n */\n handleActiveDateChange(date) {\n this.activeViewDate = date;\n this.emitEvent(this.activeViewDateChange, date);\n }\n /**\n * @hidden\n */\n handleActiveViewChange(view) {\n this.activeView = view;\n this.emitEvent(this.activeViewChange, view);\n if (this.type === 'infinite') {\n this.scrollSyncService.configure(this.activeViewEnum);\n }\n this.detectChanges(); // requires zone if templates\n }\n /**\n * @hidden\n */\n handleCellClick({ date, modifiers }) {\n this.performSelection(date, modifiers);\n }\n /**\n * @hidden\n */\n handleWeekNumberClick(dates) {\n if (this.selection === 'single') {\n return;\n }\n this.ngZone.run(() => {\n this.handleDateChange({\n selectedDates: dates,\n focusedDate: last(dates)\n });\n });\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n if (this.element.nativeElement.contains(args.relatedTarget)) {\n return;\n }\n this.isActive = false;\n // the injector can get the NgControl instance of the parent component (for example, the DateTimePicker)\n // and enters the zone for no reason because the parent component is still untouched\n if (!this.pickerService && requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.onControlTouched();\n this.emitBlur(args);\n this.cdr.markForCheck();\n });\n }\n else {\n this.emitBlur(args);\n this.detectChanges();\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isActive = true;\n if (!NgZone.isInAngularZone()) {\n this.detectChanges();\n }\n this.emitFocus();\n }\n /**\n * @hidden\n */\n handleMultiViewCalendarKeydown(args) {\n // Prevent form from submitting on enter if used in datepicker (classic view)\n if (isPresent(this.pickerService) && args.keyCode === Keys.Enter) {\n args.preventDefault();\n }\n }\n setClasses(element) {\n this.renderer.addClass(element, 'k-widget');\n this.renderer.addClass(element, 'k-calendar');\n this.renderer.addClass(element, `k-calendar-${this.type}`);\n }\n verifyChanges() {\n if (!isDevMode()) {\n return;\n }\n if (this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$2} and ${MAX_DOC_LINK$2}.`);\n }\n if (this.bottomViewEnum > this.topViewEnum) {\n throw new Error(`The topView should be greater than bottomView. See ${BOTTOM_VIEW_DOC_LINK} and ${TOP_VIEW_DOC_LINK}.`);\n }\n }\n verifyValue(candidate) {\n if (!isDevMode()) {\n return;\n }\n if (this.selection === 'single' && candidate && !(candidate instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$4} for possible resolution.`);\n }\n else if (this.selection === 'multiple' && candidate && Array.isArray(candidate)) {\n const onlyDates = candidate.every(value => value instanceof Date);\n if (!onlyDates) {\n throw new Error(`The 'value' should be an array of valid JavaScript Date instances. Check ${VALUE_DOC_LINK$4} for possible resolution.`);\n }\n }\n }\n bindEvents() {\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'blur', this.handleBlur.bind(this)), this.renderer.listen(element, 'focus', this.handleFocus.bind(this)), this.renderer.listen(element, 'mousedown', preventDefault), this.renderer.listen(element, 'click', this.handleComponentClick.bind(this)), this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n }\n emitBlur(args) {\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n emitFocus() {\n if (this.pickerService) {\n this.pickerService.onFocus.emit();\n }\n }\n handleComponentClick() {\n if (!this.isActive) {\n if (this.type === 'infinite' && this.monthView.isScrolled()) {\n this.focusedDate = cloneDate(this.focusedDate); //XXX: forces change detect\n this.detectChanges();\n }\n this.focus();\n }\n }\n handleKeydown(args) {\n const headerActive = this.type === 'classic' && this.multiViewCalendar.isHeaderActive;\n if (headerActive) {\n return;\n }\n // reserve the alt + arrow key commands for the picker\n const arrowKeyPressed = [Keys.ArrowUp, Keys.ArrowRight, Keys.ArrowDown, Keys.ArrowLeft].indexOf(args.keyCode) !== -1;\n if (isPresent(this.pickerService) && arrowKeyPressed && args.altKey) {\n return;\n }\n // Prevent form from submitting on enter if used in datepicker (infinite view)\n if (isPresent(this.pickerService) && args.keyCode === Keys.Enter) {\n args.preventDefault();\n }\n const candidate = dateInRange(this.navigator.move(this.focusedDate, this.navigator.action(args), this.activeViewEnum), this.min, this.max);\n if (!isEqual(this.focusedDate, candidate)) {\n this.focusedDate = candidate;\n this.detectChanges();\n args.preventDefault();\n }\n if (args.keyCode === Keys.Enter) {\n this.performSelection(this.focusedDate, args);\n }\n }\n detectChanges() {\n if (!this.destroyed) {\n this.cdr.detectChanges();\n }\n }\n emitSameDate() {\n if (this.pickerService) {\n this.pickerService.sameDateSelected.emit();\n }\n }\n setAriaActivedescendant() {\n // in Classic mode, the inner MultiViewCalendar handles the activedescendant\n if (!isPresent(this.element) || (this.type === 'classic' && !this.element.nativeElement.hasAttribute('aria-activedescendant'))) {\n return;\n }\n if (this.type === 'classic') {\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-activedescendant');\n return;\n }\n const focusedCellId = this.cellUID + this.focusedDate.getTime();\n this.renderer.setAttribute(this.element.nativeElement, 'aria-activedescendant', focusedCellId);\n }\n parseSelectionToValue(selection) {\n selection = selection || [];\n return this.selection === 'single' ? cloneDate(last(selection)) : selection.map(date => cloneDate(date));\n }\n performSelection(date, selectionModifiers) {\n const selection = this.selectionService.performSelection({\n date: date,\n modifiers: selectionModifiers,\n selectionMode: this.selection,\n activeViewEnum: this.activeViewEnum,\n rangePivot: this.rangePivot,\n selectedDates: this.selectedDates\n });\n this.rangePivot = selection.rangePivot;\n this.handleDateChange({\n selectedDates: selection.selectedDates,\n focusedDate: date\n });\n }\n}\nCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: ScrollSyncService }, { token: DisabledDatesService }, { token: i1$1.LocalizationService }, { token: SelectionService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarComponent, selector: \"kendo-calendar\", inputs: { id: \"id\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", selection: \"selection\", value: \"value\", disabled: \"disabled\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", navigation: \"navigation\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", type: \"type\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"], navigationItemTemplateRef: [\"navigationItemTemplate\", \"navigationItemTemplateRef\"] }, outputs: { activeViewChange: \"activeViewChange\", navigate: \"navigate\", activeViewDateChange: \"activeViewDateChange\", valueChange: \"valueChange\" }, host: { properties: { \"class.k-week-number\": \"this.weekNumber\", \"attr.id\": \"this.widgetId\", \"attr.tabindex\": \"this.calendarTabIndex\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-disabled\": \"this.ariaDisabled\" } }, providers: [\n BusViewService,\n CALENDAR_VALUE_ACCESSOR,\n CALENDAR_RANGE_VALIDATORS,\n KENDO_INPUT_PROVIDER,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.calendar'\n },\n NavigationService,\n ScrollSyncService,\n SelectionService\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: \"navigationItemTemplate\", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"navigationView\", first: true, predicate: NavigationComponent, descendants: true }, { propertyName: \"monthView\", first: true, predicate: ViewListComponent, descendants: true }, { propertyName: \"multiViewCalendar\", first: true, predicate: MultiViewCalendarComponent, descendants: true }], exportAs: [\"kendo-calendar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: NavigationComponent, selector: \"kendo-calendar-navigation\", inputs: [\"activeView\", \"min\", \"max\", \"focusedDate\", \"templateRef\"], outputs: [\"valueChange\", \"pageChange\"] }, { type: ViewListComponent, selector: \"kendo-calendar-viewlist\", inputs: [\"cellTemplateRef\", \"weekNumberTemplateRef\", \"headerTitleTemplateRef\", \"activeView\", \"cellUID\", \"focusedDate\", \"isActive\", \"min\", \"max\", \"selectedDates\", \"weekNumber\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"activeDateChange\", \"todayButtonClick\", \"pageChange\"] }, { type: i5.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }, { type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"disabledDatesRangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"isActive\", \"disabledDates\", \"activeView\", \"bottomView\", \"topView\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\", \"activeRangeEnd\", \"selectionRange\", \"views\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"cellEnter\", \"cellLeave\", \"valueChange\", \"blur\"], exportAs: [\"kendo-multiviewcalendar\"] }, { type: MultiViewCalendarCustomMessagesComponent, selector: \"kendo-multiviewcalendar-messages\" }], directives: [{ type: CalendarLocalizedMessagesDirective, selector: \"[kendoCalendarLocalizedMessages]\" }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-calendar',\n providers: [\n BusViewService,\n CALENDAR_VALUE_ACCESSOR,\n CALENDAR_RANGE_VALIDATORS,\n KENDO_INPUT_PROVIDER,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.calendar'\n },\n NavigationService,\n ScrollSyncService,\n SelectionService\n ],\n selector: 'kendo-calendar',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: ScrollSyncService }, { type: DisabledDatesService }, { type: i1$1.LocalizationService }, { type: SelectionService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { id: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], navigation: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], type: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-week-number']\n }], activeViewChange: [{\n type: Output\n }], navigate: [{\n type: Output\n }], activeViewDateChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: false }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], navigationView: [{\n type: ViewChild,\n args: [NavigationComponent, { static: false }]\n }], monthView: [{\n type: ViewChild,\n args: [ViewListComponent, { static: false }]\n }], multiViewCalendar: [{\n type: ViewChild,\n args: [MultiViewCalendarComponent, { static: false }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], calendarTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nconst incompleteDateValidator = () => {\n return (control, incomplete) => {\n if (!isPresent(control.value) && incomplete) {\n return { incompleteDate: true };\n }\n else {\n return null;\n }\n };\n};\n\n/**\n * @hidden\n */\nvar Arrow;\n(function (Arrow) {\n Arrow[Arrow[\"Up\"] = 0] = \"Up\";\n Arrow[Arrow[\"Down\"] = 1] = \"Down\";\n Arrow[Arrow[\"None\"] = 2] = \"None\";\n})(Arrow || (Arrow = {}));\n\n/**\n * @hidden\n */\nclass DateInputMessages extends ComponentMessages {\n}\nDateInputMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDateInputMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputMessages, selector: \"kendo-dateinput-messages-base\", inputs: { decrement: \"decrement\", increment: \"increment\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-dateinput-messages-base'\n }]\n }], propDecorators: { decrement: [{\n type: Input\n }], increment: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DateInputLocalizedMessagesDirective extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nDateInputLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nDateInputLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputLocalizedMessagesDirective, selector: \"[kendoDateInputLocalizedMessages]\", providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDateInputLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst MIN_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DateInputComponent/#toc-min';\nconst MAX_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DateInputComponent/#toc-max';\nconst VALUE_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/dateinput/#toc-using-with-json';\nconst DATE_PART_REGEXP = /year|month|/;\nconst TIME_PART_REGEXP = /hour|minute|second|millisecond/;\nconst SHORT_PATTERN_LENGTH_REGEXP = /d|M|H|h|m|s/;\nconst TWO_DIGIT_YEAR_MAX$2 = 68;\nconst PREVIOUS_CENTURY_BASE = 1900;\nconst CURRENT_CENTURY_BASE = 2000;\nconst DEFAULT_FORMAT$1 = 'd';\nconst padZero = (length) => new Array(Math.max(length, 0)).fill('0').join('');\nconst unpadZero = (value) => value.replace(/^0*/, '');\nclass Mask {\n constructor() {\n this.symbols = \"\";\n }\n}\nclass KendoDate {\n constructor(intl, formatPlaceholder, format, value, twoDigitYearMax = TWO_DIGIT_YEAR_MAX$2) {\n this.intl = intl;\n this.formatPlaceholder = formatPlaceholder;\n this.format = format;\n this.twoDigitYearMax = twoDigitYearMax;\n this.year = true;\n this.month = true;\n this.date = true;\n this.hours = true;\n this.minutes = true;\n this.seconds = true;\n this.milliseconds = true;\n this.leadingZero = null;\n this.monthNames = null;\n this.typedMonthPart = \"\";\n this.value = getDate(new Date());\n this.knownParts = \"adHhmMsSEy\";\n this.symbols = {\n \"E\": \"E\",\n \"H\": \"H\",\n \"M\": \"M\",\n \"a\": \"a\",\n \"d\": \"d\",\n \"h\": \"h\",\n \"m\": \"m\",\n \"s\": \"s\",\n \"S\": \"S\",\n \"y\": \"y\"\n };\n validatePackage(packageMetadata);\n this.monthNames = this.allFormatedMonths();\n this.dayPeriods = this.allDayPeriods();\n if (!value) {\n this.value = getDate(new Date());\n const sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (let i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], false);\n }\n }\n else {\n this.value = cloneDate(value);\n }\n }\n hasValue() {\n const pred = (a, p) => a || p.type !== 'literal' && p.type !== 'dayperiod' && this.getExisting(p.pattern[0]);\n return this.intl.splitDateFormat(this.format).reduce(pred, false);\n }\n shouldNormalizeCentury() {\n return this.intl.splitDateFormat(this.format).some(part => part.pattern === 'yy');\n }\n getDateObject() {\n for (let i = 0; i < this.knownParts.length; i++) {\n if (!this.getExisting(this.knownParts[i])) {\n return null;\n }\n }\n return cloneDate(this.value);\n }\n getTextAndFormat(format) {\n return this.merge(this.intl.formatDate(this.value, format), this.dateFormatString(this.value, format));\n }\n getExisting(symbol) {\n switch (symbol) {\n case \"y\": return this.year;\n case \"M\":\n case \"L\": return this.month;\n case \"d\": return this.date;\n case \"E\": return this.date && this.month && this.year;\n case \"h\":\n case \"H\": return this.hours;\n case \"m\": return this.minutes;\n case \"s\": return this.seconds;\n case \"S\": return this.milliseconds;\n default: return true;\n }\n }\n setExisting(symbol, value) {\n switch (symbol) {\n case \"y\":\n this.year = value;\n if (value === false) {\n this.value.setFullYear(2000);\n }\n break; //allow 2/29 dates\n case \"M\":\n this.month = value;\n if (value === false) {\n this.value.setMonth(0);\n }\n break; //make sure you can type 31 at day part\n case \"d\":\n this.date = value;\n break;\n case \"h\":\n case \"H\":\n this.hours = value;\n break;\n case \"m\":\n this.minutes = value;\n break;\n case \"s\":\n this.seconds = value;\n break;\n case \"S\":\n this.milliseconds = value;\n break;\n default: return;\n }\n }\n modifyPart(symbol, offset) {\n let newValue = cloneDate(this.value);\n switch (symbol) {\n case \"y\":\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case \"M\":\n newValue = addMonths(this.value, offset);\n break;\n case \"d\":\n case \"E\":\n newValue.setDate(newValue.getDate() + offset);\n break;\n case \"h\":\n case \"H\":\n newValue.setHours(newValue.getHours() + offset);\n break;\n case \"m\":\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n case \"s\":\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n case \"S\":\n newValue.setMilliseconds(newValue.getMilliseconds() + offset);\n break;\n case \"a\":\n newValue.setHours(newValue.getHours() + (12 * offset));\n break;\n default: break;\n }\n if (this.shouldNormalizeCentury()) {\n newValue = this.normalizeCentury(newValue);\n }\n if (newValue.getFullYear() > 0) {\n this.setExisting(symbol, true);\n this.value = newValue;\n }\n }\n parsePart(symbol, currentChar, resetSegmentValue) {\n if (!currentChar) {\n this.resetLeadingZero();\n this.setExisting(symbol, false);\n return { value: null, switchToNext: false };\n }\n let baseDate = this.intl.formatDate(this.value, this.format);\n let dateParts = this.dateFormatString(this.value, this.format);\n let baseFormat = dateParts.symbols;\n let replaced = false;\n let prefix = \"\";\n let current = \"\";\n let suffix = \"\";\n for (let i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n current += this.getExisting(symbol) ? baseDate[i] : \"0\";\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n }\n }\n let currentMaxLength = current.length - 3;\n let parsedDate = null;\n const month = this.matchMonth(currentChar);\n const dayPeriod = this.matchDayPeriod(currentChar, symbol);\n const isZeroCurrentChar = currentChar === '0';\n const leadingZero = (this.leadingZero || {})[symbol] || 0;\n if (isZeroCurrentChar) {\n let valueNumber = parseInt(resetSegmentValue ? currentChar : current + currentChar, 10);\n if (valueNumber === 0 && !this.isAbbrMonth(dateParts.partMap, symbol)) {\n this.incrementLeadingZero(symbol);\n }\n }\n else {\n this.resetLeadingZero();\n }\n for (let i = Math.max(0, currentMaxLength); i <= current.length; i++) {\n let middle = resetSegmentValue ? currentChar : (current.substring(i) + currentChar);\n if (symbol === \"S\" && resetSegmentValue) {\n // The \"S\" parser in intl parses \"1\" as 100ms in order to handle ISOString dates correctly, so to get 1ms, we need to pass \"001\"\n const padding = msPaddingFromFormat(baseFormat);\n middle = padding + middle;\n }\n let middleNumber = parseInt(middle, 10);\n parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n if (symbol === 'M' && !month) {\n const monthNumber = middleNumber - 1;\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (symbol === 'y') {\n parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (parsedDate) {\n //move to next segment if the part will overflow with next char\n //when start from empty date (01, then 010), padded zeros should be trimmed\n const patternValue = this.partPattern(dateParts.partMap, symbol).pattern;\n const peekDate = this.intl.parseDate(`${prefix}${this.peek(middle, patternValue)}${suffix}`, this.format);\n const patternLength = this.patternLength(patternValue) || patternValue.length;\n const patternSatisfied = (leadingZero + (unpadZero(middle) || currentChar).length) >= patternLength;\n const switchToNext = peekDate === null || patternSatisfied;\n if (this.shouldNormalizeCentury()) {\n parsedDate = this.normalizeCentury(parsedDate);\n }\n this.value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value, switchToNext: switchToNext };\n }\n }\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n if (parsedDate) {\n this.value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value, switchToNext: false };\n }\n }\n if (dayPeriod) {\n parsedDate = this.intl.parseDate(prefix + dayPeriod + suffix, this.format);\n if (parsedDate) {\n this.value = parsedDate;\n return { value: this.value, switchToNext: true };\n }\n }\n if (isZeroCurrentChar) {\n this.setExisting(symbol, false);\n }\n return { value: null, switchToNext: false };\n }\n resetLeadingZero() {\n const hasLeadingZero = this.leadingZero !== null;\n this.setLeadingZero(null);\n return hasLeadingZero;\n }\n setLeadingZero(leadingZero) {\n this.leadingZero = leadingZero;\n }\n normalizeCentury(date) {\n if (!isPresent(date)) {\n return date;\n }\n const twoDigitYear = cropTwoDigitYear(date);\n const centuryBase = this.getNormalizedCenturyBase(twoDigitYear);\n const normalizedDate = setYears(date, centuryBase + twoDigitYear);\n return normalizedDate;\n }\n incrementLeadingZero(symbol) {\n const leadingZero = this.leadingZero || {};\n leadingZero[symbol] = (leadingZero[symbol] || 0) + 1;\n this.leadingZero = leadingZero;\n }\n isAbbrMonth(parts, symbol) {\n const pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n }\n partPattern(parts, symbol) {\n return parts.filter((part) => part.pattern.indexOf(symbol) !== -1)[0];\n }\n peek(value, pattern) {\n const peekValue = unpadZero(value) + '0';\n return padZero(pattern.length - peekValue.length) + peekValue;\n }\n matchMonth(typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n if (!this.monthNames) {\n return \"\";\n }\n while (this.typedMonthPart.length > 0) {\n for (let i = 0; i < this.monthNames.length; i++) {\n if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n return this.monthNames[i];\n }\n }\n const monthAsNum = parseInt(this.typedMonthPart, 10);\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart /*ensure they exact match*/) {\n return this.monthNames[monthAsNum - 1];\n }\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n return \"\";\n }\n matchDayPeriod(typedChar, symbol) {\n const lowerChart = String(typedChar).toLowerCase();\n if (symbol === 'a' && this.dayPeriods) {\n if (this.dayPeriods.am.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.am;\n }\n else if (this.dayPeriods.pm.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.pm;\n }\n }\n return '';\n }\n allFormatedMonths() {\n const dateFormatParts = this.intl.splitDateFormat(this.format);\n for (let i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === \"month\" && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return null;\n }\n allDayPeriods() {\n const dateFormatParts = this.intl.splitDateFormat(this.format);\n for (let i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === \"dayperiod\" && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return null;\n }\n patternLength(pattern) {\n if (pattern[0] === 'y') {\n return 4;\n }\n if (SHORT_PATTERN_LENGTH_REGEXP.test(pattern)) {\n return 2;\n }\n return 0;\n }\n //TODO: REMOVE!\n dateFormatString(date, format) {\n const dateFormatParts = this.intl.splitDateFormat(format);\n const parts = [];\n const partMap = [];\n for (let i = 0; i < dateFormatParts.length; i++) {\n let partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || \"_\");\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n const returnValue = new Mask();\n returnValue.symbols = parts.join(\"\");\n returnValue.partMap = partMap;\n return returnValue;\n }\n merge(text, mask) {\n // Important: right to left.\n let resultText = \"\";\n let resultFormat = \"\";\n let format = mask.symbols;\n for (let r = format.length - 1; r >= 0; r--) {\n if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n resultText = text[r] + resultText;\n resultFormat = format[r] + resultFormat;\n }\n else {\n const currentSymbol = format[r];\n while (r >= 0 && currentSymbol === format[r]) {\n r--;\n }\n r++;\n if (this.leadingZero && this.leadingZero[currentSymbol]) {\n resultText = '0' + resultText;\n }\n else {\n resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n }\n while (resultFormat.length < resultText.length) {\n resultFormat = format[r] + resultFormat;\n }\n }\n }\n return [resultText, resultFormat];\n }\n dateFieldName(part) {\n const formatPlaceholder = this.formatPlaceholder || 'wide';\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n }\n getNormalizedCenturyBase(twoDigitYear) {\n return twoDigitYear > this.twoDigitYearMax ?\n PREVIOUS_CENTURY_BASE :\n CURRENT_CENTURY_BASE;\n }\n}\n/**\n * Represents the [Kendo UI DateInput component for Angular]({% slug overview_dateinput %}#toc-basic-usage).\n */\nclass DateInputComponent {\n constructor(cdr, intl, renderer, wrapper, ngZone, injector, localization, pickerService) {\n this.cdr = cdr;\n this.intl = intl;\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.ngZone = ngZone;\n this.injector = injector;\n this.localization = localization;\n this.pickerService = pickerService;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets or gets the `disabled` property of the DateInput and\n * determines whether the component is active\n * ([see example]({% slug disabled_dateinput %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the read-only state of the DateInput\n * ([see example]({% slug readonly_dateinput %})).\n */\n this.readonly = false;\n /**\n * Sets the title of the input element of the DateInput.\n */\n this.title = \"\";\n /**\n * Sets or gets the `tabIndex` property of the DateInput.\n * .\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.role = 'spinbutton';\n /**\n * @hidden\n */\n this.ariaReadOnly = false;\n /**\n * Specifies the date format that is used to display the input value\n * ([see example]({% slug formats_dateinput %})).\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n */\n this.format = DEFAULT_FORMAT$1;\n /**\n * Specifies the hint the DateInput displays when its value is `null`.\n * For more information, refer to the article on\n * [placeholders]({% slug placeholders_dateinput %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Configures the incremental steps of the DateInput.\n * For more information, refer to the article on\n * [incremental steps]({% slug incrementalsteps_dateinput %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public steps = { year: 10, month: 1, day: 5 };\n * }\n * ```\n */\n this.steps = {};\n /**\n * Determines whether the built-in min or max validators are to be enforced when a form is being validated.\n */\n this.rangeValidation = true;\n /**\n * @hidden\n * Based on the min and max values, specifies whether the value will be auto-corrected while typing.\n */\n this.autoCorrect = false;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_dateinput %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX$2;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * For more information, refer to the article on\n * [spinner buttons]({% slug spinbuttons_dateinput %}).\n */\n this.spinners = false;\n /**\n * @hidden\n */\n this.isPopupOpen = false;\n /**\n * @hidden\n */\n this.hasPopup = false;\n /**\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n */\n this.valueUpdate = new EventEmitter();\n /**\n * Fires each time the user focuses the input element.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n *\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n *\n */\n this.onBlur = new EventEmitter();\n this.arrow = Arrow;\n this.arrowDirection = Arrow.None;\n this.formatSections = { date: false, time: false };\n this.hasMousedown = false;\n this.focusedPriorToMousedown = false;\n /**\n * @hidden\n */\n this.isDateIncomplete = false;\n this.currentValue = \"\";\n this.currentFormat = \"\";\n this.backspace = false;\n this.resetSegmentValue = true;\n this.minValidator = noop$2;\n this.maxValidator = noop$2;\n this.incompleteValidator = noop$2;\n this._value = null;\n this._active = false;\n this.kendoDate = null;\n this.paste = false;\n this.domEvents = [];\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n this.symbolsMap = this.dateSymbolMap();\n this.updateFormatSections();\n if (this.pickerService) {\n this.pickerService.input = this;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the DateInput component.\n *\n * > The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n if (this.autoCorrect && !isInRange(value, this.min, this.max)) {\n return;\n }\n this._value = cloneDate(value);\n this.valueUpdate.emit(cloneDate(value));\n }\n get value() {\n return this._value;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n if (this.spinners && this.spinup && this.spindown) {\n this.setSpinnerFill(this.spinup.nativeElement, newFillMode, this.fillMode);\n this.setSpinnerFill(this.spindown.nativeElement, newFillMode, this.fillMode);\n }\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get wrapperClass() {\n return true;\n }\n get disabledClass() {\n return this.disabled;\n }\n get inputElement() {\n return this.dateInput ? this.dateInput.nativeElement : null;\n }\n get inputValue() {\n return (this.inputElement || {}).value || '';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n if (!isPresent(this.pickerService)) {\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n }\n get inputFormat() {\n if (!this.format) {\n return DEFAULT_FORMAT$1;\n }\n if (typeof this.format === 'string') {\n return this.format;\n }\n else {\n return this.format.inputFormat;\n }\n }\n get displayFormat() {\n if (!this.format) {\n return DEFAULT_FORMAT$1;\n }\n if (typeof this.format === 'string') {\n return this.format;\n }\n else {\n return this.format.displayFormat;\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty\n */\n isEmpty() {\n return !this.currentValue || !String(this.currentValue).trim();\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.wrapper.nativeElement));\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n this.verifyRange();\n if (changes.min || changes.max || changes.rangeValidation || changes.incompleteDateValidation) {\n this.minValidator = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidator = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n if (changes.format) {\n this.symbolsMap = this.dateSymbolMap();\n this.updateFormatSections();\n }\n const isEqualToKendoDate = this.kendoDate && isEqual(this.value, this.kendoDate.getDateObject());\n if (changes.format || !isEqualToKendoDate || changes.placeholder) {\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue(this.isActive);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n if (this.pickerService) {\n this.pickerService.input = null;\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidator(control) || this.maxValidator(control) || this.incompleteValidator(control, this.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue();\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n this.ngControl = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.ngZone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.kendoDate = this.getKendoDate(value);\n this.value = cloneDate(value);\n this.updateElementValue(this.isActive);\n }\n /**\n * @hidden\n */\n triggerChange() {\n const value = this.kendoDate.getDateObject();\n if (+value !== +this.value) {\n this.value = cloneDate(value);\n this.notify();\n }\n }\n /**\n * @hidden\n */\n notify() {\n this.ngZone.run(() => {\n this.onControlChange(cloneDate(this.value));\n this.valueChange.emit(cloneDate(this.value));\n });\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * Focuses the DateInput component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const input = this.inputElement;\n if (input) {\n input.focus();\n this.selectDateSegment(this.currentFormat[0]);\n }\n }\n /**\n * Blurs the DateInput component.\n */\n blur() {\n const input = this.inputElement;\n if (input) {\n input.blur();\n }\n }\n /**\n * @hidden\n */\n handleButtonClick(offset) {\n this.arrowDirection = Arrow.None;\n this.modifyDateSegmentValue(offset);\n }\n /**\n * @hidden\n */\n modifyDateSegmentValue(offset) {\n const caret = this.caret();\n const symbol = this.currentFormat[caret[0]];\n let step = (this.steps || {})[this.symbolsMap[symbol]] || 1;\n if (symbol === \"S\" && !this.steps.millisecond) {\n const msDigits = millisecondDigitsInFormat(this.inputFormat);\n step = millisecondStepFor(msDigits);\n }\n this.kendoDate.modifyPart(symbol, offset * step);\n this.putDateInRange();\n this.updateElementValue(this.isActive);\n this.triggerChange();\n this.selectDateSegment(symbol);\n this.updateIncompleteValidationStatus();\n }\n /**\n * @hidden\n */\n switchDateSegment(offset) {\n const caret = this.caret();\n if (this.kendoDate.resetLeadingZero()) {\n this.updateElementValue(this.isActive);\n }\n if (caret[0] < caret[1] && this.currentFormat[caret[0]] !== this.currentFormat[caret[1] - 1]) {\n this.selectNearestSegment(offset > 0 ? caret[0] : caret[1] - 1);\n this.resetSegmentValue = true;\n return true;\n }\n const previousFormatSymbol = this.currentFormat[caret[0]];\n let a = caret[0] + offset;\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol &&\n this.currentFormat[a] !== \"_\") {\n break;\n }\n a += offset;\n }\n if (this.currentFormat[a] === \"_\") {\n //there is not known symbol found\n return false;\n }\n let b = a;\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n b += offset;\n }\n if (a > b && (b + 1 !== caret[0] || a + 1 !== caret[1])) {\n this.caret(b + 1, a + 1);\n this.resetSegmentValue = true;\n return true;\n }\n else if (a < b && (a !== caret[0] || b !== caret[1])) {\n this.caret(a, b);\n this.resetSegmentValue = true;\n return true;\n }\n return false;\n }\n /**\n * @hidden\n */\n selectDateSegment(symbol) {\n let begin = -1;\n let end = 0;\n for (let i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (begin === -1) {\n begin = i;\n }\n }\n }\n if (begin < 0) {\n begin = 0;\n }\n this.caret(0, 0);\n this.caret(begin, end);\n }\n /**\n * @hidden\n */\n handleClick() {\n this.hasMousedown = false;\n if (this.isActive) {\n const selectionPresent = this.inputElement.selectionStart !== this.inputElement.selectionEnd;\n const placeholderToggled = isPresent(this.placeholder) && !this.kendoDate.hasValue() && !this.focusedPriorToMousedown;\n // focus first segment if the user hasn't selected something during mousedown and if the placeholder was just toggled\n const selectFirstSegment = !selectionPresent && placeholderToggled;\n const index = selectFirstSegment ? 0 : this.caret()[0];\n this.selectNearestSegment(index);\n }\n }\n /**\n * @hidden\n */\n handleDragAndDrop(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleMousedown() {\n this.hasMousedown = true;\n this.focusedPriorToMousedown = this.isActive;\n }\n /**\n * @hidden\n */\n handleFocus(args) {\n this.isActive = true;\n this.updateElementValue();\n if (!this.hasMousedown) {\n this.caret(0, this.inputValue.length);\n }\n this.hasMousedown = false;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.emitFocus(args);\n });\n }\n else {\n this.emitFocus(args);\n }\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n this.isActive = false;\n this.resetSegmentValue = true;\n this.kendoDate.resetLeadingZero();\n this.updateElementValue();\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.ngControl)) {\n this.ngZone.run(() => {\n this.onControlTouched();\n this.emitBlur(args);\n this.cdr.markForCheck();\n });\n }\n else {\n this.emitBlur(args);\n }\n }\n getKendoDate(value) {\n const { leadingZero } = (this.kendoDate || {}) || null;\n const kendoDate = new KendoDate(this.intl, this.formatPlaceholder, this.inputFormat, value, this.twoDigitYearMax);\n kendoDate.setLeadingZero(this.isActive ? leadingZero : null);\n return kendoDate;\n }\n dateSymbolMap() {\n const reducer = (map, part) => {\n map[part.pattern[0]] = part.type;\n return map;\n };\n return this.intl.splitDateFormat(this.inputFormat).reduce(reducer, {});\n }\n updateElementValue(isActive) {\n const start = this.caret()[0]; //XXX: get caret position before input is updated\n const format = this.isActive ? this.inputFormat : this.displayFormat;\n const texts = this.kendoDate.getTextAndFormat(format);\n const showPlaceholder = !this.isActive && isPresent(this.placeholder) && !this.kendoDate.hasValue();\n const input = this.inputElement;\n this.currentFormat = texts[1];\n this.currentValue = !showPlaceholder ? texts[0] : '';\n this.renderer.setProperty(input, \"value\", this.currentValue);\n if (input.placeholder !== this.placeholder) {\n this.renderer.setProperty(input, \"placeholder\", this.placeholder);\n }\n if (isActive) {\n this.selectNearestSegment(start);\n }\n }\n caret(start, end = start) {\n const isPosition = start !== undefined;\n let returnValue = [start, start];\n const element = this.inputElement;\n if (isPosition && (this.disabled || this.readonly)) {\n return undefined;\n }\n try {\n if (element.selectionStart !== undefined) {\n if (isPosition) {\n if (isDocumentAvailable() && document.activeElement !== element) {\n element.focus();\n }\n element.setSelectionRange(start, end);\n }\n returnValue = [element.selectionStart, element.selectionEnd];\n }\n }\n catch (e) {\n returnValue = [];\n }\n return returnValue;\n }\n selectNearestSegment(index) {\n // Finds the nearest (in both directions) known part.\n for (let i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== \"_\") {\n this.selectDateSegment(this.currentFormat[i]);\n return;\n }\n if (j >= 0 && this.currentFormat[j] !== \"_\") {\n this.selectDateSegment(this.currentFormat[j]);\n return;\n }\n }\n }\n verifyRange() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$1} and ${MAX_DOC_LINK$1}.`);\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$3} for possible resolution.`);\n }\n }\n putDateInRange() {\n const currentDate = this.kendoDate.getDateObject();\n const candidate = dateInRange(currentDate, this.min, this.max);\n if (this.autoCorrect && !isEqual(currentDate, candidate)) {\n this.kendoDate = this.getKendoDate(candidate);\n }\n }\n updateFormatSections() {\n this.formatSections = this.intl.splitDateFormat(this.inputFormat)\n .reduce(({ date, time }, p) => {\n return {\n date: date || DATE_PART_REGEXP.test(p.type),\n time: time || TIME_PART_REGEXP.test(p.type)\n };\n }, { date: false, time: false });\n }\n intlChange() {\n this.updateFormatSections();\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue(this.isActive);\n }\n updateOnPaste() {\n let value = this.intl.parseDate(this.inputValue, this.inputFormat) || this.value;\n if (isPresent(value) && this.kendoDate.shouldNormalizeCentury()) {\n value = this.kendoDate.normalizeCentury(value);\n }\n const notify = +value !== +this.value;\n this.writeValue(value);\n if (notify) {\n this.notify();\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n const mousewheelHandler = this.handleMouseWheel.bind(this);\n this.domEvents.push(this.renderer.listen(element, 'DOMMouseScroll', mousewheelHandler), this.renderer.listen(element, 'mousewheel', mousewheelHandler), this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)), this.renderer.listen(element, 'paste', this.handlePaste.bind(this)), this.renderer.listen(element, 'input', this.handleInput.bind(this)));\n }\n handleMouseWheel(event) {\n if (this.disabled || this.readonly || !this.isActive) {\n return;\n }\n event = window.event || event;\n if (event.shiftKey) {\n this.switchDateSegment((event.wheelDelta || -event.detail) > 0 ? -1 : 1);\n }\n else {\n this.modifyDateSegmentValue((event.wheelDelta || -event.detail) > 0 ? 1 : -1);\n }\n event.returnValue = false;\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n }\n handlePaste() {\n this.paste = true;\n }\n handleKeydown(event) {\n if (this.disabled || this.readonly || event.altKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.keyCode === Keys.Tab) {\n const moved = this.switchDateSegment(event.shiftKey ? -1 : 1);\n if (moved) {\n event.preventDefault();\n }\n return;\n }\n if (event.keyCode === Keys.Backspace) {\n this.backspace = true;\n return;\n }\n switch (event.keyCode) {\n case Keys.ArrowDown:\n this.modifyDateSegmentValue(-1);\n break;\n case Keys.ArrowUp:\n this.modifyDateSegmentValue(1);\n break;\n case Keys.ArrowRight:\n this.switchDateSegment(1);\n break;\n case Keys.ArrowLeft:\n this.switchDateSegment(-1);\n break;\n case Keys.Home:\n this.selectNearestSegment(0);\n break;\n case Keys.End:\n this.selectNearestSegment(this.inputValue.length);\n break;\n default:\n return; //skip the preventDefault if we didn't handled the keyCode\n }\n event.preventDefault();\n }\n handleInput() {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.paste) {\n this.updateOnPaste();\n this.paste = false;\n return;\n }\n const diff = approximateStringMatching(this.currentValue, this.currentFormat, this.inputValue, this.caret()[0]);\n const navigationOnly = (diff.length === 1 && diff[0][1] === \"_\");\n let switchPart = false;\n if (!navigationOnly) {\n let parsedPart;\n for (let i = 0; i < diff.length; i++) {\n parsedPart = this.kendoDate.parsePart(diff[i][0], diff[i][1], this.resetSegmentValue);\n switchPart = parsedPart.switchToNext;\n }\n const candidate = this.kendoDate.getDateObject();\n if (this.value && candidate && !this.formatSections.date) {\n this.kendoDate = this.getKendoDate(setTime(this.value, candidate));\n }\n }\n this.resetSegmentValue = false;\n this.putDateInRange();\n this.updateElementValue(this.isActive);\n this.triggerChange();\n this.updateIncompleteValidationStatus();\n if (diff.length && diff[0][0] !== \"_\") {\n this.selectDateSegment(diff[0][0]);\n }\n if (switchPart || navigationOnly) {\n this.switchDateSegment(1);\n }\n if (this.backspace) {\n this.switchDateSegment(-1);\n }\n this.backspace = false;\n }\n emitFocus(args) {\n this.onFocus.emit();\n if (this.pickerService) {\n this.pickerService.onFocus.emit(args);\n }\n }\n emitBlur(args) {\n this.onBlur.emit();\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n updateIncompleteValidationStatus() {\n const previousValue = this.isDateIncomplete;\n this.isDateIncomplete = this.kendoDate.hasValue() && this.value === null;\n if (previousValue === this.isDateIncomplete || !this.incompleteDateValidation) {\n return;\n }\n if (isPresent(this.ngControl) && !isPresent(this.pickerService)) {\n this.cdr.markForCheck();\n this.ngZone.run(() => this.onValidatorChange());\n }\n else if (isPresent(this.pickerService)) {\n this.pickerService.dateCompletenessChange.emit();\n }\n }\n setSpinnerFill(spinner, fill, oldFill) {\n if (oldFill !== 'none') {\n this.renderer.removeClass(spinner, `k-button-${oldFill}`);\n this.renderer.removeClass(spinner, `k-button-${oldFill}-base`);\n }\n this.renderer.addClass(spinner, `k-button-${fill}`);\n this.renderer.addClass(spinner, `k-button-${fill}-base`);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n if (this.spinners && this.fillMode !== 'none') {\n this.setSpinnerFill(this.spinup.nativeElement, this.fillMode);\n this.setSpinnerFill(this.spindown.nativeElement, this.fillMode);\n }\n }\n}\nDateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i1$1.LocalizationService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputComponent, selector: \"kendo-dateinput\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", tabindex: \"tabindex\", role: \"role\", ariaReadOnly: \"ariaReadOnly\", tabIndex: \"tabIndex\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", steps: \"steps\", max: \"max\", min: \"min\", rangeValidation: \"rangeValidation\", autoCorrect: \"autoCorrect\", incompleteDateValidation: \"incompleteDateValidation\", twoDigitYearMax: \"twoDigitYearMax\", value: \"value\", spinners: \"spinners\", isPopupOpen: \"isPopupOpen\", hasPopup: \"hasPopup\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", valueUpdate: \"valueUpdate\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-input\": \"this.wrapperClass\", \"class.k-dateinput\": \"this.wrapperClass\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent) },\n LocalizationService\n ], viewQueries: [{ propertyName: \"dateInput\", first: true, predicate: [\"dateInput\"], descendants: true, static: true }, { propertyName: \"spinup\", first: true, predicate: [\"spinup\"], descendants: true }, { propertyName: \"spindown\", first: true, predicate: [\"spindown\"], descendants: true }], exportAs: [\"kendo-dateinput\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: DateInputLocalizedMessagesDirective, selector: \"[kendoDateInputLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-dateinput',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent) },\n LocalizationService\n ],\n selector: 'kendo-dateinput',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: i1$1.LocalizationService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], role: [{\n type: Input\n }], ariaReadOnly: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], steps: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], autoCorrect: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], value: [{\n type: Input\n }], spinners: [{\n type: Input\n }], isPopupOpen: [{\n type: Input\n }], hasPopup: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], valueUpdate: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], dateInput: [{\n type: ViewChild,\n args: ['dateInput', { static: true }]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-dateinput']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], spinup: [{\n type: ViewChild,\n args: ['spinup', { static: false }]\n }], spindown: [{\n type: ViewChild,\n args: ['spindown', { static: false }]\n }] } });\n\n/**\n * A preventable event instance which is triggered by the `open` and `close` events.\n */\nclass PreventableEvent {\n /** @hidden */\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst TOUCH_ENABLED = new InjectionToken('dateinputs-touch-enabled');\n\n/**\n * @hidden\n */\nconst disabledDatesValidator = (isDateDisabled) => {\n return (control) => {\n if (!isDateDisabled || !control.value) {\n return null;\n }\n const error = {\n disabledDate: true\n };\n return isDateDisabled(control.value) ? error : null;\n };\n};\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass CalendarCustomMessagesComponent extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCalendarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCalendarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\", providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-calendar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass DatePickerMessages extends ComponentMessages {\n}\nDatePickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDatePickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerMessages, selector: \"kendo-datepicker-messages-base\", inputs: { today: \"today\", toggle: \"toggle\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-datepicker-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], toggle: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DatePickerLocalizedMessagesDirective extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nDatePickerLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nDatePickerLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerLocalizedMessagesDirective, selector: \"[kendoDatePickerLocalizedMessages]\", providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDatePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst MIN_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-min';\nconst MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-max';\nconst VALUE_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/datepicker/#toc-using-with-json';\nconst DEFAULT_FORMAT = 'd';\nconst TWO_DIGIT_YEAR_MAX$1 = 68;\n/**\n * Represents the [Kendo UI DatePicker component for Angular]({% slug overview_datepicker %}#toc-basic-usage).\n */\nclass DatePickerComponent {\n constructor(zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, disabledDatesService, touchEnabled) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.disabledDatesService = disabledDatesService;\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug calendar_type_datepicker %}#toc-active-view)).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost Calendar view to which the user can navigate\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost Calendar view to which the user can navigate\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n this.calendarType = 'infinite';\n /**\n * Determines whether to enable animation when navigating to previous/next Calendar view.\n * Applies to the [`classic`]({% slug api_dateinputs_datepickercomponent %}#toc-calendartype) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateCalendarNavigation = false;\n /**\n * Sets or gets the `disabled` property of the DatePicker and determines whether the component is active\n * ([see example]({% slug disabled_datepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the DatePicker\n * ([see example]({% slug readonly_datepicker %}#toc-read-only-datepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the DatePicker input field\n * ([see example]({% slug readonly_datepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_datepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Sets or gets the `navigation` property of the Calendar\n * and determines whether the navigation side-bar is displayed.\n * ([see example]({% slug sidebar_datepicker %})).\n */\n this.navigation = true;\n /**\n * Specifies the smallest valid date\n * ([see example]({% slug dateranges_datepicker %})).\n * By default, the `min` value is `1900-1-1`.\n */\n this.min = cloneDate(MIN_DATE);\n /**\n * Specifies the biggest valid date\n * ([see example]({% slug dateranges_datepicker %})).\n * By default, the `max` value is `2099-12-31`.\n */\n this.max = cloneDate(MAX_DATE);\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Specifies the focused date of the Calendar component\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.focusedDate = null;\n /**\n * Specifies the date format that is used to display the input value\n * ([see example]({% slug formats_datepicker %})).\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n */\n this.format = DEFAULT_FORMAT;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_datepicker %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX$1;\n /**\n * Specifies the hint the DatePicker displays when its value is `null`.\n * ([more information and exaples]({% slug placeholders_datepicker %})).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Sets or gets the `tabindex` property of the DatePicker.\n */\n this.tabindex = 0;\n /**\n * Sets the title of the input element of the DatePicker.\n */\n this.title = \"\";\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = true;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_datepicker %}#toc-validation)).\n */\n this.disabledDatesValidation = true;\n /**\n * Determines whether to display a week number column in the `month` view of the Calendar\n * ([see example]({% slug calendar_type_datepicker %}#toc-week-number-column)).\n */\n this.weekNumber = false;\n /**\n * Fires each time the user selects a new value\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the input element\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.wrapperClasses = true;\n this.popupUID = guid();\n this._popupSettings = { animate: true };\n this._show = false;\n this._value = null;\n this._active = false;\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this.resolvedPromise = Promise.resolve(null);\n this.domEvents = [];\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n this.pickerSubscriptions = this.pickerService.onFocus.subscribe(this.handleFocus.bind(this));\n this.pickerSubscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.sameDateSelected.subscribe(this.handleSameSelection.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n }\n /**\n * @hidden\n */\n set cellTemplateRef(template) {\n this.cellTemplate = template;\n }\n /**\n * @hidden\n */\n set monthCellTemplateRef(template) {\n this.monthCellTemplate = template;\n }\n /**\n * @hidden\n */\n set yearCellTemplateRef(template) {\n this.yearCellTemplate = template;\n }\n /**\n * @hidden\n */\n set decadeCellTemplateRef(template) {\n this.decadeCellTemplate = template;\n }\n /**\n * @hidden\n */\n set centuryCellTemplateRef(template) {\n this.centuryCellTemplate = template;\n }\n /**\n * @hidden\n */\n set weekNumberTemplateRef(template) {\n this.weekNumberTemplate = template;\n }\n /**\n * @hidden\n */\n set headerTitleTemplateRef(template) {\n this.headerTitleTemplate = template;\n }\n /**\n * @hidden\n */\n set navigationItemTemplateRef(template) {\n this.navigationItemTemplate = template;\n }\n /**\n * Configures the popup options of the DatePicker.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the value of the DatePicker component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the DatePicker that will be disabled\n * ([see example]({% slug disabled_dates_datepicker %})).\n */\n set disabledDates(value) {\n this._disabledDates = value;\n this.disabledDatesService.initialize(value);\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n get show() {\n return this._show;\n }\n set show(show) {\n if (show && (this.disabled || this.readonly)) {\n return;\n }\n const skipZone = !show && (!this._show || !hasObservers(this.close));\n if (!skipZone) {\n this.zone.run(() => {\n this.togglePopup(show);\n });\n }\n else {\n this.togglePopup(show);\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return !this.value && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes\n .subscribe(() => this.cdr.markForCheck());\n this.control = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n this.verifySettings();\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDatesValidation || changes.disabledDates || changes.incompleteDateValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.isActive = false;\n this.show = false;\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n this.pickerSubscriptions.unsubscribe();\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.show;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.value = cloneDate(value);\n this.cdr.markForCheck();\n if (!value && this.input) {\n this.input.placeholder = this.placeholder;\n this.input.writeValue(value);\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * Focuses the DatePicker component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n this.input.focus();\n }\n /**\n * Blurs the DatePicker component.\n */\n blur() {\n (this.calendar || this.input)['blur']();\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n this.focusInput();\n //XXX: explicitly call the handleFocus handler here\n //due to async IE focus event\n this.handleFocus();\n this.show = !this.show;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleMousedown(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleChange(value) {\n this.cdr.markForCheck();\n this.focusInput();\n this.value = value;\n this.show = false;\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n }\n /**\n * @hidden\n */\n handleInputChange(value) {\n this.handleChange(this.input.formatSections.time ? value : this.mergeTime(value));\n }\n /**\n * @hidden\n */\n get popupClasses() {\n return [\n 'k-calendar-container',\n 'k-group',\n 'k-reset'\n ].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get input() {\n return this.pickerService.input;\n }\n get calendar() {\n return this.pickerService.calendar;\n }\n /**\n * @hidden\n */\n mergeTime(value) {\n return this.value && value ? setTime(value, this.value) : value;\n }\n /**\n * @hidden\n */\n handleKeydown(e) {\n const { altKey, shiftKey, keyCode, target } = e;\n if (keyCode === Keys.Escape) {\n this.show = false;\n }\n if (altKey) {\n if (keyCode === Keys.ArrowDown && !this.show) {\n this.show = true;\n }\n if (keyCode === Keys.ArrowUp) {\n this.show = false;\n }\n }\n if (keyCode === Keys.Tab && this.show && this.calendar.isActive && isTabExitingCalendar(this.calendarType, target, shiftKey)) {\n this.input.focus();\n this.show = false;\n }\n }\n togglePopup(show) {\n const event = new PreventableEvent();\n if (!this._show && show) {\n this.open.emit(event);\n }\n else if (this._show && !show) {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n this.toggleFocus();\n }\n _toggle(show) {\n if (show === this._show) {\n return;\n }\n this._show = show;\n if (show) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: { vertical: 'top', horizontal: direction },\n popupClass: this.popupClasses,\n positionMode: 'absolute'\n });\n this.popupRef.popupElement.setAttribute('id', this.popupUID);\n this.subscription = this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);\n }\n else {\n this.popupRef.close();\n this.popupRef = null;\n this.subscription.unsubscribe();\n }\n }\n focusInput() {\n if (this.touchEnabled) {\n return;\n }\n this.input.focus();\n }\n toggleFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.show) {\n if (!this.calendar) {\n this.cdr.detectChanges();\n }\n if (this.calendar) {\n this.calendar.focus();\n }\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK} and ${MAX_DOC_LINK}.`);\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$2} for possible resolution.`);\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n if (isWindowAvailable()) {\n this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this));\n }\n }\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleWindowBlur() {\n if (!this.isOpen) {\n return;\n }\n this.show = false;\n }\n handleBlur(args) {\n const currentTarget = args && currentFocusTarget(args);\n if (currentTarget && (this.input.containsElement(currentTarget) ||\n (this.calendar && this.calendar.containsElement(currentTarget)))) {\n return;\n }\n if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.blurComponent();\n this.cdr.markForCheck();\n });\n }\n else {\n this.blurComponent();\n }\n }\n blurComponent() {\n this.isActive = false; // order is important ¯\\_(ツ)_/¯\n this.show = false;\n this.cdr.detectChanges();\n this.onControlTouched();\n this.onBlur.emit();\n }\n handleSameSelection() {\n if (this.show) {\n this.focusInput();\n this.show = false;\n }\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.zone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: DisabledDatesService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerComponent, selector: \"kendo-datepicker\", inputs: { cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"], navigationItemTemplateRef: [\"navigationItemTemplate\", \"navigationItemTemplateRef\"], focusableId: \"focusableId\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", popupSettings: \"popupSettings\", navigation: \"navigation\", min: \"min\", max: \"max\", incompleteDateValidation: \"incompleteDateValidation\", focusedDate: \"focusedDate\", value: \"value\", format: \"format\", twoDigitYearMax: \"twoDigitYearMax\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", title: \"title\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", weekNumber: \"weekNumber\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-datepicker\": \"this.wrapperClasses\", \"class.k-input\": \"this.wrapperClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },\n LocalizationService,\n PickerService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.datepicker'\n }\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: \"navigationItemTemplate\", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }], exportAs: [\"kendo-datepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: CalendarComponent, selector: \"kendo-calendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"navigation\", \"activeView\", \"bottomView\", \"topView\", \"type\", \"animateNavigation\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"activeViewDateChange\", \"valueChange\"], exportAs: [\"kendo-calendar\"] }, { type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\" }], directives: [{ type: DatePickerLocalizedMessagesDirective, selector: \"[kendoDatePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-datepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },\n LocalizationService,\n PickerService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.datepicker'\n }\n ],\n selector: 'kendo-datepicker',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: DisabledDatesService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: false }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], focusableId: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], calendarType: [{\n type: Input\n }], animateCalendarNavigation: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], navigation: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], value: [{\n type: Input\n }], format: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesValidation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-datepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nconst TIME_PART = {\n dayperiod: 'dayperiod',\n hour: 'hour',\n millisecond: 'millisecond',\n minute: 'minute',\n second: 'second'\n};\n\n/**\n * @hidden\n */\nconst timeRangeValidator = (min, max) => {\n return (control) => {\n if (!min || !max || !control.value) {\n return null;\n }\n const err = {\n timeRangeError: {\n maxValue: max,\n minValue: min,\n value: control.value\n }\n };\n return isInTimeRange(control.value, min, max) ? null : err;\n };\n};\n\nconst HOURS_IN_DAY = 24;\nconst clampToRange$3 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$3 = clampToRange$3(HOURS_IN_DAY);\nconst stepper$3 = (start, step) => (idx) => clamp$3(start + (idx * step));\nconst distanceFromMin$3 = (value, min) => clamp$3(HOURS_IN_DAY + value - min);\nconst limit$3 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours$1(barrier, borderValue);\n};\nconst limitDown$3 = limit$3(0);\nconst limitUp$3 = limit$3(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nclass HoursService {\n constructor(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setHours$1(value, candidate.getHours());\n }\n configure(settings) {\n const { boundRange = this.boundRange, insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.boundRange = boundRange;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (hour) => {\n const date = setHours$1(MIDNIGHT_DATE, hour);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getHour = stepper$3(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getHour(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return this.boundRange ? [limitDown$3(min, value), limitUp$3(max, value)] : [min, max];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n return matchMax || !this.isMissing(value);\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastHour(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getHours());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$3(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setHours$1(this.max, this.lastHour(value)));\n }\n divideByStep(value) {\n return distanceFromMin$3(value.getHours(), this.min.getHours()) / this.step;\n }\n lastHour(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getHours(), max.getHours()];\n }\n}\nHoursService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nHoursService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst MINUTES_IN_HOUR = 60;\nconst clampToRange$2 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$2 = clampToRange$2(MINUTES_IN_HOUR);\nconst stepper$2 = (start, step) => (idx) => clamp$2(start + (idx * step));\nconst distanceFromMin$2 = (value, min) => clamp$2(MINUTES_IN_HOUR + value - min);\nconst limit$2 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n};\nconst limitDown$2 = limit$2(0);\nconst limitUp$2 = limit$2(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nclass MinutesService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setMinutes(value, candidate.getMinutes());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (minute) => {\n const date = setMinutes(MIDNIGHT_DATE, minute);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getMinute = stepper$2(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getMinute(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown$2(min, value), limitUp$2(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n return matchMax || !this.isMissing(value);\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMinute(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getMinutes());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$2(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n }\n divideByStep(value) {\n return distanceFromMin$2(value.getMinutes(), this.min.getMinutes()) / this.step;\n }\n lastMinute(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getMinutes(), max.getMinutes()];\n }\n}\nMinutesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMinutesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst SECONDS_IN_HOUR = 60;\nconst clampToRange$1 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$1 = clampToRange$1(SECONDS_IN_HOUR);\nconst stepper$1 = (start, step) => (idx) => clamp$1(start + (idx * step));\nconst distanceFromMin$1 = (value, min) => clamp$1(SECONDS_IN_HOUR + value - min);\nconst limit$1 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || barrier.getHours() === value.getHours() && barrier.getMinutes() === value.getMinutes();\n return useBarrier ? barrier : setSeconds(barrier, borderValue);\n};\nconst limitDown$1 = limit$1(0);\nconst limitUp$1 = limit$1(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nclass SecondsService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setSeconds(value, candidate.getSeconds());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (second) => {\n const date = setSeconds(MIDNIGHT_DATE, second);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getSecond = stepper$1(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getSecond(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown$1(min, value), limitUp$1(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n return matchMax || !this.isMissing(value);\n }\n divideByStep(value) {\n return distanceFromMin$1(value.getSeconds(), this.min.getSeconds()) / this.step;\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastSecond(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getSeconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$1(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n }\n lastSecond(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getSeconds(), max.getSeconds()];\n }\n}\nSecondsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nSecondsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst MILLISECONDS_IN_SECOND = 1000;\nconst clampToRange = (rangeValue) => (value) => value % rangeValue;\nconst clamp = clampToRange(MILLISECONDS_IN_SECOND);\nconst stepper = (start, step) => (idx) => clamp(start + (idx * step));\nconst distanceFromMin = (value, min) => clamp(MILLISECONDS_IN_SECOND + value - min);\nconst limit = (borderValue) => (barrier, value) => {\n const useBarrier = !value ||\n (barrier.getHours() === value.getHours() &&\n barrier.getMinutes() === value.getMinutes() &&\n barrier.getSeconds() === value.getSeconds());\n return useBarrier ? barrier : setMilliseconds(barrier, borderValue);\n};\nconst limitDown = limit(0);\nconst limitUp = limit(MILLISECONDS_IN_SECOND - 1);\n/**\n * @hidden\n */\nclass MillisecondsService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setMilliseconds(value, candidate.getMilliseconds());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (millisecond) => {\n const date = setMilliseconds(MIDNIGHT_DATE, millisecond);\n return {\n text: this.intl.formatDate(date, \"SSS\"),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getMillisecond = stepper(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getMillisecond(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastMillisecond(value) === value.getMilliseconds();\n return matchMax || !this.isMissing(value);\n }\n divideByStep(value) {\n return distanceFromMin(value.getMilliseconds(), this.min.getMilliseconds()) / this.step;\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMillisecond(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getMilliseconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setMilliseconds(this.max, this.lastMillisecond(value)));\n }\n lastMillisecond(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getMilliseconds(), max.getMilliseconds()];\n }\n}\nMillisecondsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMillisecondsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst setHours = (date, hours) => {\n const clone = cloneDate(date);\n clone.setHours(hours);\n return clone;\n};\nconst isAM = (value) => value !== null && value < 12;\nconst isPM = (value) => value !== null && (!value || value > 11);\nconst inRange = (value, min, max) => ((!min && !max) || (value >= min && value <= max));\nconst inReverseRange = (value, min, max) => ((!min && !max) || value >= min || value <= max);\n/**\n * @hidden\n */\nclass DayPeriodService {\n constructor(intl) {\n this.intl = intl;\n }\n /**\n * @hidden\n */\n apply(value, candidate) {\n const hour = value.getHours();\n const hourAM = isAM(hour);\n const candidateAM = isAM(candidate.getHours());\n if ((hourAM && candidateAM) || (!hourAM && !candidateAM)) {\n return value;\n }\n const [min, max = 24] = this.normalizedRange();\n const result = hour + (candidateAM ? -12 : 12);\n return setHours(value, Math.min(Math.max(min, result), (max || 24)));\n }\n /**\n * @hidden\n */\n configure(settings) {\n const { min = this.min, max = this.max, part = this.part } = settings;\n this.min = min;\n this.max = max;\n this.part = part;\n }\n /**\n * @hidden\n */\n data(_) {\n const names = this.part.names;\n if (!names) {\n return [];\n }\n const data = [];\n const [min, max] = this.normalizedRange();\n const dayPeriod = this.intl.dateFormatNames(names);\n if (isAM(min)) {\n data.push({ text: dayPeriod.am, value: setHours(this.min, min) });\n }\n if (isPM(max)) {\n data.push({ text: dayPeriod.pm, value: setHours(this.min, Math.max(12, max)) });\n }\n return this.min.getHours() !== min ? data.reverse() : data;\n }\n /**\n * @hidden\n */\n isRangeChanged(_, __) {\n return false;\n }\n /**\n * @hidden\n */\n limitRange(min, max, _) {\n return [min, max];\n }\n /**\n * @hidden\n */\n total() {\n const [min, max] = this.normalizedRange();\n if (!min && !max) {\n return 2;\n }\n if (min > 11 || max < 12) {\n return 1;\n }\n return 2;\n }\n /**\n * @hidden\n */\n selectedIndex(value) {\n if (!this.valueInList(value)) {\n return -1;\n }\n const index = Math.floor(value.getHours() / 12);\n return this.min.getHours() === this.normalizedRange()[0] ? index : (index === 0 ? 1 : 0);\n }\n /**\n * @hidden\n */\n valueInList(value) {\n const reverse = this.min.getHours() !== this.normalizedRange()[0];\n const isInRange = reverse ? inReverseRange : inRange;\n return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n }\n normalizedRange() {\n const minHour = this.min.getHours();\n const maxHour = this.max.getHours();\n return [\n Math.min(minHour, maxHour),\n Math.max(minHour, maxHour)\n ];\n }\n}\nDayPeriodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nDayPeriodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst div = domContainerFactory('div');\nconst ul = domContainerFactory('ul');\nconst li = domContainerFactory('li');\nconst span = domContainerFactory('span');\nconst listTitle = () => span('hour', 'k-title k-timeselector-title');\nconst listItem = () => li('02', 'k-item');\nconst list = () => ul([listItem()], 'k-reset');\nconst scrollable = () => (div([list()], 'k-time-container k-flex k-content k-calendar-content k-scrollable'));\nconst timeListWrapper = () => {\n if (!isDocumentAvailable()) {\n return null;\n }\n return div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n};\nconst TIMELIST_WRAPPER = timeListWrapper();\n/**\n * @hidden\n */\nclass TimePickerDOMService {\n ensureHeights() {\n if (this.timeListHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n }\n calculateHeights(container) {\n if (!isDocumentAvailable()) {\n return;\n }\n const listContainer = container && container.querySelector('.k-time-list-container');\n const hostContainer = listContainer || document.body;\n const wrapper = hostContainer.appendChild(TIMELIST_WRAPPER);\n this.timeListHeight = wrapper.querySelector('.k-scrollable').getBoundingClientRect().height;\n this.itemHeight = wrapper.querySelector('li').getBoundingClientRect().height;\n hostContainer.removeChild(wrapper);\n }\n isActive(element) {\n if (!isDocumentAvailable() || !element) {\n return false;\n }\n return (element.nativeElement || element) === document.activeElement;\n }\n}\nTimePickerDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTimePickerDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService, decorators: [{\n type: Injectable\n }] });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst SNAP_THRESHOLD = 0.05; //% of the item height\nconst SCROLL_THRESHOLD = 2; //< 2px threshold\nconst nil = () => (null);\nconst getters = {\n 35: (data, _) => data[data.length - 1],\n 36: (data, _) => data[0],\n 38: (data, index) => data[index - 1],\n 40: (data, index) => data[index + 1]\n};\nconst services = {\n [TIME_PART.dayperiod]: DayPeriodService,\n [TIME_PART.hour]: HoursService,\n [TIME_PART.minute]: MinutesService,\n [TIME_PART.second]: SecondsService,\n [TIME_PART.millisecond]: MillisecondsService\n};\n/**\n * @hidden\n */\nclass TimeListComponent {\n constructor(element, injector, dom, renderer, zone) {\n this.element = element;\n this.injector = injector;\n this.dom = dom;\n this.renderer = renderer;\n this.zone = zone;\n this.min = cloneDate(MIDNIGHT_DATE);\n this.max = cloneDate(MAX_TIME);\n this.step = 1;\n this.disabled = false;\n this.valueChange = new EventEmitter();\n this.componentClass = true;\n this.animateToIndex = true;\n this.isActive = false;\n this.skip = 0;\n this.total = 60;\n this.data = [];\n this.indexToScroll = -1;\n this.domEvents = [];\n }\n get tabIndex() {\n return this.disabled ? undefined : 0;\n }\n ngOnChanges(changes) {\n if (changes.part) {\n this.service = this.injector.get(services[this.part.type]);\n this.service.configure(this.serviceSettings());\n }\n const value = this.value;\n const valueChanges = changes.value || {};\n const [min, max] = this.service.limitRange(this.min, this.max, value);\n if (this.service.isRangeChanged(min, max) || changes.min || changes.max || changes.step) {\n this.data = [];\n this.service.configure(this.serviceSettings({ min, max }));\n }\n // Skip the rendering of the list whenever possible\n if (!this.data.length || this.hasMissingValue(valueChanges)) {\n this.animateToIndex = false;\n this.data = this.service.data(value);\n }\n this.animateToIndex = this.animateToIndex && this.textHasChanged(valueChanges);\n this.total = this.service.total(value);\n this.indexToScroll = this.selectedIndex(value);\n }\n ngOnInit() {\n this.animateToIndex = true;\n this.dom.ensureHeights();\n this.itemHeight = this.dom.itemHeight;\n this.listHeight = this.dom.timeListHeight;\n this.topOffset = (this.listHeight - this.itemHeight) / 2;\n this.bottomOffset = this.listHeight - this.itemHeight;\n this.topThreshold = this.itemHeight * SNAP_THRESHOLD;\n this.bottomThreshold = this.itemHeight * (1 - SNAP_THRESHOLD);\n const translate = `translateY(${this.topOffset}px)`;\n this.style = { transform: translate, '-ms-transform': translate };\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnDestroy() {\n this.scrollSubscription.unsubscribe();\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n ngAfterViewInit() {\n this.scrollOnce((index) => this.virtualization.scrollToIndex(index));\n }\n ngAfterViewChecked() {\n this.scrollOnce((index) => {\n const action = this.animateToIndex ? 'animateToIndex' : 'scrollToIndex';\n this.virtualization[action](index);\n this.animateToIndex = true;\n });\n }\n handleChange(dataItem) {\n const candidate = this.service.apply(this.value, dataItem.value);\n if (this.value.getTime() === candidate.getTime()) {\n return;\n }\n this.indexToScroll = this.data.indexOf(dataItem);\n this.value = candidate;\n this.valueChange.emit(candidate);\n }\n handleItemClick(args) {\n const item = closestInScope(args.target, node => node.hasAttribute('data-timelist-item-index'), this.element.nativeElement);\n if (item) {\n const index = item.getAttribute('data-timelist-item-index');\n this.handleChange(this.data[index]);\n }\n }\n /**\n * Focuses the host element of the TimeList.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.focus();\n }\n /**\n * Blurs the TimeList component.\n */\n blur() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.blur();\n }\n itemOffset(scrollTop) {\n const valueIndex = this.selectedIndex(this.value);\n const activeIndex = this.virtualization.activeIndex();\n const offset = this.virtualization.itemOffset(activeIndex);\n const distance = Math.abs(Math.ceil(scrollTop) - offset);\n if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n return offset;\n }\n const scrollUp = valueIndex > activeIndex;\n const moveToNext = scrollUp && distance >= this.bottomThreshold || !scrollUp && distance > this.topThreshold;\n return moveToNext ? this.virtualization.itemOffset(activeIndex + 1) : offset;\n }\n hasMissingValue({ previousValue, currentValue }) {\n const isPreviousMissing = previousValue && !this.service.valueInList(previousValue);\n const isCurrentMissing = currentValue && !this.service.valueInList(currentValue);\n return isPreviousMissing || isCurrentMissing;\n }\n scrollOnce(action) {\n if (this.indexToScroll !== -1) {\n action(this.indexToScroll);\n this.indexToScroll = -1;\n }\n }\n serviceSettings(settings) {\n const defaults = {\n boundRange: false,\n insertUndividedMax: false,\n max: this.max,\n min: this.min,\n part: this.part,\n step: this.step\n };\n const result = Object.assign({}, defaults, settings);\n result.boundRange = result.part.type !== 'hour';\n return result;\n }\n selectedIndex(value) {\n if (!value) {\n return -1;\n }\n return this.service.selectedIndex(value);\n }\n textHasChanged({ previousValue, currentValue }) {\n if (!previousValue || !currentValue) {\n return false;\n }\n const oldData = this.data[this.selectedIndex(previousValue)];\n const newData = this.data[this.selectedIndex(currentValue)];\n return oldData && newData && oldData.text !== newData.text;\n }\n handleKeyDown(e) {\n const getter = getters[e.keyCode] || nil;\n const dataItem = getter(this.data, this.service.selectedIndex(this.value));\n if (dataItem) {\n this.handleChange(dataItem);\n e.preventDefault();\n }\n }\n bindEvents() {\n this.scrollSubscription = this.virtualization\n .scroll$()\n .pipe(debounceTime(100), map((e) => e.target.scrollTop), map((top) => this.itemOffset(top)), map((itemOffset) => this.virtualization.itemIndex(itemOffset)))\n .subscribe(index => {\n this.virtualization.scrollToIndex(index);\n this.handleChange(this.data[index]);\n });\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'mouseover', () => !this.isActive && this.focus()), this.renderer.listen(element, 'click', () => this.focus()), this.renderer.listen(element, 'blur', () => this.isActive = false), this.renderer.listen(element, 'focus', () => this.isActive = true), this.renderer.listen(element, 'keydown', this.handleKeyDown.bind(this)));\n }\n}\nTimeListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeListComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: TimePickerDOMService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTimeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeListComponent, selector: \"kendo-timelist\", inputs: { min: \"min\", max: \"max\", part: \"part\", step: \"step\", disabled: \"disabled\", value: \"value\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"attr.tabindex\": \"this.tabIndex\", \"class.k-time-list\": \"this.componentClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n
    \n
  • \n {{item.text}}\n
  • \n
\n \n `, isInline: true, components: [{ type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }], directives: [{ type: i7.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-timelist',\n template: `\n \n
    \n
  • \n {{item.text}}\n
  • \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: TimePickerDOMService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { min: [{\n type: Input\n }], max: [{\n type: Input\n }], part: [{\n type: Input\n }], step: [{\n type: Input\n }], disabled: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: true }]\n }], tabIndex: [{\n type: HostBinding,\n args: [\"attr.tabindex\"]\n }], componentClass: [{\n type: HostBinding,\n args: [\"class.k-time-list\"]\n }] } });\n\nconst isEqualTillMinute = (value, min) => value.getHours() === min.getHours() && value.getMinutes() === min.getMinutes();\nconst isEqualTillSecond = (value, min) => isEqualTillMinute(value, min) && value.getSeconds() === min.getSeconds();\nconst isEqualTillMillisecond = (value, min) => isEqualTillSecond(value, min) && value.getMilliseconds() === min.getMilliseconds();\nconst defaultGetters = [\n {\n type: TIME_PART.hour,\n getter: (value) => value.getHours(),\n minGetter: (_, min) => min.getHours()\n }, {\n type: TIME_PART.minute,\n getter: (value) => value.getMinutes(),\n minGetter: (value, min) => isEqualTillMinute(value, min) ? min.getMinutes() : 0\n }, {\n type: TIME_PART.second,\n getter: (value) => value.getSeconds(),\n minGetter: (value, min) => isEqualTillSecond(value, min) ? min.getSeconds() : 0\n }, {\n type: TIME_PART.millisecond,\n getter: (value) => value.getMilliseconds(),\n minGetter: (value, min) => isEqualTillMillisecond(value, min) ? min.getMilliseconds() : 0\n }\n];\nconst left = getter => (origin, _) => getter(origin);\nconst right = getter => (_, candidate) => getter(candidate);\nconst convertToObject = (parts) => parts.reduce((obj, p) => { obj[p.type] = p.type; return obj; }, {});\nconst getterByPart = parts => g => parts[g.type] ? right(g.getter) : left(g.getter);\nconst gettersFactory = getters => parts => (getters.map(getterByPart(convertToObject(parts))));\nconst snapValue = (getter, minGetter, step) => (date, min) => {\n const value = getter(date);\n const minValue = minGetter(date, min);\n const rest = value - minValue;\n if (rest < 0) {\n return minValue;\n }\n const mod = rest % step;\n return value - mod + (mod > step / 2 ? step : 0);\n};\nconst snappersFactory = (getters) => steps => (getters.map(g => {\n const step = steps[g.type];\n return step ? snapValue(g.getter, g.minGetter, step) : g.getter;\n}));\n/**\n * @hidden\n */\nconst generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nconst generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nconst valueMerger = getters => (origin, candidate) => {\n origin.setHours(...getters.map(g => g(origin, candidate)));\n return origin;\n};\n/**\n * @hidden\n */\nconst snapTime = snappers => (candidate, min) => {\n const date = cloneDate(candidate);\n date.setHours(...snappers.map(s => s(date, min)));\n return date;\n};\n\n/**\n * @hidden\n */\nclass TimePickerMessages extends ComponentMessages {\n}\nTimePickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTimePickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerMessages, selector: \"kendo-timepicker-messages-base\", inputs: { accept: \"accept\", acceptLabel: \"acceptLabel\", cancel: \"cancel\", cancelLabel: \"cancelLabel\", now: \"now\", nowLabel: \"nowLabel\", toggle: \"toggle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-timepicker-messages-base'\n }]\n }], propDecorators: { accept: [{\n type: Input\n }], acceptLabel: [{\n type: Input\n }], cancel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], now: [{\n type: Input\n }], nowLabel: [{\n type: Input\n }], toggle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TimeSelectorLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nTimeSelectorLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nTimeSelectorLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorLocalizedMessagesDirective, selector: \"[kendoTimeSelectorLocalizedMessages]\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoTimeSelectorLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst listReducer = (state, list, idx, all) => {\n if (state.length || !list.isActive) {\n return state;\n }\n return [{\n next: all[idx + 1] || list,\n prev: all[idx - 1] || list\n }];\n};\nvar Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n *\n * Represents the Kendo UI TimeSelector component for Angular.\n */\nclass TimeSelectorComponent {\n constructor(localization, cdr, element, intl, dom, zone, renderer, pickerService) {\n this.localization = localization;\n this.cdr = cdr;\n this.element = element;\n this.intl = intl;\n this.dom = dom;\n this.zone = zone;\n this.renderer = renderer;\n this.pickerService = pickerService;\n /**\n * Specifies the time format used to display the time list columns.\n */\n this.format = 't';\n /**\n * Specifies the smallest valid time value.\n */\n this.min = cloneDate(MIN_TIME);\n /**\n * Specifies the biggest valid time value.\n */\n this.max = cloneDate(MAX_TIME);\n /**\n * Determines whether to display the **Cancel** button in the popup.\n */\n this.cancelButton = true;\n /**\n * Determines whether to display the **Set** button in the popup.\n */\n this.setButton = true;\n /**\n * Determines whether to display the **Now** button in the popup.\n *\n * > If the current time is out of range or the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n this.nowButton = true;\n /**\n * Sets or gets the `disabled` property of the TimeSelector and determines whether the component is active.\n */\n this.disabled = false;\n /**\n * Specifies the value of the TimeSelector component.\n */\n this.value = null;\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user cancels the selected value.\n */\n this.valueReject = new EventEmitter();\n this.isActive = false;\n this.showNowButton = true;\n this._activeListIndex = -1;\n this._steps = {};\n this.domEvents = [];\n if (this.pickerService) {\n this.pickerService.timeSelector = this;\n }\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * Configures the incremental steps of the TimeSelector.\n *\n * The available options are:\n * - `hour: Number`—Controls the incremental step of the hour value.\n * - `minute: Number`—Controls the incremental step of the minute value.\n * - `second: Number`—Controls the incremental step of the second value.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public steps = { hour: 2, minute: 15, second: 15 };\n * }\n * ```\n *\n * > If the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n set steps(steps) {\n this._steps = steps || {};\n }\n get steps() {\n return this._steps;\n }\n set current(value) {\n this._current = timeInRange(this.snapTime(cloneDate(value || MIDNIGHT_DATE), this.min), this.min, this.max);\n if (!NgZone.isInAngularZone()) {\n this.cdr.detectChanges();\n }\n }\n get current() {\n return this._current;\n }\n get activeListIndex() {\n return this._activeListIndex;\n }\n set activeListIndex(value) {\n this._activeListIndex = value;\n if (!this.timeListWrappers || !this.timeListWrappers.length) {\n return;\n }\n this.timeListWrappers.forEach(listWrapper => {\n this.renderer.removeClass(listWrapper.nativeElement, 'k-state-focused');\n });\n if (value >= 0) {\n const listIndex = this.listIndex(value);\n const focusedWrapper = this.timeListWrappers.toArray()[listIndex];\n if (focusedWrapper) {\n this.renderer.addClass(focusedWrapper.nativeElement, 'k-state-focused');\n }\n }\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions = this.intl.changes.subscribe(this.intlChange.bind(this));\n if (this.localization) {\n this.subscriptions.add(this.localization\n .changes\n .subscribe(() => this.cdr.markForCheck()));\n }\n this.renderer.addClass(this.element.nativeElement, 'k-timeselector');\n this.dom.calculateHeights(this.element.nativeElement);\n this.init();\n this.bindEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(_) {\n this.init();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.pickerService) {\n this.pickerService.timeSelector = null;\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n /**\n * Focuses the TimeSelector component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const list = this.timeLists.first;\n if (!list) {\n return;\n }\n list.focus();\n }\n /**\n * Blurs the TimeSelector component.\n */\n blur() {\n const list = this.timeLists.first;\n if (!list) {\n return;\n }\n list.blur();\n }\n /**\n * @hidden\n */\n handleAccept() {\n this.handleChange(this.mergeValue(cloneDate(this.value || getDate(getNow())), this.current));\n }\n /**\n * @hidden\n */\n handleNow() {\n this.current = getNow();\n this.handleChange(this.current);\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleReject() {\n this.current = this.value;\n this.valueReject.emit();\n }\n /**\n * @hidden\n */\n handleFocus(args) {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n this.emitFocus(args);\n }\n /**\n * @hidden\n */\n handleListFocus(args) {\n const index = parseInt(args.target.getAttribute('data-timelist-index'), 10);\n this.activeListIndex = index;\n this.handleFocus(args);\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n const currentTarget = currentFocusTarget(args);\n if (currentTarget && this.containsElement(currentTarget)) {\n return;\n }\n this.activeListIndex = -1;\n this.isActive = false;\n this.emitBlur(args);\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.element.nativeElement));\n }\n partStep(part) {\n return this.steps[part.type] || 1;\n }\n init(changes) {\n if (!changes || hasChange(changes, 'format')) {\n this.dateFormatParts = this.intl.splitDateFormat(this.format);\n this.mergeValue = valueMerger(generateGetters(this.dateFormatParts));\n }\n if (!changes || hasChange(changes, 'steps')) {\n this.snapTime = snapTime(generateSnappers(this.steps));\n }\n if (!changes || hasChange(changes, 'value')) {\n this.current = this.value;\n }\n this.showNowButton = !this.hasSteps() && this.nowButton && isInTimeRange(getNow(), this.min, this.max);\n }\n focusList(dir) {\n if (!this.timeLists.length) {\n return;\n }\n this.timeLists.reduce(listReducer, [])\n .map(state => dir === Direction.Right ? state.next : state.prev)\n .map(list => list && list.focus());\n }\n handleChange(value) {\n this.value = value;\n this.valueChange.emit(cloneDate(value));\n }\n hasActiveButton() {\n if (!this.accept) {\n return false;\n }\n return [this.accept, this.cancel, this.now].reduce((isActive, el) => isActive || this.dom.isActive(el), false);\n }\n hasSteps() {\n const keys = Object.keys(this.steps);\n return keys.length !== keys.reduce((acc, k) => acc + this.steps[k], 0);\n }\n intlChange() {\n this.dateFormatParts = this.intl.splitDateFormat(this.format);\n this.mergeValue = valueMerger(generateGetters(this.dateFormatParts));\n this.cdr.markForCheck();\n }\n bindEvents() {\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.domEvents.push(this.renderer.listen(this.element.nativeElement, 'keydown', this.handleKeydown.bind(this)));\n });\n }\n }\n handleKeydown(args) {\n const { keyCode, altKey } = args;\n // reserve the alt + arrow key commands for the picker\n const arrowKeyPressed = [Keys.ArrowLeft, Keys.ArrowRight].indexOf(keyCode) !== -1;\n if (isPresent(this.pickerService) && arrowKeyPressed && altKey) {\n return;\n }\n if (keyCode === Keys.Enter && !this.hasActiveButton()) {\n this.handleAccept();\n }\n else if (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight) {\n this.focusList(keyCode === Keys.ArrowLeft ? Direction.Left : Direction.Right);\n }\n }\n emitBlur(args) {\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n emitFocus(args) {\n if (this.pickerService) {\n this.pickerService.onFocus.emit(args);\n }\n }\n listIndex(partIndex) {\n let listIdx = 0;\n let partIdx = 0;\n while (partIdx < partIndex) {\n if (this.dateFormatParts[partIdx].type !== 'literal') {\n listIdx++;\n }\n partIdx++;\n }\n return listIdx;\n }\n}\nTimeSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.IntlService }, { token: TimePickerDOMService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nTimeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: { format: \"format\", min: \"min\", max: \"max\", cancelButton: \"cancelButton\", setButton: \"setButton\", nowButton: \"nowButton\", disabled: \"disabled\", steps: \"steps\", value: \"value\" }, outputs: { valueChange: \"valueChange\", valueReject: \"valueReject\" }, host: { properties: { \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeselector'\n }\n ], viewQueries: [{ propertyName: \"accept\", first: true, predicate: [\"accept\"], descendants: true }, { propertyName: \"cancel\", first: true, predicate: [\"cancel\"], descendants: true }, { propertyName: \"now\", first: true, predicate: [\"now\"], descendants: true }, { propertyName: \"timeLists\", predicate: TimeListComponent, descendants: true }, { propertyName: \"timeListWrappers\", predicate: [\"listWrapper\"], descendants: true }], exportAs: [\"kendo-timeselector\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
\n \n {{ intl.formatDate(current, format) }}\n \n {{localization.get('now')}}\n
\n
\n \n \n \n {{intl.dateFieldName(part)}}\n \n
\n
\n {{part.pattern}}\n
\n
\n \n \n `, isInline: true, components: [{ type: TimeListComponent, selector: \"kendo-timelist\", inputs: [\"min\", \"max\", \"part\", \"step\", \"disabled\", \"value\"], outputs: [\"valueChange\"] }], directives: [{ type: TimeSelectorLocalizedMessagesDirective, selector: \"[kendoTimeSelectorLocalizedMessages]\" }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-timeselector',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeselector'\n }\n ],\n selector: 'kendo-timeselector',\n template: `\n \n \n
\n \n {{ intl.formatDate(current, format) }}\n \n {{localization.get('now')}}\n
\n
\n \n \n \n {{intl.dateFieldName(part)}}\n \n
\n
\n {{part.pattern}}\n
\n
\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.IntlService }, { type: TimePickerDOMService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { accept: [{\n type: ViewChild,\n args: ['accept', { static: false }]\n }], cancel: [{\n type: ViewChild,\n args: ['cancel', { static: false }]\n }], now: [{\n type: ViewChild,\n args: ['now', { static: false }]\n }], timeLists: [{\n type: ViewChildren,\n args: [TimeListComponent]\n }], timeListWrappers: [{\n type: ViewChildren,\n args: ['listWrapper']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], format: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], setButton: [{\n type: Input\n }], nowButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], steps: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], valueReject: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n *\n * Custom component messages override default component messages.\n */\nclass TimeSelectorCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTimeSelectorCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTimeSelectorCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent)\n }\n ],\n selector: 'kendo-timeselector-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass TimePickerLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nTimePickerLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nTimePickerLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerLocalizedMessagesDirective, selector: \"[kendoTimePickerLocalizedMessages]\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoTimePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst VALUE_DOC_LINK$1 = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker/#toc-integration-with-json';\nconst INTL_DATE_FORMAT = 'https://github.com/telerik/kendo-intl/blob/master/docs/date-formatting/index.md';\nconst formatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.millisecond}|${TIME_PART.dayperiod}|literal`);\n/**\n * Represents the [Kendo UI TimePicker component for Angular]({% slug overview_timepicker %}#toc-basic-usage).\n */\nclass TimePickerComponent {\n constructor(zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, intl, touchEnabled) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.intl = intl;\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets or gets the `disabled` property of the TimePicker and\n * determines whether the component is active\n * ([see example]({% slug disabled_timepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the TimePicker\n * ([see example]({% slug readonly_timepicker %}#toc-read-only-timepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the TimePicker input field\n * ([see example]({% slug readonly_timepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_timepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Specifies the time format that is used to display the input value\n * ([see example]({% slug formats_timepicker %})).\n */\n this.format = 't';\n /**\n * Specifies the hint the TimePicker displays when its value is `null`.\n * For more information, refer to the article on\n * [placeholders]({% slug placeholders_timepicker %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Determines whether to display the **Cancel** button in the popup.\n */\n this.cancelButton = true;\n /**\n * Determines whether to display the **Now** button in the popup.\n *\n * > If the current time is out of range or the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n this.nowButton = true;\n /**\n * Sets or gets the `tabindex` property of the TimePicker.\n */\n this.tabindex = 0;\n /**\n * Sets the title of the input element of the TimePicker.\n */\n this.title = \"\";\n /**\n * Determines whether the built-in min or max validators are enforced when a form is being validated.\n */\n this.rangeValidation = true;\n /**\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the input element.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.wrapperClasses = true;\n this.popupUID = guid();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.resolvedPromise = Promise.resolve(null);\n this.timeRangeValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this._min = cloneDate(MIN_TIME);\n this._max = cloneDate(MAX_TIME);\n this._popupSettings = { animate: true };\n this._show = false;\n this._steps = {};\n this._value = null;\n this._active = false;\n this.domEvents = [];\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n this.pickerSubscriptions = this.pickerService.onFocus.subscribe(this.handleFocus.bind(this));\n this.pickerSubscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n }\n /**\n * Specifies the smallest valid time value\n * ([see example]({% slug timeranges_timepicker %})).\n */\n set min(min) {\n this._min = cloneDate(min || MIN_TIME);\n }\n get min() {\n return this._min;\n }\n /**\n * Specifies the biggest valid time value\n * ([see example]({% slug timeranges_timepicker %})).\n */\n set max(max) {\n this._max = cloneDate(max || MAX_TIME);\n }\n get max() {\n return this._max;\n }\n /**\n * Configures the incremental steps of the TimePicker.\n * For more information, refer to the article on\n * [incremental steps]({% slug incrementalsteps_timepicker %}).\n *\n * > If the incremental step is greater than `1`, the **Now** button will be hidden.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public steps = { hour: 2, minute: 15, second: 15, millisecond: 10 };\n * }\n * ```\n *\n */\n set steps(steps) {\n this._steps = steps || {};\n }\n get steps() {\n return this._steps;\n }\n /**\n * Configures the popup of the TimePicker.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the TimePicker component.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n }\n get value() {\n return this._value;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n get show() {\n return this._show;\n }\n set show(show) {\n if (show && (this.disabled || this.readonly)) {\n return;\n }\n const skipZone = !show && (!this._show || !hasObservers(this.close));\n if (!skipZone) {\n this.zone.run(() => {\n this.togglePopup(show);\n });\n }\n else {\n this.togglePopup(show);\n }\n }\n get input() {\n return this.pickerService.input;\n }\n get timeSelector() {\n return this.pickerService.timeSelector;\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty\n */\n isEmpty() {\n return !this.value && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(() => this.cdr.markForCheck());\n this.control = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.min || changes.max || changes.rangeValidation || changes.incompleteDateValidation) {\n this.timeRangeValidateFn = this.rangeValidation ? timeRangeValidator(this.min, this.max) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n if (changes.format) {\n this.verifyFormat();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.isActive = false;\n this.show = false;\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n this.pickerSubscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const { altKey, keyCode } = event;\n if (keyCode === Keys.Escape) {\n this.show = false;\n return;\n }\n if (altKey) {\n if (keyCode === Keys.ArrowUp) {\n this.show = false;\n }\n if (keyCode === Keys.ArrowDown && !this.show) {\n this.show = true;\n }\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.value = cloneDate(value);\n this.cdr.markForCheck();\n if (!value && this.input) {\n this.input.placeholder = this.placeholder;\n this.input.writeValue(value);\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.timeRangeValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * Focuses the TimePicker component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n this.input.focus();\n }\n /**\n * Blurs the TimePicker component.\n */\n blur() {\n (this.timeSelector || this.input)['blur']();\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.show;\n }\n /**\n * @hidden\n */\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n handleChange(value) {\n if (isEqual(this.value, value)) {\n this.focusInput();\n this.show = false;\n return;\n }\n this.value = cloneDate(value);\n this.zone.run(() => {\n this.focusInput();\n this.show = false;\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n });\n }\n /**\n * @hidden\n */\n handleReject() {\n this.show = false;\n }\n /**\n * @hidden\n */\n handleInputChange(value) {\n const val = this.input.formatSections.date ? value : this.mergeTime(value);\n this.handleChange(val);\n }\n /**\n * @hidden\n */\n handleMousedown(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n this.focusInput();\n //XXX: explicit call handleFocus handler here\n //due to async IE focus event\n this.handleFocus();\n this.show = !this.show;\n }\n /**\n * @hidden\n */\n get popupClasses() {\n return [\n 'k-group',\n 'k-reset'\n ].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n normalizeTime(date) {\n return setTime(MIDNIGHT_DATE, date);\n }\n /**\n * @hidden\n */\n mergeTime(value) {\n return this.value && value ? setTime(this.value, value) : value;\n }\n togglePopup(show) {\n const event = new PreventableEvent();\n if (!this._show && show) {\n this.open.emit(event);\n }\n else if (this._show && !show) {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n this.toggleFocus();\n }\n _toggle(show) {\n if (show === this.isOpen) {\n return;\n }\n this._show = show;\n this.cdr.markForCheck();\n if (show) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: { vertical: 'top', horizontal: direction },\n popupClass: this.popupClasses,\n positionMode: 'absolute'\n });\n this.popupRef.popupElement.setAttribute('id', this.popupUID);\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);\n }\n else {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n focusInput() {\n if (this.touchEnabled) {\n return;\n }\n this.input.focus();\n }\n toggleFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.show) {\n if (!this.timeSelector) {\n this.cdr.detectChanges();\n }\n if (this.isActive) {\n this.timeSelector.focus();\n }\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$1} for possible resolution.`);\n }\n }\n verifyFormat() {\n if (!isDevMode()) {\n return;\n }\n const formatContainsDateParts = this.intl.splitDateFormat(this.format).some(part => !formatRegExp.test(part.type));\n if (formatContainsDateParts) {\n throw new Error(`Provided format is not supported. Supported specifiers are T|t|H|h|m|s|S|a. See ${INTL_DATE_FORMAT}`);\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n if (isWindowAvailable()) {\n this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this));\n }\n }\n handleWindowBlur() {\n if (!this.isOpen) {\n return;\n }\n this.show = false;\n }\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleBlur(args) {\n const currentTarget = args && currentFocusTarget(args);\n if (currentTarget && (this.input.containsElement(currentTarget) ||\n (this.timeSelector && this.timeSelector.containsElement(currentTarget)))) {\n return;\n }\n if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.blurComponent();\n this.cdr.markForCheck();\n });\n }\n else {\n this.blurComponent();\n }\n }\n blurComponent() {\n this.isActive = false; // order is important ¯\\_(ツ)_/¯\n this.show = false;\n this.onControlTouched();\n this.onBlur.emit();\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.zone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerComponent, deps: [{ token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: i1.IntlService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerComponent, selector: \"kendo-timepicker\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", min: \"min\", max: \"max\", incompleteDateValidation: \"incompleteDateValidation\", cancelButton: \"cancelButton\", nowButton: \"nowButton\", steps: \"steps\", popupSettings: \"popupSettings\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", title: \"title\", rangeValidation: \"rangeValidation\", value: \"value\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-timepicker\": \"this.wrapperClasses\", \"class.k-input\": \"this.wrapperClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timepicker'\n },\n PickerService\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true }, { propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }], exportAs: [\"kendo-timepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: [\"format\", \"min\", \"max\", \"cancelButton\", \"setButton\", \"nowButton\", \"disabled\", \"steps\", \"value\"], outputs: [\"valueChange\", \"valueReject\"], exportAs: [\"kendo-timeselector\"] }, { type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\" }], directives: [{ type: TimePickerLocalizedMessagesDirective, selector: \"[kendoTimePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-timepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timepicker'\n },\n PickerService\n ],\n selector: 'kendo-timepicker',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: i1.IntlService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: false }]\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], nowButton: [{\n type: Input\n }], steps: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], value: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-timepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-datetimepicker-messages-base\", inputs: { toggle: \"toggle\", dateTab: \"dateTab\", dateTabLabel: \"dateTabLabel\", timeTab: \"timeTab\", timeTabLabel: \"timeTabLabel\", accept: \"accept\", acceptLabel: \"acceptLabel\", cancel: \"cancel\", cancelLabel: \"cancelLabel\", today: \"today\", now: \"now\", nowLabel: \"nowLabel\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-datetimepicker-messages-base'\n }]\n }], propDecorators: { toggle: [{\n type: Input\n }], dateTab: [{\n type: Input\n }], dateTabLabel: [{\n type: Input\n }], timeTab: [{\n type: Input\n }], timeTabLabel: [{\n type: Input\n }], accept: [{\n type: Input\n }], acceptLabel: [{\n type: Input\n }], cancel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], today: [{\n type: Input\n }], now: [{\n type: Input\n }], nowLabel: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoDateTimePickerLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDateTimePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst timeFormatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.dayperiod}|literal`);\nconst VALUE_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/integration-with-json/';\nconst MIN_MAX_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/date-time-limits/';\nconst DEFAULT_ACTIVE_TAB = 'date';\nconst DEFAULT_DATEINPUT_FORMAT = 'g';\nconst DEFAULT_TIMESELECTOR_FORMAT = 't';\nconst TWO_DIGIT_YEAR_MAX = 68;\n/**\n * Represents the [Kendo UI DateTimePicker component for Angular]({% slug overview_datetimepicker %}).\n */\nclass DateTimePickerComponent {\n constructor(popupService, intl, cdr, pickerService, ngZone, wrapper, touchEnabled, localization, disabledDatesService, renderer) {\n this.popupService = popupService;\n this.intl = intl;\n this.cdr = cdr;\n this.pickerService = pickerService;\n this.ngZone = ngZone;\n this.wrapper = wrapper;\n this.touchEnabled = touchEnabled;\n this.localization = localization;\n this.disabledDatesService = disabledDatesService;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_datetimepicker %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets the title of the input element of the DateTimePicker.\n */\n this.title = '';\n /**\n * Sets or gets the `disabled` property of the DateTimePicker and determines whether the component is active\n * ([see example]({% slug disabled_datetimepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the DateTimePicker\n * ([see example]({% slug readonly_datetimepicker %}#toc-read-only-datetimepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the DateTimePicker input field\n * ([see example]({% slug readonly_datetimepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_datetimepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Determines whether to display the **Cancel** button in the popup\n * ([see example]({% slug datetimepicker_popup_options %}#toc-toggling-the-cancel-button)).\n */\n this.cancelButton = true;\n /**\n * Configures the incremental steps of the DateInput and the popup component of the TimePicker\n * ([see example]({% slug incrementalsteps_datetimepicker %})).\n */\n this.steps = {};\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n this.calendarType = 'infinite';\n /**\n * Determines whether to enable animation when navigating to previous/next Calendar view.\n * Applies to the [`classic`]({% slug api_dateinputs_datetimepickercomponent %}#toc-calendartype) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateCalendarNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view of the popup Calendar\n * ([see example]({% slug datetimepicker_calendar_options %}#toc-week-number-column)).\n */\n this.weekNumber = false;\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form\n * ([see example]({% slug dateranges_datetimepicker %}#toc-prevent-invalid-input)).\n */\n this.rangeValidation = true;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_datetimepicker %}#toc-validation)).\n */\n this.disabledDatesValidation = true;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Fires each time the user selects a new value.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event by setting `event.preventDefault()`, the popup will remain closed.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event by setting `event.preventDefault()`, the popup will remain open.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the user focuses the component.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the user blurs the component.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n *\n * Controls whether the Calendar or the TimeSelector will be displayed.\n */\n this.activeTab = DEFAULT_ACTIVE_TAB;\n /**\n * @hidden\n *\n * Specifies the stripped time-related format that is used in the TimeSelector.\n * Updates each time the `format` property value changes.\n */\n this.timeSelectorFormat = DEFAULT_TIMESELECTOR_FORMAT;\n /**\n * @hidden\n */\n this.timeSelectorMin = cloneDate(MIN_TIME);\n /**\n * @hidden\n */\n this.timeSelectorMax = cloneDate(MAX_TIME);\n /**\n * @hidden\n */\n this.calendarValue = null;\n /**\n * @hidden\n */\n this.calendarMin = cloneDate(MIN_DATE);\n /**\n * @hidden\n */\n this.calendarMax = lastMillisecondOfDate(MAX_DATE);\n this._popupSettings = { animate: true };\n this._value = null;\n this._format = DEFAULT_DATEINPUT_FORMAT;\n this._tabindex = 0;\n this._defaultTab = DEFAULT_ACTIVE_TAB;\n this._min = mergeDateAndTime(MIN_DATE, MIN_TIME);\n this._max = mergeDateAndTime(MAX_DATE, MAX_TIME);\n this._isActive = false;\n this.onControlTouched = noop$2;\n this.onControlChange = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this.subscriptions = new Subscription();\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get input() {\n return this.pickerService.input;\n }\n /**\n * @hidden\n */\n get calendar() {\n return this.pickerService.calendar;\n }\n /**\n * @hidden\n */\n get timeSelector() {\n return this.pickerService.timeSelector;\n }\n /**\n * Specifies the value of the DateTimePicker component.\n *\n * > The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n this.setCalendarValue(value);\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the date format for displaying the input value\n * ([see example]({% slug formats_datetimepicker %}))\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n *\n * > If a [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) object is provided, the `displayFormat` value will be used for the popup TimePicker.\n */\n set format(format) {\n this._format = format;\n const displayFormat = this.getDisplayFormat(format);\n this.timeSelectorFormat = this.getTimeSelectorFormat(displayFormat);\n }\n get format() {\n return this._format;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the DateTimePicker.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the dates of the DateTimePicker that will be disabled\n * ([see example]({% slug disabled_dates_datetimepicker %})).\n */\n set disabledDates(value) {\n this._disabledDates = value;\n this.disabledDatesService.initialize(value);\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Configures the popup settings of the DateTimePicker\n * ([see example]({% slug datetimepicker_popup_options %}#toc-customizing-the-popup)).\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the smallest valid date.\n * The Calendar will not display dates before this value.\n * If the `min` value of the Calendar is selected, the TimePicker will not display\n * time entries before the specified time portion of this value\n * ([see example]({% slug dateranges_datetimepicker %})).\n */\n set min(value) {\n if (!isPresent(value)) {\n return;\n }\n this._min = cloneDate(value);\n this.calendarMin = getDate(value);\n }\n get min() {\n return this._min;\n }\n /**\n * Specifies the biggest valid date.\n * The Calendar will not display dates after this value.\n * If the `max` value of the Calendar is selected, the TimePicker will not display\n * time entries after the specified time portion of this value\n * ([see example]({% slug dateranges_datetimepicker %})).\n */\n set max(value) {\n if (!isPresent(value)) {\n return;\n }\n this._max = cloneDate(value);\n this.calendarMax = lastMillisecondOfDate(value);\n }\n get max() {\n return this._max;\n }\n /**\n * Indicates whether the component is currently open.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n /**\n * Indicates whether the component or its popup content is focused.\n */\n get isActive() {\n return this._isActive;\n }\n set isActive(value) {\n if (value) {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-focus');\n }\n else {\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-focus');\n }\n this._isActive = value;\n }\n /**\n * Sets the active tab on opening the popup\n * ([see example]({% slug datetimepicker_popup_options %}#toc-setting-the-default-tab)).\n */\n set defaultTab(tab) {\n this._defaultTab = tab || DEFAULT_ACTIVE_TAB;\n this.activeTab = this.defaultTab;\n }\n get defaultTab() {\n return this._defaultTab;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get tabSwitchTransition() {\n /*\n When the popup is opening, disables the set transition in the themes. When `defaultTab` is set to `time`,\n the popup opens with an active **Time** tab and the animation of the initial transition is undesired.\n Setting the inline transition style to `none` overrides the set animation in the themes.\n Setting the inline transition style to `null` does not apply any inline styles or override the themes CSS.\n */\n return this.isOpen ? null : 'none';\n }\n /**\n * @hidden\n *\n * Indicates whether the Calendar will be disabled.\n * The inactive tab component gets disabled and becomes inaccessible on tab click.\n */\n get disableCalendar() {\n return this.activeTab !== 'date' && !this.calendar.isActive;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n /**\n * @hidden\n *\n * Indicates whether the TimeSelector will be disabled.\n * The inactive tab component gets disabled and becomes inaccessible on tab click.\n */\n get disableTimeSelector() {\n return this.activeTab !== 'time' && !this.timeSelector.isActive;\n }\n get activeTabComponent() {\n if (!this.isOpen) {\n return;\n }\n if (!(isPresent(this.calendar) || isPresent(this.timeSelector))) {\n this.cdr.detectChanges();\n }\n return this.activeTab === 'date' ? this.calendar : this.timeSelector;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!isPresent(appendTo) || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n ngOnInit() {\n this.subscriptions.add(this.pickerService.onFocus\n // detect popup changes to disable the inactive view mark-up when the popup is open\n .pipe(tap(this.detectPopupChanges.bind(this)))\n .subscribe(this.handleFocus.bind(this)));\n this.subscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.subscriptions.add(this.pickerService.sameDateSelected.subscribe(this.handleCalendarValueChange.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(() => this.cdr.markForCheck()));\n this.subscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n if (isWindowAvailable()) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => fromEvent(window, 'blur').subscribe(this.handleCancel.bind(this))));\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.min) || isPresent(changes.max)) {\n this.verifyMinMaxRange();\n }\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDatesValidation || changes.disabledDates || changes.incompleteDateValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n }\n ngOnDestroy() {\n if (this.isOpen) {\n this.closePopup();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * * If the popup is closed, focuses the DateTimePicker input.\n * * If the popup is open, the focus is moved to its content.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n if (this.isOpen) {\n this.activeTabComponent.focus();\n }\n else {\n this.input.focus();\n }\n }\n /**\n * Blurs the DateTimePicker.\n */\n blur() {\n if (this.isOpen && this.activeTabComponent.isActive) {\n this.activeTabComponent.blur();\n }\n else {\n this.input.blur();\n }\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly || show === this.isOpen) {\n return;\n }\n const shouldOpen = isPresent(show) ? show : !this.isOpen;\n if (shouldOpen) {\n this.openPopup();\n }\n else {\n this.closePopup();\n // Changes the tab and the calendar or clock icon to the designated default.\n if (this.activeTab !== this.defaultTab) {\n this.activeTab = this.defaultTab;\n this.cdr.detectChanges();\n }\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label will render in the input.\n */\n isEmpty() {\n return !isPresent(this.value) && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n // prevents the event default to evade focusing the DateInput input when placed inside a label (FF/IE/Edge)\n event.preventDefault();\n const runInZone = !this.isOpen || hasObservers(this.close);\n this.run(runInZone, () => {\n const shouldOpen = !this.isOpen;\n // handle focus first to maintain correct event order `focus` => `open`\n this.handleFocus();\n this.togglePopup(shouldOpen);\n this.switchFocus();\n });\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => this.onFocus.emit());\n }\n }\n /**\n * @hidden\n */\n handleBlur(event) {\n if (!this.isActive || this.focusTargetInComponent(event)) {\n return;\n }\n this.isActive = false;\n const isNgControlUntouched = this.wrapper.nativeElement.classList.contains('ng-untouched');\n const runInZone = isNgControlUntouched || hasObservers(this.onBlur) || (this.isOpen && hasObservers(this.close));\n this.run(runInZone, () => {\n this.onBlur.emit();\n this.onControlTouched();\n this.togglePopup(false);\n this.cdr.markForCheck();\n });\n }\n /**\n * @hidden\n */\n changeActiveTab(tab) {\n if (!this.isOpen || this.activeTab === tab) {\n return;\n }\n // persists the Tcurrent value of the TimeSelector when switching between tabs\n if (!isEqual(this.timeSelector.value, this.timeSelector.current)) {\n this.timeSelector.handleAccept();\n }\n this.activeTab = tab;\n this.cdr.detectChanges();\n this.detectPopupChanges();\n }\n /**\n * @hidden\n */\n handleTabChangeTransitionEnd(dateTimeSelector, event) {\n // handle only the .k-datetime-selector element transition, ignore any child element transitions\n if (event.target !== dateTimeSelector) {\n return;\n }\n this.activeTabComponent.focus();\n }\n /**\n * @hidden\n */\n handleAccept() {\n if (!this.isOpen) {\n return;\n }\n const candidate = mergeDateAndTime(this.calendar.value, this.timeSelector.current);\n const valueChangePresent = !isEqual(this.value, candidate);\n const runInZone = valueChangePresent || hasObservers(this.close);\n this.run(runInZone, () => {\n this.handleValueChange(candidate);\n this.togglePopup(false);\n });\n }\n /**\n * @hidden\n */\n handleCancel() {\n if (!this.isOpen) {\n return;\n }\n const runInZone = hasObservers(this.close);\n this.run(runInZone, () => this.togglePopup(false));\n }\n /**\n * @hidden\n */\n handleInputValueChange(value) {\n this.handleValueChange(value);\n if (this.isOpen) {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleCalendarValueChange() {\n this.setTimeSelectorMinMax(this.calendar.value);\n this.changeActiveTab('time');\n }\n /**\n * @hidden\n */\n handleKeyDown(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n const { keyCode, altKey } = event;\n switch (keyCode) {\n case altKey && Keys.ArrowUp:\n case Keys.Escape:\n this.handleCancel();\n break;\n case !this.isOpen && altKey && Keys.ArrowDown:\n this.ngZone.run(() => this.togglePopup(true));\n break;\n case altKey && Keys.ArrowRight:\n this.changeActiveTab('time');\n break;\n case altKey && Keys.ArrowLeft:\n this.changeActiveTab('date');\n break;\n case this.isOpen && this.timeSelector.isActive && isPresent(this.calendarValue) && Keys.Enter:\n this.handleAccept();\n break;\n default: return;\n }\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleTabOut(event) {\n const { keyCode, shiftKey, target } = event;\n // if no focusable next sibling elements exist in the controls sections, the user is tabbing out of the popup\n const focusableSiblingAvailable = isPresent(target.nextElementSibling) && !target.nextElementSibling.disabled;\n if (keyCode === Keys.Tab && !shiftKey && !focusableSiblingAvailable) {\n this.input.focus();\n this.handleCancel();\n }\n }\n /**\n * @hidden\n */\n handleBackTabOut(event) {\n const { keyCode, shiftKey } = event;\n if (keyCode === Keys.Tab && shiftKey) {\n this.input.focus();\n }\n }\n /**\n * @hidden\n */\n popupButtonsClasses(type) {\n const buttonType = type ? type : 'base';\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''} ${this.fillMode ? 'k-button-' + this.fillMode + ' ' + 'k-button-' + this.fillMode + '-' + buttonType : ''}`;\n }\n /**\n * @hidden\n *\n * Prevents the diversion of the focus from the currently active element in the component.\n */\n preventMouseDown(event) {\n event.preventDefault();\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(value) && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK} for possible resolution.`);\n }\n }\n verifyMinMaxRange() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_MAX_DOC_LINK}.`);\n }\n }\n /**\n * Extracts the time slots and the literals that are not preceded by date parts\n * and concatenates the resulting parts into a string.\n * If the provided format value does not contain any time parts,\n * returns the designated format of the default popup component of the TimePicker.\n */\n getTimeSelectorFormat(format) {\n const timeSelectorFormat = this.intl\n .splitDateFormat(format)\n .filter(this.timeFormatPartFilter)\n .reduce((format, part) => format += part.pattern, '');\n return timeSelectorFormat || DEFAULT_TIMESELECTOR_FORMAT;\n }\n /**\n * Extracts the `displayFormat` from the provided `string | FormatSettings` value.\n * Fallbacks to the default input value, if a falsy value param is passed.\n */\n getDisplayFormat(format) {\n if (!format) {\n return DEFAULT_DATEINPUT_FORMAT;\n }\n if (typeof format === 'string') {\n return format;\n }\n else {\n return format.displayFormat;\n }\n }\n /**\n * The filter expression that filters out all format parts\n * except for `hour`, `minute`, `second`, `dayperiod`, and specific literals.\n * Literals will be left only if they are not preceded by date parts.\n */\n timeFormatPartFilter(part, index, parts) {\n const previousPart = index >= 1 && parts[index - 1];\n if (previousPart && part.type === 'literal') {\n return timeFormatRegExp.test(previousPart.type);\n }\n return timeFormatRegExp.test(part.type);\n }\n togglePopup(open) {\n if (open === this.isOpen) {\n return;\n }\n const event = new PreventableEvent();\n if (open) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this.toggle(open);\n this.switchFocus();\n }\n switchFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.isOpen) {\n this.activeTabComponent.focus();\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n openPopup() {\n this.setCalendarValue(this.value);\n this.setTimeSelectorMinMax(this.value);\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n content: this.popupTemplate,\n positionMode: 'absolute',\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n popupClass: `k-datetime-container ${this.popupSettings.popupClass || ''}`,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n popupAlign: { vertical: 'top', horizontal: direction }\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.handleCancel());\n }\n closePopup() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n handleValueChange(value) {\n if (isEqual(this.value, value)) {\n return;\n }\n this.value = cloneDate(value);\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n }\n /**\n * Indicates whether the focus target is part of this component,\n * that is, whether the focus target is inside the component or in the popup.\n */\n focusTargetInComponent(event) {\n if (!isPresent(event)) {\n return false;\n }\n const relatedTarget = event.relatedTarget || document.activeElement;\n const focusInPopup = isPresent(this.popupRef) && this.popupRef.popupElement.contains(relatedTarget);\n const focusInWrapper = this.wrapper.nativeElement.contains(relatedTarget);\n return focusInPopup || focusInWrapper;\n }\n setTimeSelectorMinMax(selectedDate) {\n const minDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.min));\n this.timeSelectorMin = cloneDate(minDateSelected ? this.min : MIN_TIME);\n const maxDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.max));\n this.timeSelectorMax = cloneDate(maxDateSelected ? this.max : MAX_TIME);\n }\n setCalendarValue(value) {\n const isInCalendarRange = isPresent(value) && isInRange(value, this.calendarMin, this.calendarMax);\n this.calendarValue = isInCalendarRange ? getDate(value) : null;\n }\n /**\n * If the popup is available, runs a popup change detection.\n */\n detectPopupChanges() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.popup.changeDetectorRef.detectChanges();\n }\n /**\n * Depending on the predicate `runInZone` value that is passed,\n * runs the provided function either in the Angular or in the current zone.\n */\n run(runInZone, fn) {\n if (runInZone) {\n this.ngZone.run(() => fn());\n }\n else {\n fn();\n }\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.ngZone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i2.PopupService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: PickerService }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: TOUCH_ENABLED }, { token: i1$1.LocalizationService }, { token: DisabledDatesService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nDateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateTimePickerComponent, selector: \"kendo-datetimepicker\", inputs: { value: \"value\", format: \"format\", twoDigitYearMax: \"twoDigitYearMax\", tabindex: \"tabindex\", disabledDates: \"disabledDates\", popupSettings: \"popupSettings\", focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", cancelButton: \"cancelButton\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", steps: \"steps\", focusedDate: \"focusedDate\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", weekNumber: \"weekNumber\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", incompleteDateValidation: \"incompleteDateValidation\", defaultTab: \"defaultTab\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-datetimepicker\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n PickerService,\n LocalizationService,\n DisabledDatesService,\n { provide: L10N_PREFIX, useValue: 'kendo.datetimepicker' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, read: TemplateRef, static: true }], exportAs: [\"kendo-datetimepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n \n \n \n \n\n \n\n \n \n
\n
\n \n {{localization.get('dateTab')}}\n \n \n {{localization.get('timeTab')}}\n \n
\n
\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n \n \n \n {{localization.get('cancel')}}\n \n \n {{localization.get('accept')}}\n \n \n \n
\n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: CalendarComponent, selector: \"kendo-calendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"navigation\", \"activeView\", \"bottomView\", \"topView\", \"type\", \"animateNavigation\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"activeViewDateChange\", \"valueChange\"], exportAs: [\"kendo-calendar\"] }, { type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\" }, { type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: [\"format\", \"min\", \"max\", \"cancelButton\", \"setButton\", \"nowButton\", \"disabled\", \"steps\", \"value\"], outputs: [\"valueChange\", \"valueReject\"], exportAs: [\"kendo-timeselector\"] }, { type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\" }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoDateTimePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-datetimepicker',\n exportAs: 'kendo-datetimepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n PickerService,\n LocalizationService,\n DisabledDatesService,\n { provide: L10N_PREFIX, useValue: 'kendo.datetimepicker' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }\n ],\n template: `\n \n \n\n \n \n \n \n \n\n \n\n \n \n
\n
\n \n {{localization.get('dateTab')}}\n \n \n {{localization.get('timeTab')}}\n \n
\n
\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n \n \n \n {{localization.get('cancel')}}\n \n \n {{localization.get('accept')}}\n \n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i2.PopupService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: PickerService }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }, { type: i1$1.LocalizationService }, { type: DisabledDatesService }, { type: i0.Renderer2 }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-datetimepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], value: [{\n type: Input\n }], format: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], steps: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], calendarType: [{\n type: Input\n }], animateCalendarNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesValidation: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], defaultTab: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { read: TemplateRef, static: true }]\n }] } });\n\n/**\n * A directive which renders the content of the DateRange Popup. To define the cell template, nest an\n * `` tag with the `kendoRangePopupTemplate` directive inside the component tag.\n */\nclass DateRangePopupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDateRangePopupTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangePopupTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangePopupTemplateDirective, selector: \"[kendoDateRangePopupTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangePopupTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst isActive = (cmp) => (cmp && cmp.isActive) || false;\nconst hasActiveContent = (popup) => popup && popup.hasActiveContent();\n/**\n * A service that handles the communication between the components that are placed inside the DateRangeComponent.\n * For example, the start and end `DateInput` and `DateRangePopup` components.\n */\nclass DateRangeService {\n /** @hidden */\n constructor() {\n /**\n * An Observable instance that notifies when the `activeRangeEnd` state is changed.\n */\n this.activeRangeEnd$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the `focusedDate` is changed.\n */\n this.focusedDate$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the end `DateInput` component is changed.\n * For example, when a new end `DateInput` is attached or when the old one is detached.\n */\n this.endInput$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the start `DateInput` component is changed.\n * For example, when a new start `DateInput` is attached or the old one is detached.\n */\n this.startInput$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the `DateRangePopup` component is changed.\n */\n this.dateRangePopup$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the state of the selection range is changed.\n */\n this.range$ = new BehaviorSubject(EMPTY_SELECTIONRANGE);\n }\n /**\n * Gets the current `activeRangeEnd` value.\n */\n get activeRangeEnd() {\n return this.activeRangeEnd$.value;\n }\n /**\n * Gets the current `focusedDate` value.\n */\n get focusedDate() {\n return this.focusedDate$.value;\n }\n /**\n * Gets the `min` range value.\n * The `min` value is extracted from the `start` DateInput value or the `min` value of the Calendar.\n */\n get min() {\n return (this.startInput$.value || {}).min || null;\n }\n /**\n * Gets the `max` range value.\n * The `max` value is extracted from the `end` DateInput value or the `max` value of the Calendar.\n */\n get max() {\n return (this.endInput$.value || {}).max || null;\n }\n /**\n * Gets the current `selectionRange` value.\n */\n get selectionRange() {\n return this.range$.value;\n }\n /**\n * Activates the registered `DateRangePopup` component.\n * The method opens the popup and focuses the calendar.\n */\n activatePopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!dateRangePopup) {\n return;\n }\n dateRangePopup.activate();\n }\n /**\n * Deactivates the registered `DateRangePopup` component.\n * The method closes the popup.\n */\n deactivatePopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!(dateRangePopup && dateRangePopup.show)) {\n return;\n }\n dateRangePopup.show = false;\n }\n /**\n * @hidden\n *\n * Deactivates the registered `DateRangePopup` component and fires the `cancel` event.\n * The method closes the popup.\n */\n cancelPopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!(dateRangePopup && dateRangePopup.show)) {\n return;\n }\n dateRangePopup.cancelPopup();\n }\n /**\n * Completes all observables to mitigate possible memory leaks.\n * Calls the method when a component that uses it is destroyed.\n */\n destroy() {\n this.activeRangeEnd$.complete();\n this.dateRangePopup$.complete();\n this.focusedDate$.complete();\n this.endInput$.complete();\n this.startInput$.complete();\n this.range$.complete();\n }\n /**\n * Returns `true` when an active component that is placed inside the `DateRangeComponent` is detected.\n * For example, the opened popup or the focused DateInput.\n *\n * @returns `true` if an active component is present.\n */\n hasActiveComponent() {\n const popup = this.dateRangePopup$.value;\n const isPopup = isActive(popup);\n const isStart = isActive(this.startInput$.value);\n const isEnd = isActive(this.endInput$.value);\n return isPopup || isStart || isEnd || hasActiveContent(popup) || false;\n }\n /**\n * Registers a new start `DateInput` component. Notifies all `startInput$` listeners.\n */\n registerStartInput(startInput) {\n this.startInput$.next(startInput);\n }\n /**\n * Registers a new end `DateInput` component. Notifies all `endInput$` listeners.\n */\n registerEndInput(endInput) {\n this.endInput$.next(endInput);\n }\n /**\n * Registers a new `DateRangePopup` component. Notifies all `dateRangePopup$` listeners.\n */\n registerPopup(dateRangePopup) {\n this.dateRangePopup$.next(dateRangePopup);\n }\n /**\n * Updates the `activeRangeEnd` value. Notifies all `activeRangeEnd$` listeners.\n */\n setActiveRangeEnd(activeRange) {\n if (!activeRange || this.activeRangeEnd === activeRange) {\n return;\n }\n this.activeRangeEnd$.next(activeRange);\n }\n /**\n * Updates the focused date. Notifies all `focusedDate$` listeners.\n */\n setFocusedDate(value) {\n if (isEqual(this.focusedDate$.value, value)) {\n return;\n }\n this.focusedDate$.next(value);\n }\n /**\n * Updates the selection range. Notifies all `range$` listeners.\n */\n setRange(range = EMPTY_SELECTIONRANGE) {\n this.range$.next(range);\n }\n}\nDateRangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDateRangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * A directive which manages the MultiViewCalendar range selection.\n */\nclass DateRangeSelectionDirective {\n constructor(calendar, cdr, element, renderer, dateRangeService) {\n this.calendar = calendar;\n this.cdr = cdr;\n this.element = element;\n this.dateRangeService = dateRangeService;\n /**\n * Specifies the auto-correction behavior. If the start date is greater than the end date,\n * the directive fixes the date range to a single date either on input change or on blur\n * ([see example]({% slug autocorrect_daterange %}#toc-configuring-the-calendar-selection-directive)).\n *\n * By default, the auto-correction is triggered on change.\n * To disable this behavior, set the `autoCorrectOn` property to `none`.\n */\n this.autoCorrectOn = 'change';\n /**\n * Fires when the active range end is changed. For more information, refer to\n * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).\n */\n this.activeRangeEndChange = new EventEmitter();\n /**\n * Fires when the selection range is changed. For more information, refer to\n * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).\n */\n this.selectionRangeChange = new EventEmitter();\n this.calendarSubscriptions = new Subscription();\n this.dateRangeService = this.dateRangeService || new DateRangeService();\n renderer.setAttribute(element.nativeElement, 'aria-multiselectable', 'true');\n }\n /**\n * Gets or sets the selection range of the calendar. When a new range is set,\n * the connected DateRangeService notifies all related parties.\n */\n get selectionRange() {\n return this.calendar ? this.calendar.selectionRange : null;\n }\n set selectionRange(range) {\n if (!this.isEqualCalendarRange(range)) {\n this.setSelectionRange(range);\n }\n if (!isEqualRange(this.dateRangeService.selectionRange, range)) {\n this.dateRangeService.setRange(range);\n }\n this.updateFocusedDate(range);\n }\n /**\n * Gets or sets the active end of the selection range. This option determines which range end will be updated on\n * user interaction. When a new active end is set, the connected DateRangeService notifies all related parties.\n */\n /**\n * Specifies which end of the selection range will be marked as active. The active end gets modified upon user\n * interaction. When a new active end is set, the wired DateRangeService notifies all related components. For\n * example, the start and end DateInput components.\n *\n * > If the selection range is undefined, the value is ignored.\n */\n get activeRangeEnd() {\n return this.calendar.activeRangeEnd;\n }\n set activeRangeEnd(activeRange) {\n if (this.dateRangeService.activeRangeEnd === activeRange) {\n return;\n }\n this.calendar.activeRangeEnd = activeRange;\n this.dateRangeService.setActiveRangeEnd(activeRange);\n }\n get calendarRange() {\n return this.selectionRange || EMPTY_SELECTIONRANGE;\n }\n ngOnInit() {\n const calendar = this.calendar;\n const dateRangeService = this.dateRangeService;\n calendar.min = either(dateRangeService.min, calendar.min);\n calendar.max = either(dateRangeService.max, calendar.max);\n this.addSubscriptions(calendar.cellEnter.subscribe((value) => this.handleHover(value)), calendar.valueChange.subscribe((value) => this.handleChange(value)), dateRangeService.focusedDate$.subscribe(focusedDate => {\n if (!isEqual(calendar.focusedDate, focusedDate)) {\n calendar.focusedDate = focusedDate;\n }\n }), dateRangeService.activeRangeEnd$.subscribe(rangeEnd => {\n if (calendar.activeRangeEnd === rangeEnd) {\n return;\n }\n calendar.activeRangeEnd = rangeEnd;\n this.activeRangeEndChange.emit(rangeEnd);\n this.cdr.markForCheck();\n }), dateRangeService.range$.subscribe(range => {\n if (!this.isEqualCalendarRange(range)) {\n this.acceptAndEmit(range);\n }\n this.updateFocusedDate(range);\n }), fromEvent(this.element.nativeElement, 'blur').subscribe(() => this.handleBlur()));\n }\n ngOnDestroy() {\n this.calendarSubscriptions.unsubscribe();\n }\n addSubscriptions(...subscriptions) {\n subscriptions.map(s => this.calendarSubscriptions.add(s));\n }\n isEqualCalendarRange(range) {\n return isEqualRange(this.calendar.selectionRange, range);\n }\n handleBlur() {\n const { start, end } = this.calendarRange;\n const autoCorrect = this.autoCorrectOn === 'blur' && start !== null && end !== null && end < start;\n if (autoCorrect) {\n this.dateRangeService.setRange(clampRange(start));\n }\n }\n handleChange(value) {\n const service = this.dateRangeService;\n const autoCorrect = this.autoCorrectOn === 'change' && this.shouldAutoCorrect(value);\n const activeEnd = this.calendar.activeRangeEnd !== 'end' ? 'end' : (autoCorrect ? 'end' : 'start');\n const range = autoCorrect ? clampRange(value) : this.updateRange(value);\n if (!isEqualRange(service.selectionRange, range)) {\n this.acceptAndEmit(range);\n service.setActiveRangeEnd(activeEnd);\n service.setRange(range);\n }\n }\n handleHover(value) {\n if (this.hasCompleteRange()) {\n return;\n }\n const { start, end } = this.calendarRange;\n const activeRangeEnd = this.calendar.activeRangeEnd;\n const updateRange = (start && activeRangeEnd === 'end') || (end && activeRangeEnd === 'start');\n if (updateRange) {\n this.setSelectionRange(this.updateRange(value));\n }\n }\n hasCompleteRange() {\n const { start, end } = this.dateRangeService.selectionRange || EMPTY_SELECTIONRANGE;\n return Boolean(start) && Boolean(end);\n }\n shouldAutoCorrect(value) {\n const { end, start } = this.calendarRange;\n if (this.calendar.activeRangeEnd !== 'end') {\n return end !== null && value > end;\n }\n else {\n return start !== null && value < start;\n }\n }\n updateFocusedDate(range) {\n if (!range || this.dateRangeService.focusedDate) {\n return;\n }\n this.dateRangeService.setFocusedDate(range.start || range.end);\n }\n updateRange(value) {\n const { end, start } = this.calendarRange;\n return this.calendar.activeRangeEnd !== 'end' ? ({ start: value, end }) : ({ start, end: value });\n }\n setSelectionRange(range) {\n this.calendar.selectionRange = range;\n this.calendar.writeValue(null);\n }\n acceptAndEmit(range) {\n this.setSelectionRange(range);\n this.selectionRangeChange.emit(range);\n }\n}\nDateRangeSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeSelectionDirective, deps: [{ token: MultiViewCalendarComponent }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DateRangeService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeSelectionDirective, selector: \"[kendoDateRangeSelection]\", inputs: { autoCorrectOn: \"autoCorrectOn\", selectionRange: \"selectionRange\", activeRangeEnd: \"activeRangeEnd\" }, outputs: { activeRangeEndChange: \"activeRangeEndChange\", selectionRangeChange: \"selectionRangeChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeSelectionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeSelection]'\n }]\n }], ctorParameters: function () { return [{ type: MultiViewCalendarComponent }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DateRangeService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], activeRangeEndChange: [{\n type: Output\n }], selectionRangeChange: [{\n type: Output\n }] } });\n\n/**\n * Represents the Kendo UI DateRangePopup component for Angular.\n *\n * @example\n * ```ts\n * import { DateInputsModule, DateRangeService } from '@progress/kendo-angular-dateinputs';\n *\n * _@Component({\n * providers: [DateRangeService],\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent {\n * }\n * ```\n */\nclass DateRangePopupComponent {\n constructor(popupService, dateRangeService, ref, zone, rtl) {\n this.popupService = popupService;\n this.dateRangeService = dateRangeService;\n this.ref = ref;\n this.zone = zone;\n this.rtl = rtl;\n /**\n * Controls the popup animation.\n * By default, the opening and closing animations are enabled.\n * For more information about controlling the popup animations,\n * refer to the article on [animations]({% slug animations_popup %}).\n */\n this.animate = true;\n /**\n * Configures the collision behavior of the popup.\n * For more information, refer to the article on\n * [viewport boundary detection]({% slug viewportboundarydetection_popup %}).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n * For more information, refer to the section on\n * [events]({% slug overview_datepicker %}#toc-events).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n * For more information, refer to the section on\n * [events]({% slug overview_datepicker %}#toc-events).\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the calendar element is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the calendar element is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the popup is closed either on `ESC` keypress or on leaving the viewport.\n */\n this.cancel = new EventEmitter();\n /**\n * @hidden\n */\n this.popupUID = guid();\n this.calendarSubscriptions = new Subscription();\n this.popupSubscriptions = new Subscription();\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * The active calendar that is visible in the popup.\n *\n * > When the popup is closed, the property returns `null`.\n */\n get calendar() {\n return this._calendar;\n }\n set calendar(calendar) {\n this._calendar = calendar;\n this.subscribeFocusBlur(calendar);\n }\n /**\n * Gets the active state of the component.\n * When the opened calendar is active, returns `true`.\n */\n get isActive() {\n return this.calendar && this.calendar.isActive;\n }\n /**\n * Gets or sets the visibility state of the component.\n */\n set show(show) {\n if (this._show === show) {\n return;\n }\n const event = new PreventableEvent();\n if (show) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n }\n get show() {\n return this._show;\n }\n ngOnInit() {\n this.dateRangeService.registerPopup(this);\n }\n ngAfterViewInit() {\n this.calendarSubscriptions.add(this.contentCalendar.changes.subscribe((changes) => this.calendar = changes.first));\n this.calendarSubscriptions.add(this.viewCalendar.changes.subscribe((changes) => this.calendar = changes.first));\n if (isWindowAvailable()) {\n this.zone.runOutsideAngular(() => this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this)));\n }\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.calendarSubscriptions.unsubscribe();\n if (this.activateSubscription) {\n this.activateSubscription.unsubscribe();\n }\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n }\n /**\n * Opens the popup component and focuses the calendar.\n */\n activate() {\n if (this.show === true) {\n return;\n }\n if (this.activateSubscription) {\n this.activateSubscription.unsubscribe();\n }\n this.show = true;\n this.ref.markForCheck();\n this.zone.runOutsideAngular(() => {\n this.activateSubscription = merge(this.contentCalendar.changes, this.viewCalendar.changes)\n .pipe(filter(changes => changes && changes.first), map(changes => changes.first))\n .subscribe((calendar) => setTimeout(() => calendar.focus()));\n });\n }\n /**\n * Focuses the calendar (if available).\n */\n focus() {\n if (this.calendar) {\n this.calendar.focus();\n }\n }\n /**\n * Checks if a focused element ids placed inside the popup.\n *\n * @return boolean;\n */\n hasActiveContent() {\n if (!isDocumentAvailable() || !this.popupRef) {\n return false;\n }\n return this.popupRef.popupElement.contains(document.activeElement);\n }\n /**\n * Toggles the visibility of the popup.\n * If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show The state of the popup.\n */\n toggle(show) {\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * @hidden\n *\n * Closes the popup and triggers the `cancel` event.\n */\n cancelPopup() {\n this.show = false;\n this.cancel.emit();\n }\n handleWindowBlur() {\n if (!this.show) {\n return;\n }\n if (hasObservers(this.close)) {\n this.zone.run(() => this.show = false);\n }\n else {\n this.show = false;\n }\n }\n handleMouseLeave() {\n this.dateRangeService.setRange(this.dateRangeService.selectionRange);\n }\n handleKeydown(event) {\n const { altKey, keyCode } = event;\n if (keyCode === Keys.Escape || (altKey && keyCode === Keys.ArrowUp)) {\n this.zone.run(() => this.cancelPopup());\n }\n }\n subscribeFocusBlur(calendar) {\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n if (!calendar) {\n return;\n }\n const nativeElement = calendar.element.nativeElement;\n this.blurSubscription = fromEvent(nativeElement, 'blur').subscribe(() => this.onBlur.emit());\n this.focusSubscription = fromEvent(nativeElement, 'focus').subscribe(() => this.onFocus.emit());\n }\n addPopupSubscriptions(...subscriptions) {\n if (!isPresent(this.popupSubscriptions)) {\n this.popupSubscriptions = new Subscription();\n }\n subscriptions.map(s => this.popupSubscriptions.add(s));\n }\n get _appendTo() {\n const appendTo = this.appendTo;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n _toggle(show) {\n this._show = show;\n if (this.popupRef) {\n this.destroyPopup();\n }\n if (this._show) {\n const direction = this.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.anchor,\n anchorAlign: this.anchorAlign || { vertical: 'bottom', horizontal: direction },\n animate: this.animate,\n appendTo: this._appendTo,\n collision: this.collision,\n content: (this.contentTemplate || {}).templateRef || this.defaultTemplate,\n margin: this.margin,\n popupAlign: this.popupAlign || { vertical: 'top', horizontal: direction },\n positionMode: 'absolute'\n });\n const { popupElement, popupAnchorViewportLeave } = this.popupRef;\n popupElement.setAttribute('id', this.popupUID);\n this.addPopupSubscriptions(this.zone.runOutsideAngular(() => fromEvent(popupElement, 'keydown').subscribe(this.handleKeydown.bind(this))), fromEvent(popupElement, 'mouseleave').subscribe(this.handleMouseLeave.bind(this)), popupAnchorViewportLeave.subscribe(() => this.cancelPopup()));\n }\n }\n destroyPopup() {\n if (isPresent(this.popupRef)) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (isPresent(this.popupSubscriptions)) {\n this.popupSubscriptions.unsubscribe();\n }\n }\n}\nDateRangePopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupComponent, deps: [{ token: i2.PopupService }, { token: DateRangeService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDateRangePopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangePopupComponent, selector: \"kendo-daterange-popup\", inputs: { animate: \"animate\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", appendTo: \"appendTo\", collision: \"collision\", popupAlign: \"popupAlign\", margin: \"margin\" }, outputs: { open: \"open\", close: \"close\", onBlur: \"blur\", onFocus: \"focus\", cancel: \"cancel\" }, queries: [{ propertyName: \"contentTemplate\", first: true, predicate: DateRangePopupTemplateDirective, descendants: true }, { propertyName: \"contentCalendar\", predicate: MultiViewCalendarComponent }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef }, { propertyName: \"defaultTemplate\", first: true, predicate: [\"defaultTemplate\"], descendants: true }, { propertyName: \"viewCalendar\", predicate: MultiViewCalendarComponent, descendants: true }], exportAs: [\"kendo-daterange-popup\"], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"disabledDatesRangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"isActive\", \"disabledDates\", \"activeView\", \"bottomView\", \"topView\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\", \"activeRangeEnd\", \"selectionRange\", \"views\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"cellEnter\", \"cellLeave\", \"valueChange\", \"blur\"], exportAs: [\"kendo-multiviewcalendar\"] }], directives: [{ type: DateRangeSelectionDirective, selector: \"[kendoDateRangeSelection]\", inputs: [\"autoCorrectOn\", \"selectionRange\", \"activeRangeEnd\"], outputs: [\"activeRangeEndChange\", \"selectionRangeChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendo-daterange-popup',\n selector: 'kendo-daterange-popup',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i2.PopupService }, { type: DateRangeService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: false }]\n }], defaultTemplate: [{\n type: ViewChild,\n args: ['defaultTemplate', { static: false }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [DateRangePopupTemplateDirective, { static: false }]\n }], viewCalendar: [{\n type: ViewChildren,\n args: [MultiViewCalendarComponent]\n }], contentCalendar: [{\n type: ContentChildren,\n args: [MultiViewCalendarComponent]\n }], animate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], margin: [{\n type: Input\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], cancel: [{\n type: Output\n }] } });\n\n/**\n * Represents the Kendo UI DateRange component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public dateRange: any = { start: null, end: null };\n * }\n * ```\n */\nclass DateRangeComponent {\n constructor() {\n this.wrapperClass = true;\n /**\n * @hidden\n */\n this.showDefault = false;\n validatePackage(packageMetadata);\n }\n get hasContentPopup() {\n return this.contentPopup.length > 0;\n }\n ngAfterContentInit() {\n this.showDefault = !this.hasContentPopup;\n this.subscription = this.contentPopup.changes.subscribe(() => {\n this.showDefault = !this.hasContentPopup;\n });\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nDateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeComponent, selector: \"kendo-daterange\", host: { properties: { \"class.k-daterangepicker\": \"this.wrapperClass\" } }, providers: [DateRangeService], queries: [{ propertyName: \"contentPopup\", predicate: DateRangePopupComponent }], ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: DateRangePopupComponent, selector: \"kendo-daterange-popup\", inputs: [\"animate\", \"anchor\", \"anchorAlign\", \"appendTo\", \"collision\", \"popupAlign\", \"margin\"], outputs: [\"open\", \"close\", \"blur\", \"focus\", \"cancel\"], exportAs: [\"kendo-daterange-popup\"] }], directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeComponent, decorators: [{\n type: Component,\n args: [{\n providers: [DateRangeService],\n selector: 'kendo-daterange',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { wrapperClass: [{\n type: HostBinding,\n args: ['class.k-daterangepicker']\n }], contentPopup: [{\n type: ContentChildren,\n args: [DateRangePopupComponent]\n }] } });\n\n/**\n * @hidden\n */\nclass DateRangeInput {\n constructor(activeRangeEnd, dateRangeService, input, element, renderer, zone) {\n this.activeRangeEnd = activeRangeEnd;\n this.dateRangeService = dateRangeService;\n this.input = input;\n this.element = element;\n this.renderer = renderer;\n this.zone = zone;\n this.navigateCalendarOnFocus = false;\n this.popupSubscriptions = new Subscription();\n this.subscriptions = new Subscription();\n }\n get isActiveEnd() {\n return this.dateRangeService.activeRangeEnd === this.activeRangeEnd;\n }\n get popupCalendarActivated() {\n const popup = this.dateRangeService.dateRangePopup$.value;\n return isPresent(popup) && isPresent(popup.calendar);\n }\n init() {\n if (this.input.value) {\n this.dateRangeService.setRange(this.getRange(this.input.value));\n }\n [\n this.input.onBlur.subscribe(() => this.deactivate()),\n this.input.onFocus.pipe(filter(() => !this.popupCalendarActivated)).subscribe(() => this.activate()),\n this.input.valueUpdate.subscribe(value => this.updateRange(value, 'change')),\n this.dateRangeService.activeRangeEnd$.subscribe(() => {\n if (this.navigateCalendarOnFocus) {\n this.focusActiveDate();\n }\n this.toggleActiveClass(this.isActiveEnd);\n }),\n this.dateRangeService.dateRangePopup$.subscribe(popup => this.initPopup(popup)),\n this.dateRangeService.range$.subscribe(range => this.updateInputValue(range)),\n fromEvent(this.element.nativeElement, 'click').subscribe(() => this.activate()),\n fromEvent(this.element.nativeElement, 'keydown').subscribe((event) => this.togglePopup(event || {}))\n ].map(s => this.subscriptions.add(s));\n }\n destroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribePopup();\n }\n initPopup(popup) {\n if (!popup) {\n this.unsubscribePopup();\n return;\n }\n if (!popup.anchor) {\n popup.anchor = this.element.nativeElement;\n }\n [\n popup.cancel.subscribe(() => this.isActiveEnd && this.input.focus()),\n popup.onFocus.subscribe(() => this.toggleActiveClass(this.isActiveEnd)),\n popup.onBlur.subscribe(() => this.deactivate())\n ].map(s => this.popupSubscriptions.add(s));\n }\n unsubscribePopup() {\n this.popupSubscriptions.unsubscribe();\n this.popupSubscriptions = new Subscription();\n }\n activate() {\n this.dateRangeService.setActiveRangeEnd(this.activeRangeEnd);\n this.dateRangeService.activatePopup();\n }\n deactivate() {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.updateRange(this.input.value, 'blur');\n if (this.dateRangeService.hasActiveComponent()) {\n return;\n }\n this.toggleActiveClass(false);\n this.zone.run(() => this.dateRangeService.deactivatePopup());\n });\n });\n }\n updateRange(value, correctOn) {\n const range = this.getRange(value, correctOn);\n if (range) {\n this.focusActiveDate();\n this.dateRangeService.setRange(range);\n }\n }\n togglePopup({ altKey, keyCode }) {\n if (keyCode === Keys.Escape) {\n this.dateRangeService.cancelPopup();\n }\n else if (altKey && keyCode === Keys.ArrowDown) {\n this.dateRangeService.activatePopup();\n }\n }\n focusActiveDate() {\n if (this.input.value && this.isActiveEnd) {\n this.dateRangeService.setFocusedDate(cloneDate(this.input.value));\n }\n }\n toggleActiveClass(show) {\n const action = show ? 'addClass' : 'removeClass';\n const nativeElement = this.element.nativeElement;\n if (nativeElement && nativeElement.querySelector) {\n this.renderer[action](nativeElement, 'k-focus');\n }\n }\n}\n\n/**\n * A directive which manages the end range selection.\n *\n * > You can use the DateRangeEndInputDirective only with a DateInput component.\n */\nclass DateRangeEndInputDirective extends DateRangeInput {\n constructor(rangeService, dateInput, element, renderer, zone) {\n super('end', rangeService, dateInput, element, renderer, zone);\n this.rangeService = rangeService;\n this.dateInput = dateInput;\n /**\n * Specifies the navigation behavior of the calendar when the active end is changed on input focus. When enabled,\n * the calendar navigates to the value of the focused input. Otherwise, the calendar displays the last picked date.\n *\n * By default, the automatic navigation behavior on input focus is disabled.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
Toggle input focus to see the calendar navigating between range ends.
\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public start: Date = new Date(2018, 3, 10);\n * public end: Date = new Date(2018, 10, 20);\n * }\n * ```\n */\n this.navigateCalendarOnFocus = false;\n }\n ngOnInit() {\n this.rangeService.registerEndInput(this.dateInput);\n super.init();\n }\n ngOnDestroy() {\n super.destroy();\n }\n getRange(value, correctOn) {\n const { min, max } = this.dateInput;\n if (!isInRange(value, min, max)) {\n return null;\n }\n const { start } = this.rangeService.selectionRange || EMPTY_SELECTIONRANGE;\n const shouldClamp = this.autoCorrectOn === correctOn && isPresent(value) && value < start;\n return shouldClamp ? clampRange(value) : { start, end: cloneDate(value) };\n }\n updateInputValue(range) {\n const { end } = range || EMPTY_SELECTIONRANGE;\n const { min, max } = this.dateInput;\n if (isEqual(this.dateInput.value, end) || !isInRange(end, min, max)) {\n return;\n }\n this.dateInput.writeValue(cloneDate(end));\n this.dateInput.notify();\n }\n}\nDateRangeEndInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeEndInputDirective, deps: [{ token: DateRangeService }, { token: DateInputComponent }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeEndInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeEndInputDirective, selector: \"[kendoDateRangeEndInput]\", inputs: { autoCorrectOn: \"autoCorrectOn\", navigateCalendarOnFocus: \"navigateCalendarOnFocus\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeEndInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeEndInput]'\n }]\n }], ctorParameters: function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], navigateCalendarOnFocus: [{\n type: Input\n }] } });\n\n/**\n * A directive which manages the start selection range.\n *\n * > You can use the DateRangeStartInputDirective only with a DateInput component.\n */\nclass DateRangeStartInputDirective extends DateRangeInput {\n constructor(rangeService, dateInput, element, renderer, zone) {\n super('start', rangeService, dateInput, element, renderer, zone);\n this.rangeService = rangeService;\n this.dateInput = dateInput;\n /**\n * Specifies the navigation behavior of the calendar when the active end is changed on input focus.\n * When enabled, the calendar navigates to the value of the focused input. Otherwise, the calendar\n * displays the last picked date.\n *\n * By default, the automatic navigation behavior on input focus is disabled.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
Toggle input focus to see the calendar navigating between range ends.
\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public start: Date = new Date(2018, 3, 10);\n * public end: Date = new Date(2018, 10, 20);\n * }\n * ```\n */\n this.navigateCalendarOnFocus = false;\n }\n ngOnInit() {\n this.rangeService.registerStartInput(this.dateInput);\n super.init();\n }\n ngOnDestroy() {\n super.destroy();\n }\n getRange(value, correctOn) {\n const { min, max } = this.dateInput;\n if (!isInRange(value, min, max)) {\n return null;\n }\n const { end } = this.rangeService.selectionRange || EMPTY_SELECTIONRANGE;\n const shouldClamp = this.autoCorrectOn === correctOn && end && value > end;\n return shouldClamp ? clampRange(value) : { start: cloneDate(value), end };\n }\n updateInputValue(range) {\n const { start } = range || EMPTY_SELECTIONRANGE;\n const { min, max } = this.dateInput;\n if (isEqual(this.dateInput.value, start) || !isInRange(start, min, max)) {\n return;\n }\n this.dateInput.writeValue(cloneDate(start));\n this.dateInput.notify();\n }\n}\nDateRangeStartInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeStartInputDirective, deps: [{ token: DateRangeService }, { token: DateInputComponent }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeStartInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeStartInputDirective, selector: \"[kendoDateRangeStartInput]\", inputs: { autoCorrectOn: \"autoCorrectOn\", navigateCalendarOnFocus: \"navigateCalendarOnFocus\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeStartInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeStartInput]'\n }]\n }], ctorParameters: function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], navigateCalendarOnFocus: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `HeaderComponent`—The component that renders the UI for vertical navigation.\n * - `ViewComponent`—The component that renders the active Calendar view.\n */\nclass CalendarCommonModule {\n}\nCalendarCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, declarations: [KForOf,\n HeaderComponent,\n ViewComponent], imports: [CommonModule, EventsModule], exports: [KForOf,\n HeaderComponent,\n ViewComponent] });\nCalendarCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n KForOf,\n HeaderComponent,\n ViewComponent\n ],\n exports: [\n KForOf,\n HeaderComponent,\n ViewComponent\n ],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n * - `NavigationItemTemplateDirective`—The navigation item template directive.\n */\nclass TemplatesModule {\n}\nTemplatesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTemplatesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, declarations: [CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective], exports: [CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective] });\nTemplatesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective\n ],\n exports: [\n CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective\n ]\n }]\n }] });\n\n/**\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the MultiViewCalendar module\n * import { MultiViewCalendarModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, MultiViewCalendarModule], // import MultiViewCalendar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n */\nclass MultiViewCalendarModule {\n}\nMultiViewCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiViewCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, declarations: [HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent], imports: [CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule], exports: [HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent,\n CalendarCommonModule,\n TemplatesModule] });\nMultiViewCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ], imports: [[\n CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule\n ], CalendarCommonModule,\n TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent\n ],\n exports: [\n HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent,\n CalendarCommonModule,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule\n ],\n providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ]\n }]\n }] });\n\nconst COMPONENT_DIRECTIVES$3 = [\n VirtualizationComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Virtualization component.\n */\nclass VirtualizationModule {\n}\nVirtualizationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nVirtualizationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, declarations: [VirtualizationComponent], imports: [CommonModule], exports: [VirtualizationComponent] });\nVirtualizationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$3],\n exports: [COMPONENT_DIRECTIVES$3],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * The exported package module.\n *\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n * - `NavigationItemTemplateDirective`—The navigation item template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Calendar module\n * import { CalendarModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CalendarModule], // import Calendar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CalendarModule {\n}\nCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, declarations: [CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent], imports: [CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule], exports: [CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent,\n CalendarCommonModule,\n TemplatesModule] });\nCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, providers: [\n CalendarDOMService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ], imports: [[\n CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule\n ], CalendarCommonModule,\n TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent\n ],\n exports: [\n CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent,\n CalendarCommonModule,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule\n ],\n providers: [\n CalendarDOMService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ]\n }]\n }] });\n\n/**\n * The exported package module.\n *\n * The package exports:\n * - `CalendarModule`—The calendar module.\n * - `MultiViewCalendarModule`—The multi-view calendar module.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Calendars module\n * import { CalendarsModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CalendarsModule], // import the Calendars module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CalendarsModule {\n}\nCalendarsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, imports: [CalendarModule,\n MultiViewCalendarModule], exports: [CalendarModule,\n MultiViewCalendarModule] });\nCalendarsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, imports: [[\n CalendarModule,\n MultiViewCalendarModule\n ], CalendarModule,\n MultiViewCalendarModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n CalendarModule,\n MultiViewCalendarModule\n ],\n imports: [\n CalendarModule,\n MultiViewCalendarModule\n ]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DateInputCustomMessagesComponent extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDateInputCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateInputCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputCustomMessagesComponent, selector: \"kendo-dateinput-messages\", providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent)\n }\n ],\n selector: 'kendo-dateinput-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateInput component.\n */\nclass DateInputModule {\n}\nDateInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, declarations: [DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective], imports: [CommonModule, IntlModule, EventsModule], exports: [DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective] });\nDateInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, imports: [[CommonModule, IntlModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective\n ],\n exports: [\n DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective\n ],\n imports: [CommonModule, IntlModule, EventsModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DatePickerCustomMessagesComponent extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDatePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDatePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerCustomMessagesComponent, selector: \"kendo-datepicker-messages\", providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-datepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DatePicker component.\n */\nclass DatePickerModule {\n}\nDatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, declarations: [DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective], imports: [CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule], exports: [DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective,\n TemplatesModule] });\nDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[\n CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule\n ], TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective\n ],\n exports: [\n DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule\n ],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\nconst COMPONENT_DIRECTIVES$2 = [\n DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective\n];\nconst COMPONENT_MODULES$2 = [\n MultiViewCalendarModule,\n DateInputModule,\n PopupModule,\n EventsModule\n];\n/**\n * The exported package module.\n *\n * The package exports:\n * - `DateRangeComponent`—The DateRange component class.\n * - `DateRangePopupComponent`—The DateRangePopup component class.\n * - `DateRangeSelectionDirective`—The MultiviewCalendar date range selection directive.\n * - `DateRangeEndInputDirective`—The end DateInput date range selection directive.\n * - `DateRangeStartInputDirective`—The start DateInput date range selection directive.\n * - `DateRangePopupTemplateDirective`—The DateRangePopup content template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the DateRange module\n * import { DateRangeModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, DateRangeModule], // import DateRange module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DateRangeModule {\n}\nDateRangeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, declarations: [DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective], imports: [CommonModule, MultiViewCalendarModule,\n DateInputModule,\n PopupModule,\n EventsModule], exports: [DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective] });\nDateRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, imports: [[CommonModule, COMPONENT_MODULES$2]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$2],\n exports: [COMPONENT_DIRECTIVES$2],\n imports: [CommonModule, COMPONENT_MODULES$2]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass TimePickerCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTimePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTimePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerCustomMessagesComponent, selector: \"kendo-timepicker-messages\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-timepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst COMPONENT_DIRECTIVES$1 = [\n TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent\n];\nconst COMPONENT_MODULES$1 = [\n DateInputModule,\n IntlModule,\n PopupModule,\n VirtualizationModule,\n EventsModule\n];\nconst providers = [\n TimePickerDOMService,\n HoursService,\n MinutesService,\n SecondsService,\n MillisecondsService,\n DayPeriodService,\n {\n provide: TOUCH_ENABLED,\n useValue: touchEnabled\n }\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TimePicker component.\n */\nclass TimePickerModule {\n}\nTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, declarations: [TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent], imports: [CommonModule, DateInputModule,\n IntlModule,\n PopupModule,\n VirtualizationModule,\n EventsModule], exports: [TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent] });\nTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, providers: providers, imports: [[CommonModule, ...COMPONENT_MODULES$1]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1],\n imports: [CommonModule, ...COMPONENT_MODULES$1],\n providers: providers\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DateTimePickerCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDateTimePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateTimePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateTimePickerCustomMessagesComponent, selector: \"kendo-datetimepicker-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-datetimepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst COMPONENT_DIRECTIVES = [\n DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateTimePicker component.\n */\nclass DateTimePickerModule {\n}\nDateTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, declarations: [DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective], imports: [CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule], exports: [DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective, TemplatesModule] });\nDateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, providers: [\n { provide: TOUCH_ENABLED, useValue: touchEnabled }\n ], imports: [[\n CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule\n ], TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n ...COMPONENT_DIRECTIVES\n ],\n exports: [\n ...COMPONENT_DIRECTIVES,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule\n ],\n providers: [\n { provide: TOUCH_ENABLED, useValue: touchEnabled }\n ]\n }]\n }] });\n\nconst COMPONENT_MODULES = [\n CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Date Inputs components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Date Inputs module\n * import { DateInputsModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DateInputsModule], // import the Date Inputs module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DateInputsModule {\n}\nDateInputsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateInputsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, imports: [CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule], exports: [CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule] });\nDateInputsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, imports: [COMPONENT_MODULES, CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: COMPONENT_MODULES,\n imports: COMPONENT_MODULES\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CalendarCommonModule, CalendarComponent, CalendarCustomMessagesComponent, CalendarLocalizedMessagesDirective, CalendarModule, CalendarsModule, CellTemplateDirective, CenturyCellTemplateDirective, DateInputComponent, DateInputCustomMessagesComponent, DateInputLocalizedMessagesDirective, DateInputModule, DateInputsModule, DatePickerComponent, DatePickerCustomMessagesComponent, DatePickerLocalizedMessagesDirective, DatePickerModule, DateRangeComponent, DateRangeEndInputDirective, DateRangeModule, DateRangePopupComponent, DateRangePopupTemplateDirective, DateRangeSelectionDirective, DateRangeService, DateRangeStartInputDirective, DateTimePickerComponent, DateTimePickerCustomMessagesComponent, DateTimePickerModule, DecadeCellTemplateDirective, HeaderComponent, HeaderTitleTemplateDirective, HorizontalViewListComponent, KForOf, LocalizedMessagesDirective, MonthCellTemplateDirective, MultiViewCalendarComponent, MultiViewCalendarCustomMessagesComponent, MultiViewCalendarLocalizedMessagesDirective, MultiViewCalendarModule, NavigationComponent, NavigationItemTemplateDirective, PreventableEvent, TemplatesModule, TimeListComponent, TimePickerComponent, TimePickerCustomMessagesComponent, TimePickerLocalizedMessagesDirective, TimePickerModule, TimeSelectorComponent, TimeSelectorCustomMessagesComponent, TimeSelectorLocalizedMessagesDirective, ViewComponent, ViewListComponent, WeekNumberCellTemplateDirective, YearCellTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, TemplateRef, Component, Input, Output, HostBinding, InjectionToken, Injectable, Inject, Optional, Directive, forwardRef, ContentChildren, ViewChildren, ViewChild, isDevMode, Renderer2, Host, HostListener, ContentChild, NgModule } from '@angular/core';\nimport * as i2 from '@angular/animations';\nimport { style, animate, keyframes, trigger, state, transition } from '@angular/animations';\nimport { of, Subscription, Subject, merge } from 'rxjs';\nimport { delay, takeUntil, take, filter, map, share, tap, switchMap } from 'rxjs/operators';\nimport * as i6 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { DraggableDirective, isChanged, isDocumentAvailable, DraggableModule } from '@progress/kendo-angular-common';\nimport { offset, scrollPosition, positionWithScroll, getDocumentElement, getWindowViewPort } from '@progress/kendo-popup-common';\nimport { Button } from '@progress/kendo-angular-buttons';\n\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isTruthy = (value) => !!value;\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"esc\"] = 27] = \"esc\";\n Keys[Keys[\"tab\"] = 9] = \"tab\";\n Keys[Keys[\"enter\"] = 13] = \"enter\";\n Keys[Keys[\"space\"] = 32] = \"space\";\n Keys[Keys[\"ctrl\"] = 17] = \"ctrl\";\n Keys[Keys[\"shift\"] = 16] = \"shift\";\n Keys[Keys[\"left\"] = 37] = \"left\";\n Keys[Keys[\"up\"] = 38] = \"up\";\n Keys[Keys[\"right\"] = 39] = \"right\";\n Keys[Keys[\"down\"] = 40] = \"down\";\n})(Keys || (Keys = {}));\n/**\n * @hidden\n */\nconst DIALOG_ELEMENTS_HANDLING_ESC_KEY = 'k-dialog-wrapper k-dialog-buttongroup k-dialog-action';\n/**\n * @hidden\n */\nconst DIALOG_ELEMENTS_HANDLING_ARROWS = 'k-dialog-buttongroup';\n/**\n * @hidden\n */\nconst WINDOW_CLASSES = 'k-window';\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n return !!(rect.width && rect.height) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const validTabIndex = tabIndex !== null && !isNaN(tabIndex) && tabIndex > -1;\n let focusable = false;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n else {\n focusable = validTabIndex;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst setHTMLAttributes = (attributes, renderer, element) => {\n for (const attribute in attributes) {\n if (attribute) {\n renderer.setAttribute(element, attribute, attributes[attribute]);\n }\n }\n};\n/**\n * Receives CSS class declarations either as an object, string or array and returns an array of the class names.\n *\n * @hidden\n */\nconst parseCSSClassNames = (value) => {\n if (isObject(value)) {\n return parseObjectClassNames(value);\n }\n if (isString(value)) {\n return parseStringClassNames(value);\n }\n if (Array.isArray(value)) {\n return parseArrayClassNames(value);\n }\n};\nconst parseObjectClassNames = (value) => {\n const classes = [];\n Object.keys(value).forEach(className => {\n const currentClassName = splitStringToArray(className);\n if (value[className] && currentClassName[0]) {\n classes.push(...currentClassName);\n }\n });\n return classes;\n};\nconst parseStringClassNames = (value) => {\n const classes = [];\n const classesArray = splitStringToArray(value);\n classesArray.forEach(className => {\n classes.push(className);\n });\n return classes;\n};\nconst parseArrayClassNames = (value) => {\n const classes = [];\n value.forEach((className) => {\n const current = splitStringToArray(className);\n if (current[0]) {\n classes.push(...current);\n }\n });\n return classes;\n};\n/**\n * @hidden\n */\nconst focusableSelector = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[tabindex]',\n '*[contenteditable]'\n].join(',');\n/**\n * @hidden\n */\nconst preventDefault = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst preventOnDblClick = release => (mouseDown) => of(mouseDown).pipe(delay(150), takeUntil(release));\n/**\n * @hidden\n */\nconst RESIZE_DIRECTIONS = ['n', 'e', 's', 'w', 'se', 'sw', 'ne', 'nw'];\n/**\n * @hidden\n */\nconst OFFSET_STYLES = ['top', 'left', 'width', 'height'];\n/**\n * @hidden\n */\nconst isString = (value) => value instanceof String || typeof value === 'string';\n/**\n * @hidden\n */\nconst isObject = (value) => isPresent(value) && !Array.isArray(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isNumber = (value) => typeof value === 'number' && isFinite(value);\n/**\n * @hidden\n */\nconst createValueWithUnit = (value) => value + (isNumber(value) ? 'px' : '');\n/**\n * @hidden\n */\nconst splitStringToArray = (value) => value.trim().replace(/\\s+/g, \" \").split(' ');\n/**\n * @hidden\n */\nconst findPrimaryButton = (buttons) => {\n for (let i = buttons.length - 1; i >= 0; i--) {\n const classList = buttons[i].classList;\n for (let j = 0; j < classList.length; j++) {\n if (classList[j].endsWith('-primary')) {\n return buttons[i];\n }\n }\n }\n};\n\n/**\n * Specifies the action buttons of the Dialog\n * ([see example]({% slug actionbuttons_dialog %})).\n */\nclass DialogActionsComponent {\n constructor(el) {\n this.el = el;\n /**\n * Specifies the possible layout of the action buttons.\n */\n this.layout = 'stretched';\n /**\n * Fires when the user clicks an action button.\n */\n this.action = new EventEmitter();\n this.buttonGroupClassName = true;\n }\n /**\n * Allows the declarative specification of the actions.\n */\n set actions(value) {\n if (value instanceof TemplateRef) {\n this.actionsTemplate = value;\n }\n else if (Array.isArray(value)) {\n this.actionsArray = value;\n }\n else {\n throw new Error('\"actions\" must be either TemplateRef or DialogAction[] instance.');\n }\n }\n get className() {\n return this.layout === 'stretched';\n }\n /**\n * @hidden\n */\n onButtonClick(action, _e) {\n this.action.emit(action);\n }\n /**\n * @hidden\n */\n buttonClass(action) {\n let classes = ['k-button k-button-md k-rounded-md'];\n const fillMode = action.fillMode ? action.fillMode : 'solid';\n const themeColor = action.themeColor ? action.themeColor : 'base';\n const cssClasses = action.cssClass ? parseCSSClassNames(action.cssClass) : [];\n classes.push(`k-button-${fillMode} k-button-${fillMode}-${themeColor}`);\n if (cssClasses.length > 0) {\n classes = classes.concat(cssClasses);\n }\n return classes.join(' ');\n }\n}\nDialogActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogActionsComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nDialogActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: { actions: \"actions\", layout: \"layout\" }, outputs: { action: \"action\" }, host: { properties: { \"class.k-dialog-buttongroup\": \"this.buttonGroupClassName\", \"class.k-actions\": \"this.buttonGroupClassName\", \"class.k-actions-stretched\": \"this.className\" } }, ngImport: i0, template: `\n \n \n \n {{ action.text }}\n \n \n \n `, isInline: true, directives: [{ type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i6.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogActionsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-dialog-actions',\n template: `\n \n \n \n {{ action.text }}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { actions: [{\n type: Input\n }], layout: [{\n type: Input\n }], action: [{\n type: Output\n }], buttonGroupClassName: [{\n type: HostBinding,\n args: ['class.k-dialog-buttongroup']\n }, {\n type: HostBinding,\n args: ['class.k-actions']\n }], className: [{\n type: HostBinding,\n args: ['class.k-actions-stretched']\n }] } });\n\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst DIALOG_LOCALIZATION_SERVICE = new InjectionToken('Dialog LocalizationService');\n\n/**\n * @hidden\n */\nclass TitleBarLocalizationService extends LocalizationService {\n constructor(prefix, messageService, rtl, dialogLocalization) {\n super(prefix, messageService, rtl);\n this.dialogLocalization = dialogLocalization;\n }\n get(shortKey) {\n if (this.dialogLocalization) {\n return this.dialogLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nTitleBarLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: DIALOG_LOCALIZATION_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nTitleBarLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: i1.LocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIALOG_LOCALIZATION_SERVICE]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-dialog-messages-base\", inputs: { closeTitle: \"closeTitle\", restoreTitle: \"restoreTitle\", maximizeTitle: \"maximizeTitle\", minimizeTitle: \"minimizeTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-dialog-messages-base'\n }]\n }], propDecorators: { closeTitle: [{\n type: Input\n }], restoreTitle: [{\n type: Input\n }], maximizeTitle: [{\n type: Input\n }], minimizeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoDialogLocalizedMessages],\n [kendoWindowLocalizedMessages],\n [kendoDialogTitleBarLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [Kendo UI DialogTitleBar component for Angular]({% slug api_dialog_dialogtitlebarcomponent %}).\n *\n * It is used as part of the Dialog content when the component is created dynamically by using an [Angular service]({% slug service_dialog %}).\n */\nclass DialogTitleBarComponent {\n constructor(zone, hostElement, localizationService) {\n this.zone = zone;\n this.hostElement = hostElement;\n this.localizationService = localizationService;\n /**\n * Fires when the close button of the title-bar is clicked.\n */\n this.close = new EventEmitter();\n }\n get className() {\n return true;\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n ngAfterViewInit() {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n const element = this.hostElement.nativeElement.querySelector('.k-dialog-title');\n element.setAttribute('id', this.id);\n });\n }\n /**\n * @hidden\n */\n onCloseClick(e) {\n e.preventDefault();\n const eventArgs = new PreventableEvent();\n this.close.emit(eventArgs);\n }\n}\nDialogTitleBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogTitleBarComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDialogTitleBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: { id: \"id\", closeTitle: \"closeTitle\" }, outputs: { close: \"close\" }, host: { properties: { \"class.k-window-titlebar\": \"this.className\", \"class.k-dialog-titlebar\": \"this.className\" } }, providers: [\n TitleBarLocalizationService,\n {\n provide: LocalizationService,\n useExisting: TitleBarLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ], ngImport: i0, template: `\n \n
\n \n
\n\n
\n \n \n \n
\n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogTitleBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-dialog-titlebar',\n providers: [\n TitleBarLocalizationService,\n {\n provide: LocalizationService,\n useExisting: TitleBarLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ],\n template: `\n \n
\n \n
\n\n
\n \n \n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.LocalizationService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { close: [{\n type: Output\n }], id: [{\n type: Input\n }], closeTitle: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: ['class.k-window-titlebar']\n }, {\n type: HostBinding,\n args: ['class.k-dialog-titlebar']\n }] } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dialog',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654175123,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Indicates that the **Close** button is clicked. Used when the results from\n * the Dialogs that are opened through `DialogService` are filtered\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogCloseResult {\n}\n\n/**\n * @hidden\n */\nfunction animations(duration, direction, animationType) {\n switch (animationType) {\n case 'slide':\n const translate = direction === 'left' || direction === 'right' ? 'translateX' : 'translateY';\n const start = direction === 'right' || direction === 'down' ? -100 : 100;\n const end = 0;\n return [\n style({ transform: `${translate}(${start}%)` }),\n animate(`${duration}ms ease-in`, style({ transform: `${translate}(${end}%)` }))\n ];\n case 'expand':\n const scale = direction === 'up' || direction === 'down' ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === 'down') {\n origin = 'top';\n }\n else if (direction === 'left') {\n origin = 'right';\n }\n else if (direction === 'right') {\n origin = 'left';\n }\n else {\n origin = 'bottom';\n }\n return [\n style({ transform: `${scale}(${startScale})`, transformOrigin: origin }),\n animate(`${duration}ms ease-in`, style({ transform: `${scale}(${endScale})` }))\n ];\n case 'zoom':\n const startZoom = 0;\n const endZoom = 1;\n return [\n animate(duration, keyframes([\n style({ transform: `scale(${startZoom})` }),\n style({ transform: `scale(${endZoom})` })\n ]))\n ];\n case 'fade':\n const startFade = 0;\n const endFade = 1;\n return [\n animate(duration, keyframes([\n style({ opacity: `${startFade}` }),\n style({ opacity: `${endFade}` })\n ]))\n ];\n case 'translate':\n return [\n style({ transform: 'translate(0, -10%)' }),\n animate(`${duration}ms cubic-bezier(.2, 1, .2, 1)`)\n ];\n default:\n return [\n style({ transform: 'translate(0, -10%)' }),\n animate(`${duration}ms cubic-bezier(.2, 1, .2, 1)`)\n ];\n }\n}\n\n/**\n * @hidden\n */\nconst createPlayer = (builder, animation, animatedElement) => {\n const factory = builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n player.destroy();\n player = null;\n }\n });\n return player;\n};\n\n/**\n * @hidden\n */\nconst animateContent = (animation, defAnimationConfig, animatedElement, builder) => {\n let animationConfig = defAnimationConfig;\n if (typeof animation !== 'boolean') {\n animationConfig = animation;\n animationConfig.duration = animationConfig.duration ? animationConfig.duration : defAnimationConfig.duration;\n }\n const animationSpecs = animations(animationConfig.duration, animationConfig.direction, animationConfig.type);\n const player = createPlayer(builder, animationSpecs, animatedElement);\n player.play();\n};\n\nconst DEFAULT_ANIMATION_CONFIG = { duration: 300, type: 'translate' };\n/**\n * Represents the [Kendo UI Dialog component for Angular]({% slug overview_dialog_dialogs %}).\n */\nclass DialogComponent {\n constructor(wrapper, renderer, localization, cdr, ngZone, builder) {\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.builder = builder;\n /**\n * Specifies the layout of the action buttons in the Dialog.\n * This option is only applicable if the action buttons are specified through the `actions` options.\n *\n * @default 'stretched'\n */\n this.actionsLayout = 'stretched';\n /**\n * Configures the Dialog opening animation ([see example]({% slug animations_dialog %})).\n * By default the animation type is set to `translate` and its duration is `300ms`.\n *\n * @default true\n */\n this.animation = true;\n /**\n * @hidden\n */\n this.titleId = null;\n /**\n * @hidden\n */\n this.contentId = null;\n /**\n * Fires when the user clicks an action button of the Dialog.\n * The event is fired only when the action buttons are specified through the `actions` options.\n */\n this.action = new EventEmitter();\n /**\n * Fires when the user clicks the **Close** button of the Dialog or the **ESC** key.\n */\n this.close = new EventEmitter();\n this.tabIndex = 0;\n this.subscriptions = [];\n this.domSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscriptions.push(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.titleId = this.generateTitleId();\n this.contentId = this.generateContentId();\n }\n /**\n * @hidden\n */\n set htmlAttributes(attributes) {\n setHTMLAttributes(attributes, this.renderer, this.wrapper.nativeElement);\n const el = this.wrapper.nativeElement;\n const dir = el.getAttribute('dir');\n const tIndex = el.getAttribute('tabindex');\n if (this.direction !== dir && dir) {\n this.direction = dir;\n }\n if (this.tabIndex !== tIndex && tIndex) {\n this.tabIndex = tIndex;\n }\n this._htmlAttributes = attributes;\n }\n get htmlAttributes() {\n return this._htmlAttributes;\n }\n /**\n * @hidden\n */\n set cssClass(classes) {\n this.setServiceClasses(this._cssClass, classes);\n this._cssClass = classes;\n }\n get cssClass() {\n return this._cssClass;\n }\n get dir() {\n return this.direction;\n }\n ngAfterContentInit() {\n this.bubble('close', this.titlebarContent.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-describedby', this.contentId);\n if (this.titlebarContent.first) {\n this.titlebarContent.first.id = this.titleId;\n }\n else {\n this.subscriptions.push(this.titlebarContent.changes.subscribe(() => {\n if (isPresent(this.titlebarContent.first)) {\n this.titlebarContent.first.id = this.titleId;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarContent.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n });\n }\n }));\n }\n }\n ngAfterViewInit() {\n this.handleInitialFocus();\n this.bubble('close', this.titlebarView.first);\n this.bubble('action', this.actionsView);\n if (this.titlebarView.first || this.titlebarContent.first) {\n //Needed for Dialogs created via service\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n }\n else {\n this.subscriptions.push(this.titlebarView.changes.subscribe(() => {\n if (isPresent(this.titlebarView.first)) {\n this.titlebarView.first.id = this.titleId;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarView.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n });\n }\n }));\n }\n this.initDomEvents();\n }\n ngOnInit() {\n if (this.animation) {\n animateContent(this.animation, DEFAULT_ANIMATION_CONFIG, this.dialog.nativeElement, this.builder);\n }\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'title');\n this.cdr.detectChanges();\n }\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subscriptions = [];\n if (this.domSubs) {\n this.domSubs.unsubscribe();\n }\n }\n /**\n * Focuses the wrapper of the Dialog component.\n */\n focus() {\n const wrapper = this.wrapper.nativeElement;\n if (isPresent(wrapper)) {\n wrapper.focus();\n }\n }\n initDomEvents() {\n if (!this.wrapper) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', (ev) => {\n this.onKeyDown(ev);\n }));\n });\n }\n onKeyDown(event) {\n const target = event.target;\n const parent = target.parentElement;\n if (hasClasses(target, DIALOG_ELEMENTS_HANDLING_ESC_KEY) || hasClasses(parent, DIALOG_ELEMENTS_HANDLING_ESC_KEY)) {\n if (event.keyCode === Keys.esc) {\n this.ngZone.run(() => {\n this.close.emit(new DialogCloseResult());\n });\n }\n }\n if (hasClasses(target, 'k-button') && hasClasses(parent, DIALOG_ELEMENTS_HANDLING_ARROWS) &&\n (event.keyCode === Keys.left || event.keyCode === Keys.right)) {\n this.ngZone.run(() => {\n this.handleActionButtonFocus(parent, event.keyCode);\n });\n }\n if (event.keyCode === Keys.tab) {\n this.ngZone.run(() => {\n this.keepFocusWithinComponent(target, event);\n });\n }\n }\n setServiceClasses(prevValue, value) {\n const el = this.wrapper.nativeElement;\n if (prevValue) {\n parseCSSClassNames(prevValue).forEach(className => {\n this.renderer.removeClass(el, className);\n });\n }\n if (value) {\n parseCSSClassNames(value).forEach(className => {\n this.renderer.addClass(el, className);\n });\n }\n }\n /**\n * @hidden\n */\n handleInitialFocus() {\n const wrapper = this.wrapper.nativeElement;\n const primaryButton = this.findPrimary(wrapper);\n if (this.autoFocusedElement) {\n const initiallyFocusedElement = wrapper.querySelector(this.autoFocusedElement);\n if (initiallyFocusedElement) {\n initiallyFocusedElement.focus();\n }\n }\n else if (this.shouldFocusPrimary(primaryButton)) {\n primaryButton.focus();\n }\n else {\n wrapper.focus();\n }\n }\n /**\n * @hidden\n */\n findPrimary(wrapper) {\n const actionBtns = wrapper.querySelectorAll('.k-actions .k-button');\n return findPrimaryButton(actionBtns);\n }\n /**\n * @hidden\n */\n handleActionButtonFocus(parent, key) {\n const focusableActionButtons = this.getAllFocusableChildren(parent);\n for (let i = 0; i < focusableActionButtons.length; i++) {\n const current = focusableActionButtons[i];\n if (current === document.activeElement) {\n if (key === Keys.left && i > 0) {\n focusableActionButtons[i - 1].focus();\n break;\n }\n if (key === Keys.right && i < focusableActionButtons.length - 1) {\n focusableActionButtons[i + 1].focus();\n break;\n }\n }\n }\n }\n /**\n * @hidden\n */\n keepFocusWithinComponent(target, event) {\n const wrapper = this.wrapper.nativeElement;\n const [firstFocusable, lastFocusable] = this.getFirstAndLastFocusable(wrapper);\n const tabAfterLastFocusable = !event.shiftKey && target === lastFocusable;\n const shiftTabAfterFirstFocusable = event.shiftKey && target === firstFocusable;\n if (tabAfterLastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n if (shiftTabAfterFirstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n }\n /**\n * @hidden\n */\n shouldFocusPrimary(el) {\n return isPresent(el) && isFocusable(el);\n }\n /**\n * @hidden\n */\n getAllFocusableChildren(parent) {\n return parent.querySelectorAll(focusableSelector);\n }\n /**\n * @hidden\n */\n getFirstAndLastFocusable(parent) {\n const all = this.getAllFocusableChildren(parent);\n const firstFocusable = all.length > 0 ? all[0] : parent;\n const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;\n return [firstFocusable, lastFocusable];\n }\n /**\n * @hidden\n */\n generateTitleId() {\n return 'kendo-dialog-title-' + Math.ceil(Math.random() * 1000000).toString();\n }\n /**\n * @hidden\n */\n generateContentId() {\n return 'kendo-dialog-content-' + Math.ceil(Math.random() * 1000000).toString();\n }\n get wrapperClass() {\n return true;\n }\n get styles() {\n const styles = {};\n if (this.width) {\n styles.width = createValueWithUnit(this.width);\n }\n if (this.height) {\n styles.height = createValueWithUnit(this.height);\n }\n if (this.minWidth) {\n styles.minWidth = createValueWithUnit(this.minWidth);\n }\n if (this.maxWidth) {\n styles.maxWidth = createValueWithUnit(this.maxWidth);\n }\n if (this.minHeight) {\n styles.minHeight = createValueWithUnit(this.minHeight);\n }\n if (this.maxHeight) {\n styles.maxHeight = createValueWithUnit(this.maxHeight);\n }\n return styles;\n }\n bubble(eventName, component) {\n if (component) {\n const emit = e => this[eventName].emit(e);\n const s = component[eventName].subscribe(emit);\n this.subscriptions.push(s);\n }\n }\n}\nDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });\nDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogComponent, selector: \"kendo-dialog\", inputs: { actions: \"actions\", actionsLayout: \"actionsLayout\", autoFocusedElement: \"autoFocusedElement\", title: \"title\", width: \"width\", minWidth: \"minWidth\", maxWidth: \"maxWidth\", height: \"height\", minHeight: \"minHeight\", maxHeight: \"maxHeight\", animation: \"animation\" }, outputs: { action: \"action\", close: \"close\" }, host: { properties: { \"attr.dir\": \"this.dir\", \"attr.tabIndex\": \"this.tabIndex\", \"class.k-dialog-wrapper\": \"this.wrapperClass\" } }, providers: [\n LocalizationService,\n {\n provide: DIALOG_LOCALIZATION_SERVICE,\n useExisting: LocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ], queries: [{ propertyName: \"titlebarContent\", predicate: DialogTitleBarComponent }], viewQueries: [{ propertyName: \"actionsView\", first: true, predicate: DialogActionsComponent, descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true, static: true }, { propertyName: \"titlebarView\", predicate: DialogTitleBarComponent, descendants: true }], exportAs: [\"kendoDialog\"], ngImport: i0, template: `\n \n
\n\n
\n {{ title }}\n \n\n
\n \n \n
\n\n \n \n
\n \n `, isInline: true, components: [{ type: DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }, { type: i6.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n trigger('overlayAppear', [\n state('in', style({ opacity: 1 })),\n transition('void => *', [style({ opacity: 0.1 }), animate('.3s cubic-bezier(.2, .6, .4, 1)')])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('overlayAppear', [\n state('in', style({ opacity: 1 })),\n transition('void => *', [style({ opacity: 0.1 }), animate('.3s cubic-bezier(.2, .6, .4, 1)')])\n ])\n ],\n exportAs: 'kendoDialog',\n providers: [\n LocalizationService,\n {\n provide: DIALOG_LOCALIZATION_SERVICE,\n useExisting: LocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ],\n selector: 'kendo-dialog',\n template: `\n \n
\n\n
\n {{ title }}\n \n\n
\n \n \n
\n\n \n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i2.AnimationBuilder }]; }, propDecorators: { actions: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], autoFocusedElement: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], maxWidth: [{\n type: Input\n }], height: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], maxHeight: [{\n type: Input\n }], animation: [{\n type: Input\n }], action: [{\n type: Output\n }], close: [{\n type: Output\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], titlebarContent: [{\n type: ContentChildren,\n args: [DialogTitleBarComponent, { descendants: false }]\n }], titlebarView: [{\n type: ViewChildren,\n args: [DialogTitleBarComponent]\n }], actionsView: [{\n type: ViewChild,\n args: [DialogActionsComponent, { static: false }]\n }], dialog: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-dialog-wrapper']\n }] } });\n\n/**\n * Holds references to the object instance and published events of the Dialog.\n * Controls the Dialogs that were opened through the `DialogService`\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogRef {\n}\n\n/**\n * The base class which will be extended by a component that is provided as content through `content`\n * ([see example]({% slug service_dialog %}#toc-passing-title-content-and-actions-as-a-single-component)).\n */\nclass DialogContentBase {\n constructor(dialog) {\n this.dialog = dialog;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n if (this.dialogTitleBar) {\n // when opening component inside dialog with service AND the component has defined its own titlebar\n this.dialogTitleBar.close.pipe(filter((e) => !e.isDefaultPrevented())).subscribe(() => {\n this.dialog.close();\n });\n }\n if (this.dialogActions) {\n if (this.dialogActions.actions) {\n this.dialogActions.action.subscribe(action => this.dialog.dialog.instance.action.emit(action));\n }\n }\n }\n}\nDialogContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContentBase, deps: [{ token: DialogRef }], target: i0.ɵɵFactoryTarget.Directive });\nDialogContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogContentBase, viewQueries: [{ propertyName: \"dialogTitleBar\", first: true, predicate: DialogTitleBarComponent, descendants: true }, { propertyName: \"dialogActions\", first: true, predicate: DialogActionsComponent, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContentBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: DialogRef }]; }, propDecorators: { dialogTitleBar: [{\n type: ViewChild,\n args: [DialogTitleBarComponent, { static: false }]\n }], dialogActions: [{\n type: ViewChild,\n args: [DialogActionsComponent, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass DialogContainerService {\n set container(container) {\n DialogContainerService.container = container;\n }\n get container() {\n return DialogContainerService.container;\n }\n}\nDialogContainerService.container = null;\nDialogContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDialogContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * The settings for the Dialog actions when the Dialog is opened through `DialogService`\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogAction {\n}\n\n/**\n * The settings that can be used when the Dialog is opened through `DialogService`.\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogSettings {\n}\n\n// eslint-disable max-line-length\nconst isNotComponent$1 = (component) => isString(component) || component instanceof TemplateRef;\nclass DialogInjector {\n constructor(getDialogRef, parentInjector) {\n this.getDialogRef = getDialogRef;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue) {\n if (token === DialogRef) {\n return this.getDialogRef();\n }\n return this.parentInjector.get(token, notFoundValue);\n }\n}\n/**\n * A service for opening Dialog windows dynamically\n * ([see example]({% slug service_dialog %})).\n */\nclass DialogService {\n constructor(\n /**\n * @hidden\n */\n resolver, containerService) {\n this.resolver = resolver;\n this.containerService = containerService;\n }\n /**\n * Opens a Dialog window. Requires an element in the application that uses the\n * [`kendoDialogContainer`]({% slug api_dialog_dialogcontainerdirective %}) directive.\n * Created Dialogs will be mounted in the DOM directly after that element.\n *\n * @param {DialogAction} options - The options that define the Dialog.\n * @returns {DialogRef} - A reference to the Dialog object and the convenience properties.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n *
\n * `\n * })\n * export class AppComponent {\n * constructor( private dialogService: DialogService ) {}\n *\n * public open() {\n * var dialog = this.dialogService.open({\n * title: \"Please confirm\",\n * content: \"Are you sure?\",\n * actions: [\n * { text: \"No\" },\n * { text: \"Yes\", themeColor: 'primary' }\n * ]\n * });\n *\n * dialog.result.subscribe((result) => {\n * if (result instanceof DialogCloseResult) {\n * console.log(\"close\");\n * } else {\n * console.log(\"action\", result);\n * }\n * });\n * }\n * }\n * ```\n *\n */\n open(options) {\n const factory = this.resolver.resolveComponentFactory(DialogComponent);\n const container = options.appendTo || this.containerService.container;\n if (!container) {\n throw new Error(`\nCannot attach dialog to the page.\nAdd an element that uses the kendoDialogContainer directive, or set the 'appendTo' property.\nSee https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/.\n `);\n }\n // create DialogRef to (1) pass as result, (2) provide through injector\n const dialogRef = {\n close: () => {\n /* noop */\n },\n content: null,\n dialog: null,\n result: null\n };\n return this.initializeDialog(options.content, factory, container, dialogRef, options);\n }\n initializeDialog(component, factory, container, dialogRef, options) {\n const content = this.contentFrom(component, container, dialogRef);\n const dialog = container.createComponent(factory, undefined, undefined, content.nodes);\n dialogRef.dialog = dialog;\n dialog.changeDetectorRef.markForCheck();\n // copy @Input options to dialog instance\n this.applyOptions(dialog.instance, options);\n // create close handler and result stream\n const apiClose = new Subject();\n const close = (e) => {\n if (e instanceof PreventableEvent) {\n e = new DialogCloseResult();\n }\n apiClose.next(e || new DialogCloseResult());\n if (content.componentRef) {\n content.componentRef.destroy();\n }\n dialog.destroy();\n };\n const result = merge(apiClose, \n // triggered when the titlebar or actions are defined in DialogSettings\n merge(dialog.instance.close, dialog.instance.action).pipe(map(e => (e instanceof PreventableEvent ? new DialogCloseResult() : e)), filter(e => {\n if (options.preventAction) {\n // add dialogRef only when using component\n const dialogRefParameter = isNotComponent$1(component) ? undefined : dialogRef;\n return !options.preventAction(e, dialogRefParameter);\n }\n return true;\n }))).pipe(take(1), \n // Takes care for multiple subscriptions:\n // We subscribe internaly and the user may subscribe to get a close result - dialog.result.subscribe().\n // This causes multiple subscriptions to the same source and thus multiple emissions. share() solves that.\n share());\n result.subscribe(close);\n dialogRef.close = close;\n dialogRef.result = result;\n if (component && isDevMode()) {\n const hasContentTitle = content.nodes[0] && content.nodes[0].length > 0;\n const hasContentActions = content.nodes[2] && content.nodes[2].length > 0;\n const multipleTitles = options.title && hasContentTitle;\n const multipleActions = options.actions && hasContentActions;\n if (component.prototype instanceof DialogContentBase) {\n // content component extends DialogContentBase\n if (multipleTitles || multipleActions) {\n console.warn(`\n Multiple Title and/or Actions configurations detected.\n When using a component as content, provide the title and actions either in the component's markup\n or via the title and actions properties of the DialogSettings object, but not both.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/#toc-passing-title-content-and-actions-as-a-single-component'`);\n }\n }\n else {\n if (hasContentTitle || hasContentActions) {\n console.warn(`\n When Title and/or Actions markup is provided in content component's template,\n the component needs to inherit the DialogContentBase class to ensure that close and result events are properly hooked.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/#toc-passing-title-content-and-actions-as-a-single-component'`);\n }\n }\n }\n return dialogRef;\n }\n applyOptions(instance, options) {\n instance.title = options.title;\n instance.actions = options.actions;\n instance.actionsLayout = options.actionsLayout || 'stretched';\n instance.width = options.width;\n instance.minWidth = options.minWidth;\n instance.maxWidth = options.maxWidth;\n instance.height = options.height;\n instance.minHeight = options.minHeight;\n instance.maxHeight = options.maxHeight;\n instance.autoFocusedElement = options.autoFocusedElement;\n instance.closeTitle = options.closeTitle;\n instance.cssClass = options.cssClass;\n instance.htmlAttributes = options.htmlAttributes;\n instance.animation = options.animation !== undefined ? options.animation : true;\n if (options.content instanceof TemplateRef) {\n instance.contentTemplate = options.content;\n }\n }\n contentFrom(content, container, dialogRef) {\n const renderer = container.injector.get(Renderer2);\n let nodes = [];\n let titleNodes = [];\n let actionNodes = [];\n let componentRef = null;\n if (typeof content === 'string') {\n nodes = [renderer.createText(content)];\n }\n else if (content && !(content instanceof TemplateRef)) {\n // Component\n const injector = new DialogInjector(() => dialogRef, container.injector);\n const factory = this.resolver.resolveComponentFactory(content);\n componentRef = container.createComponent(factory, undefined, injector);\n titleNodes = Array.from(componentRef.location.nativeElement.querySelectorAll('kendo-dialog-titlebar'));\n nodes = [componentRef.location.nativeElement];\n actionNodes = Array.from(componentRef.location.nativeElement.querySelectorAll('kendo-dialog-actions'));\n dialogRef.content = componentRef;\n }\n return {\n componentRef,\n nodes: [\n titleNodes,\n nodes,\n actionNodes // \n ]\n };\n }\n}\nDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: DialogContainerService }], target: i0.ɵɵFactoryTarget.Injectable });\nDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: DialogContainerService, decorators: [{\n type: Inject,\n args: [DialogContainerService]\n }] }]; } });\n\n/**\n * @hidden\n */\nlet newZIndex = 10002;\n/**\n * @hidden\n */\nconst DEFAULT_OPTIONS = {\n draggable: true,\n height: null,\n left: null,\n minHeight: 100,\n minWidth: 120,\n position: 'absolute',\n resizable: true,\n state: 'default',\n top: null,\n width: null\n};\n/**\n * @hidden\n */\nconst createMoveStream = (el, ev) => mouseDown => {\n return el.kendoDrag\n .pipe(takeUntil(el.kendoRelease.pipe(tap(() => { ev.emit(); }))), map(({ pageX, pageY }) => ({\n originalX: mouseDown.pageX,\n originalY: mouseDown.pageY,\n pageX,\n pageY\n })));\n};\n/**\n * @hidden\n */\nclass DragResizeService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.close = new EventEmitter();\n this.focus = new EventEmitter();\n this.change = new EventEmitter();\n this.stateChange = new EventEmitter();\n this.dragStart = new EventEmitter();\n this.dragEnd = new EventEmitter();\n this.resizeStart = new EventEmitter();\n this.resizeEnd = new EventEmitter();\n this.options = Object.assign({}, DEFAULT_OPTIONS);\n this.lastAction = null;\n this.subscriptions = new Subscription();\n this.dragSubscription = new Subscription();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.dragSubscription) {\n this.dragSubscription.unsubscribe();\n }\n }\n init(el) {\n const state = this.options.state;\n let options = this.options;\n this.window = el;\n if (state !== 'default') {\n this.restoreOptions = Object.assign({}, options);\n }\n if (state === 'minimized') {\n options.height = 0;\n options.minHeight = 0;\n }\n if (state === 'maximized') {\n options.position = 'fixed';\n }\n }\n onDrag(el) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => {\n let startPosition;\n let dragStarted;\n this.dragSubscription = el.kendoPress\n .pipe(tap((ev) => {\n if (!ev.isTouch) {\n preventDefault(ev);\n }\n this.focus.emit();\n startPosition = this.currentPosition();\n dragStarted = false;\n }), switchMap(createMoveStream(el, this.dragEnd)))\n .subscribe(({ pageX, pageY, originalX, originalY }) => {\n if (!dragStarted) {\n this.ensureWidth();\n this.dragStart.emit();\n dragStarted = true;\n }\n this.handleDrag({\n originalX, originalY,\n pageX, pageY, startPosition\n });\n });\n }));\n }\n handleDrag({ originalX, originalY, pageX, pageY, startPosition }) {\n this.options.left = startPosition.x + pageX - originalX;\n this.options.top = startPosition.y + pageY - originalY;\n if (this.options.state === 'minimized' && isPresent(this.restoreOptions)) {\n this.restoreOptions.left = this.options.left;\n this.restoreOptions.top = this.options.top;\n }\n this.change.emit({\n left: startPosition.x + pageX - originalX,\n top: startPosition.y + pageY - originalY\n });\n }\n onResize(handle, direction) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => {\n let startOffsetAndPosition;\n let resizeStarted = false;\n handle.kendoPress.pipe(tap((ev) => {\n preventDefault(ev);\n this.focus.emit();\n startOffsetAndPosition = this.currentOffsetAndPosition();\n resizeStarted = false;\n }), switchMap(createMoveStream(handle, this.resizeEnd)))\n .subscribe(({ pageX, pageY, originalX, originalY }) => {\n if (!resizeStarted) {\n this.resizeStart.emit(direction);\n resizeStarted = true;\n }\n let deltaX = pageX - originalX;\n let deltaY = pageY - originalY;\n this.handleResize(startOffsetAndPosition, direction, deltaX, deltaY);\n });\n }));\n }\n handleResize(initial, dir, deltaX, deltaY) {\n const old = this.options;\n let ev = {};\n if (dir.indexOf('e') >= 0) {\n const newWidth = initial.width + deltaX;\n if (newWidth !== old.width && newWidth >= old.minWidth) {\n ev.width = newWidth;\n }\n }\n if (dir.indexOf('n') >= 0) {\n const newHeight = initial.height - deltaY;\n const newTop = initial.y + deltaY;\n if (newHeight !== old.height && newHeight >= old.minHeight && newTop !== old.top) {\n ev.height = newHeight;\n ev.top = newTop;\n }\n }\n if (dir.indexOf('s') >= 0) {\n const newHeight = initial.height + deltaY;\n if (newHeight !== old.height && newHeight >= old.minHeight) {\n ev.height = newHeight;\n }\n }\n if (dir.indexOf('w') >= 0) {\n const newLeft = initial.x + deltaX;\n const newWidth = initial.width - deltaX;\n if (newWidth !== old.width && newWidth >= old.minWidth && newLeft !== old.left) {\n ev.width = newWidth;\n ev.left = newLeft;\n }\n }\n if (isPresent(ev.width) || isPresent(ev.height)) {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.options[style] = ev[style];\n }\n });\n this.change.emit(ev);\n }\n }\n restoreAction() {\n this.lastAction = 'restore';\n this.defaultState();\n }\n defaultState() {\n if (isPresent(this.restoreOptions)) {\n this.options = Object.assign({}, this.restoreOptions);\n }\n this.options.state = 'default';\n this.stateChange.emit('default');\n }\n storeOptions() {\n this.restoreOptions = Object.assign({}, this.options);\n }\n maximizeAction() {\n this.lastAction = 'maximize';\n this.maximizeState();\n }\n maximizeState() {\n this.storeOptions();\n const wnd = this.windowViewPort;\n this.options = Object.assign({}, this.options, {\n height: wnd.height,\n left: 0,\n position: 'fixed',\n state: 'maximized',\n top: 0,\n width: wnd.width\n });\n this.stateChange.emit('maximized');\n }\n minimizeAction() {\n this.lastAction = 'minimize';\n this.minimizeState();\n }\n minimizeState() {\n this.storeOptions();\n this.options = Object.assign({}, this.options, {\n height: null,\n minHeight: 0,\n state: 'minimized'\n });\n this.stateChange.emit('minimized');\n }\n /**\n * Handles manual changes of the 'state' property.\n * Required to distinguish them from action clicks.\n */\n applyManualState() {\n const state = this.options.state;\n switch (state) {\n case 'default':\n this.clearHeight();\n this.defaultState();\n break;\n case 'maximized':\n this.clearHeight();\n this.maximizeState();\n break;\n case 'minimized':\n this.minimizeState();\n break;\n default:\n break;\n }\n }\n closeAction() {\n this.close.emit();\n }\n ensureWidth() {\n const windowOffset = offset(this.window.nativeElement);\n if (!isPresent(this.options.width)) {\n this.options.width = windowOffset.width;\n this.change.emit({ width: windowOffset.width });\n }\n }\n clearHeight() {\n if (this.options.height === 0) {\n delete this.options.height;\n }\n if (this.options.minHeight === 0) {\n delete this.options.minHeight;\n }\n }\n center() {\n if (this.options.state === 'maximized') {\n return;\n }\n let scroll = scrollPosition(this.window.nativeElement);\n let wnd = this.windowViewPort;\n let wrapper = offset(this.window.nativeElement);\n let ev = {};\n if (!isPresent(this.options.left)) {\n this.options.left = scroll.x + Math.max(0, (wnd.width - wrapper.width) / 2);\n ev.left = this.options.left;\n }\n if (!isPresent(this.options.top)) {\n this.options.top = scroll.y + Math.max(0, (wnd.height - wrapper.height) / 2);\n ev.top = this.options.top;\n }\n this.change.emit(ev);\n }\n currentOffsetAndPosition() {\n const o = this.options;\n const off = offset(this.window.nativeElement);\n return Object.assign({}, this.currentPosition(), {\n height: o.height ? o.height : off.height,\n width: o.width ? o.width : off.width\n });\n }\n currentPosition() {\n const o = this.options;\n if (!o.top || !o.left) {\n this.setPosition();\n }\n return {\n x: this.options.left,\n y: this.options.top\n };\n }\n setPosition() {\n const wrapper = positionWithScroll(this.window.nativeElement, getDocumentElement(this.window.nativeElement));\n this.options.left = wrapper.left;\n this.options.top = wrapper.top;\n }\n setRestoreOption(style, value) {\n if (isPresent(this.restoreOptions)) {\n this.restoreOptions[style] = value;\n }\n }\n get nextPossibleZIndex() {\n return newZIndex;\n }\n get nextZIndex() {\n return newZIndex++;\n }\n get windowViewPort() {\n return getWindowViewPort(this.window.nativeElement);\n }\n}\nDragResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nDragResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass ResizeHandleDirective {\n constructor(draggable, el, renderer, service) {\n this.draggable = draggable;\n this.el = el;\n this.renderer = renderer;\n this.service = service;\n this.subscriptions = new Subscription();\n }\n get hostClass() {\n return true;\n }\n ngOnInit() {\n this.setDisplay();\n this.renderer.addClass(this.el.nativeElement, 'k-resize-' + this.direction);\n this.subscriptions.add(of(this.draggable).subscribe(handle => {\n this.service.onResize(handle, this.direction);\n }));\n this.subscriptions.add(this.service.resizeStart.subscribe((dir) => {\n if (dir !== this.direction) {\n this.setDisplay('none');\n }\n }));\n this.subscriptions.add(this.service.dragStart.subscribe(() => {\n this.setDisplay('none');\n }));\n this.subscriptions.add(merge(this.service.resizeEnd, this.service.dragEnd).subscribe(() => {\n this.setDisplay('block');\n }));\n this.subscriptions.add(this.service.stateChange.subscribe((state) => {\n this.setDisplay(state === 'default' ? 'block' : 'none');\n }));\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n setDisplay(value = 'block') {\n this.renderer.setStyle(this.el.nativeElement, 'display', this.service.options.state === 'default' ? value : 'none');\n }\n}\nResizeHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHandleDirective, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService }], target: i0.ɵɵFactoryTarget.Directive });\nResizeHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizeHandleDirective, selector: \"[kendoWindowResizeHandle]\", inputs: { direction: \"direction\" }, host: { properties: { \"class.k-resize-handle\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoWindowResizeHandle]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService }]; }, propDecorators: { direction: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-resize-handle']\n }] } });\n\nclass WindowTitleBarComponent {\n constructor(el, service, ngZone) {\n this.el = el;\n this.ngZone = ngZone;\n this.service = service;\n }\n ngOnInit() {\n this.dragDirective = new DraggableDirective(this.el, this.ngZone);\n this.dragDirective.ngOnInit();\n if (this.isDraggable) {\n this.subscribeDrag();\n }\n this.subscribeStateChange();\n }\n ngOnDestroy() {\n this.dragDirective.ngOnDestroy();\n this.unsubscribeDrag();\n this.unsubscribeState();\n }\n /**\n * @hidden\n */\n subscribeDrag() {\n this.unsubscribeDrag();\n this.dragSubscription = of(this.dragDirective).subscribe(titleBar => {\n this.service.onDrag(titleBar);\n });\n }\n /**\n * @hidden\n */\n subscribeStateChange() {\n this.stateSubscription = this.service.stateChange.subscribe((state) => {\n if (this.service.options.draggable) {\n if (state === 'maximized') {\n this.unsubscribeDrag();\n }\n else {\n this.subscribeDrag();\n }\n }\n });\n }\n /**\n * @hidden\n */\n unsubscribeDrag() {\n if (this.dragSubscription) {\n this.service.dragSubscription.unsubscribe();\n this.dragSubscription.unsubscribe();\n this.dragSubscription = null;\n }\n }\n /**\n * @hidden\n */\n unsubscribeState() {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n this.stateSubscription = null;\n }\n }\n get className() {\n return true;\n }\n get touchAction() {\n if (this.isDraggable) {\n return 'none';\n }\n }\n /**\n * @hidden\n */\n handle(ev) {\n const target = ev.target;\n const state = this.service.options.state;\n if (!hasClasses(target, 'k-icon') && !isFocusable(target, false) && this.service.options.resizable) {\n if (state === 'default') {\n this.service.maximizeAction();\n }\n else if (state === 'maximized') {\n this.service.restoreAction();\n }\n }\n }\n get isDraggable() {\n const options = this.service.options;\n return options.draggable && options.state !== 'maximized';\n }\n}\nWindowTitleBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowTitleBarComponent, deps: [{ token: i0.ElementRef }, { token: DragResizeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nWindowTitleBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowTitleBarComponent, selector: \"kendo-window-titlebar\", inputs: { template: \"template\" }, host: { listeners: { \"dblclick\": \"handle($event)\" }, properties: { \"class.k-window-titlebar\": \"this.className\", \"class.k-dialog-titlebar\": \"this.className\", \"style.touch-action\": \"this.touchAction\" } }, ngImport: i0, template: `\n \n \n
\n `, isInline: true, directives: [{ type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowTitleBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-window-titlebar',\n template: `\n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragResizeService }, { type: i0.NgZone }]; }, propDecorators: { template: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: ['class.k-window-titlebar']\n }, {\n type: HostBinding,\n args: ['class.k-dialog-titlebar']\n }], touchAction: [{\n type: HostBinding,\n args: ['style.touch-action']\n }], handle: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(window, ngZone) {\n this.window = window;\n this.ngZone = ngZone;\n }\n process(ev) {\n const key = ev.keyCode;\n switch (key) {\n case Keys.up:\n case Keys.down:\n case Keys.left:\n case Keys.right: {\n ev.preventDefault();\n this.ngZone.run(() => {\n this.handleArrow(key, ev);\n });\n break;\n }\n case Keys.esc:\n this.ngZone.run(() => {\n this.handleEscape();\n });\n break;\n default:\n break;\n }\n }\n handleArrow(key, ev) {\n const options = this.window.options;\n if (ev.altKey) {\n this.handleStateChange(key, options.state);\n return;\n }\n if ((ev.ctrlKey || ev.metaKey) && options.state === 'default') {\n this.handleResize(key);\n }\n else {\n this.handleDrag(key);\n }\n }\n handleEscape() {\n this.window.closeAction();\n }\n handleDrag(key) {\n let options = this.window.options;\n if (!options.draggable) {\n return;\n }\n const offset = this.window.currentOffsetAndPosition();\n let restoreOptions = this.window.restoreOptions;\n let ev = {};\n let delta = 10;\n if (key === Keys.left || key === Keys.up) {\n delta *= -1;\n }\n switch (key) {\n case Keys.left:\n case Keys.right: {\n ev.left = offset.x + delta;\n options.left = ev.left;\n break;\n }\n case Keys.up:\n case Keys.down: {\n ev.top = offset.y + delta;\n options.top = ev.top;\n break;\n }\n default:\n break;\n }\n if (options.state === 'minimized' && isPresent(restoreOptions)) {\n restoreOptions.left = options.left;\n restoreOptions.top = options.top;\n }\n this.window.change.emit(ev);\n }\n handleResize(key) {\n const options = this.window.options;\n if (!options.resizable) {\n return;\n }\n const offset = this.window.currentOffsetAndPosition();\n let newWidth;\n let newHeight;\n let ev = {};\n let delta = 10;\n if (key === Keys.left || key === Keys.up) {\n delta *= -1;\n }\n switch (key) {\n case Keys.left:\n case Keys.right: {\n newWidth = offset.width + delta;\n if (newWidth !== options.width && newWidth >= options.minWidth) {\n ev.width = newWidth;\n }\n break;\n }\n case Keys.up:\n case Keys.down: {\n newHeight = offset.height + delta;\n if (newHeight !== options.height && newHeight >= options.minHeight) {\n ev.height = newHeight;\n }\n break;\n }\n default:\n break;\n }\n if (isPresent(ev.width) || isPresent(ev.height)) {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.window.options[style] = ev[style];\n }\n });\n this.window.change.emit(ev);\n }\n }\n handleStateChange(key, state) {\n if ((state === 'minimized' && key === Keys.up) ||\n (state === 'maximized' && key === Keys.down)) {\n this.window.restoreAction();\n return;\n }\n if (state === 'default') {\n if (key === Keys.up) {\n this.window.maximizeAction();\n }\n else if (key === Keys.down) {\n this.window.minimizeAction();\n }\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: DragResizeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DragResizeService }, { type: i0.NgZone }]; } });\n\nclass WindowMinimizeActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-minimize';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.minimizeAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'inline-flex' : 'none';\n }\n}\nWindowMinimizeActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMinimizeActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowMinimizeActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowMinimizeActionDirective, selector: \"button[kendoWindowMinimizeAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowMinimizeAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMinimizeActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowMinimizeAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowMinimizeAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowMaximizeActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-maximize';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.maximizeAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'inline-flex' : 'none';\n }\n}\nWindowMaximizeActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMaximizeActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowMaximizeActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowMaximizeActionDirective, selector: \"button[kendoWindowMaximizeAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowMaximizeAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMaximizeActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowMaximizeAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowMaximizeAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowRestoreActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-restore';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.restoreAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'none' : 'inline-flex';\n }\n}\nWindowRestoreActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowRestoreActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowRestoreActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowRestoreActionDirective, selector: \"button[kendoWindowRestoreAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowRestoreAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowRestoreActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowRestoreAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowRestoreAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowCloseActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'close';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.closeAction();\n }\n }\n}\nWindowCloseActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowCloseActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowCloseActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowCloseActionDirective, selector: \"button[kendoWindowCloseAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowCloseAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowCloseActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowCloseAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowCloseAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\n/**\n * Represents the [Kendo UI Window component for Angular]({% slug overview_window_dialogs %}).\n */\nclass WindowComponent {\n constructor(el, renderer, service, navigation, ngZone, localization) {\n this.el = el;\n this.renderer = renderer;\n this.service = service;\n this.navigation = navigation;\n this.ngZone = ngZone;\n this.localization = localization;\n /**\n * Specifies if the content of the component is persisted in the DOM when minimized.\n * @default false\n */\n this.keepContent = false;\n /**\n * Fires when the user starts to move the Window.\n */\n this.dragStart = new EventEmitter();\n /**\n * Fires when the Window was moved by the user.\n */\n this.dragEnd = new EventEmitter();\n /**\n * Fires when the user starts to resize the Window.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Fires when the Window was resized by the user.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * Fires when the user closes the Window.\n */\n this.close = new EventEmitter();\n /**\n * Fires when the `width` property of the component was updated. The event is triggered only after the resizing\n * has ended. The event data contains the new width. Allows a two-way binding of the `width` property.\n */\n this.widthChange = new EventEmitter();\n /**\n * Fires when the `height` property of the component was updated. The event is triggered only after the resizing\n * has ended. The event data contains the new height. Allows a two-way binding of the `height` property.\n */\n this.heightChange = new EventEmitter();\n /**\n * Fires when the `top` property of the component was updated. The event is triggered only after the dragging\n * and resizing have ended. The event data contains the new top offset. Allows a two-way binding of the `top` property.\n */\n this.topChange = new EventEmitter();\n /**\n * Fires when the `left` property of the component was updated. The event is triggered only after the dragging\n * and resizing have ended. The event data contains the new left offset. Allows a two-way binding of the `left` property.\n */\n this.leftChange = new EventEmitter();\n /**\n * Fires when the `state` property of the component was updated. The event data contains the new state. Allows a\n * two-way binding of the `state` property.\n */\n this.stateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.messages = {};\n this.tabIndex = 0;\n this.draged = false;\n this.resized = false;\n this.windowSubscription = new Subscription();\n this.domSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.localizationChangeSubscription = this.localization.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n this.resizeDirections = RESIZE_DIRECTIONS;\n this.subscribeEvents();\n }\n /**\n * Specifies whether the user will be able to drag the component.\n * @default true\n */\n set draggable(value) {\n this.options.draggable = value;\n }\n get draggable() {\n return this.options.draggable;\n }\n /**\n * Specifies whether the user will be able to resize the component.\n * @default true\n */\n set resizable(value) {\n this.options.resizable = value;\n }\n get resizable() {\n return this.options.resizable;\n }\n /**\n * @hidden\n */\n set cssClass(classes) {\n this.setServiceClasses(this._cssClass, classes);\n this._cssClass = classes;\n }\n get cssClass() {\n return this._cssClass;\n }\n /**\n * @hidden\n */\n set htmlAttributes(attributes) {\n setHTMLAttributes(attributes, this.renderer, this.el.nativeElement);\n const el = this.el.nativeElement;\n const dir = el.getAttribute('dir');\n const tIndex = el.getAttribute('tabindex');\n if (this.direction !== dir) {\n this.direction = dir;\n }\n if (this.tabIndex !== tIndex) {\n this.tabIndex = tIndex;\n }\n this._htmlAttributes = attributes;\n }\n get htmlAttributes() {\n return this._htmlAttributes;\n }\n /**\n * Specifies the initial state of the component.\n * If not specified, the value is set to `default`.\n *\n * The possible values are:\n * * `minimized`\n * * `maximized`\n * * `default`\n */\n set state(value) {\n this.options.state = value;\n }\n get state() {\n return this.options.state;\n }\n /**\n * Specifies the minimum width of the component.\n * The `minWidth` property has to be set in pixels.\n * @default 120\n */\n set minWidth(value) {\n this.setOption('minWidth', value);\n }\n get minWidth() {\n return this.options.minWidth;\n }\n /**\n * Specifies the minimum height of the Window.\n * The `minHeight` property has to be set in pixels.\n * @default 100\n */\n set minHeight(value) {\n this.setOption('minHeight', value);\n }\n get minHeight() {\n return this.options.minHeight;\n }\n /**\n * Specifies the width of the Window.\n * The `width` property has to be set in pixels.\n */\n set width(value) {\n this.setOption('width', value);\n }\n get width() {\n return this.options.width;\n }\n /**\n * Specifies the height of the Window.\n * The `height` property has to be set in pixels.\n */\n set height(value) {\n this.setOption('height', value);\n }\n get height() {\n return this.options.height;\n }\n /**\n * Specifies the initial top offset of the Window.\n * The `top` property has to be set in pixels.\n */\n set top(value) {\n this.setOption('top', value);\n }\n get top() {\n return this.options.top;\n }\n /**\n * Specifies the initial left offset of the Window.\n * Numeric values are treated as pixels.\n */\n set left(value) {\n this.setOption('left', value);\n }\n get left() {\n return this.options.left;\n }\n get closeButtonTitle() {\n if (this.messages && this.messages.closeTitle) {\n return this.messages.closeTitle;\n }\n return this.localization.get('closeTitle');\n }\n get restoreButtonTitle() {\n if (this.messages && this.messages.restoreTitle) {\n return this.messages.restoreTitle;\n }\n return this.localization.get('restoreTitle');\n }\n get maximizeButtonTitle() {\n if (this.messages && this.messages.maximizeTitle) {\n return this.messages.maximizeTitle;\n }\n return this.localization.get('maximizeTitle');\n }\n get minimizeButtonTitle() {\n if (this.messages && this.messages.minimizeTitle) {\n return this.messages.minimizeTitle;\n }\n return this.localization.get('minimizeTitle');\n }\n get hostClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n ngAfterViewInit() {\n this.setNextZIndex();\n this.handleInitialFocus();\n this.ngZone.runOutsideAngular(() => Promise.resolve(null).then(() => this.setInitialOffset()));\n this.initDomEvents();\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.el.nativeElement, 'title');\n this.service.init(this.el);\n }\n ngOnChanges(changes) {\n OFFSET_STYLES.forEach((style) => {\n if (isChanged(style, changes)) {\n this.setStyle(style, this.options[style]);\n }\n });\n if (isChanged('draggable', changes)) {\n const titleBar = isPresent(this.titleBarContent) ? this.titleBarContent : this.titleBarView;\n if (isTruthy(changes.draggable.currentValue)) {\n titleBar.subscribeDrag();\n }\n else {\n titleBar.unsubscribeDrag();\n }\n }\n if (isChanged('state', changes)) {\n if (isPresent(this.service.lastAction)) {\n this.service.lastAction = null;\n }\n else {\n this.service.applyManualState();\n this.updateAllOffset();\n }\n }\n }\n ngOnDestroy() {\n if (this.windowSubscription) {\n this.windowSubscription.unsubscribe();\n }\n if (this.domSubs) {\n this.domSubs.unsubscribe();\n }\n this.localizationChangeSubscription.unsubscribe();\n }\n /**\n * Focuses the wrapper of the Window component.\n */\n focus() {\n const wrapper = this.el.nativeElement;\n if (isPresent(wrapper)) {\n wrapper.focus();\n }\n }\n /**\n * Brings the current Window component on top of other Window components on the page.\n */\n bringToFront() {\n this.setNextZIndex();\n }\n /**\n * Manually updates the `width` or `height` option of the Window.\n * The required style will be applied to the Window wrapper element and the\n * corresponding property of the component instance will be updated.\n * This method is intended to be used for sizing dynamically created components using the\n * [`WindowService`]({% slug api_dialog_windowservice %})\n * @param {WindowDimensionSetting} dimension - The option that will be updated\n * @param {number} value - The value set in pixels\n */\n setDimension(dimension, value) {\n this.setOption(dimension, value);\n this.setStyle(dimension, value);\n }\n /**\n * Manually updates the `top` or `left` offset of the Window.\n * The required style will be applied to the Window wrapper element and the\n * corresponding property of the component instance will be updated.\n * This method is intended to be used for positioning dynamically created components using the\n * [`WindowService`]({% slug api_dialog_windowservice %})\n * @param {WindowOffsetSetting} offset - The option that will be updated\n * @param {number} value - The value set in pixels\n */\n setOffset(offset, value) {\n this.setOption(offset, value);\n this.setStyle(offset, value);\n }\n get showDefaultTitleBar() {\n return !isPresent(this.titleBarContent);\n }\n get styleMinWidth() {\n return this.minWidth + 'px';\n }\n get styleMinHeight() {\n return this.minHeight + 'px';\n }\n get stylePosition() {\n return this.options.position;\n }\n get wrapperMaximizedClass() {\n return this.state === 'maximized';\n }\n get wrapperMinimizedClass() {\n return this.state === 'minimized';\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.renderer.addClass(this.el.nativeElement, 'k-focus');\n this.setNextZIndex();\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.renderer.removeClass(this.el.nativeElement, 'k-focus');\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.windowSubscription.add(this.service.focus.subscribe(() => {\n this.el.nativeElement.focus();\n }));\n this.windowSubscription.add(this.service.dragStart.subscribe(() => {\n this.draged = true;\n this.ngZone.run(() => {\n this.dragStart.emit();\n });\n }));\n this.windowSubscription.add(this.service.dragEnd.subscribe(() => {\n if (this.draged) {\n this.draged = false;\n this.ngZone.run(() => {\n this.dragEnd.emit();\n });\n }\n }));\n this.windowSubscription.add(this.service.close.subscribe(() => {\n this.close.emit();\n }));\n this.windowSubscription.add(this.service.resizeStart.subscribe(() => {\n this.resized = true;\n this.ngZone.run(() => {\n this.resizeStart.emit();\n });\n }));\n this.windowSubscription.add(this.service.resizeEnd.subscribe(() => {\n if (this.resized) {\n this.resized = false;\n this.ngZone.run(() => {\n this.resizeEnd.emit();\n });\n }\n }));\n this.windowSubscription.add(this.service.change.subscribe((ev) => {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.setStyle(style, ev[style]);\n if (this.state !== 'maximized') {\n const emitter = this[style + 'Change'];\n if (emitter.observers.length) {\n this.ngZone.run(() => {\n emitter.emit(ev[style]);\n });\n }\n }\n }\n });\n }));\n this.windowSubscription.add(this.service.stateChange.subscribe((state) => {\n if (isPresent(this.service.lastAction)) {\n this.updateAllOffset();\n this.stateChange.emit(state);\n }\n }));\n }\n initDomEvents() {\n if (!this.el) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubs.add(this.renderer.listen(this.el.nativeElement, 'keydown', (ev) => {\n this.onKeyDown(ev);\n }));\n });\n }\n onKeyDown(event) {\n if (hasClasses(event.target, WINDOW_CLASSES)) {\n this.navigation.process(event);\n }\n }\n setServiceClasses(prevValue, value) {\n const el = this.el.nativeElement;\n if (prevValue) {\n parseCSSClassNames(prevValue).forEach(className => {\n this.renderer.removeClass(el, className);\n });\n }\n if (value) {\n parseCSSClassNames(value).forEach(className => {\n this.renderer.addClass(el, className);\n });\n }\n }\n setNextZIndex() {\n const currentZIndex = this.el.nativeElement.style['z-index'];\n const nextPossibleZIndex = this.service.nextPossibleZIndex;\n if (!currentZIndex || (nextPossibleZIndex - currentZIndex > 1)) {\n this.renderer.setStyle(this.el.nativeElement, \"z-index\", this.service.nextZIndex);\n }\n }\n setInitialOffset() {\n if (this.state !== 'maximized') {\n this.updateAllOffset();\n if (!isPresent(this.left) || !isPresent(this.top)) {\n this.service.center();\n }\n }\n else {\n const viewPort = this.service.windowViewPort;\n this.setStyle('width', viewPort.width);\n this.setStyle('height', viewPort.height);\n this.setStyle('top', 0);\n this.setStyle('left', 0);\n }\n }\n updateAllOffset() {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(this[style])) {\n this.setStyle(style, this[style]);\n }\n else {\n this.removeStyle(style);\n }\n });\n }\n setStyle(style, value) {\n this.renderer.setStyle(this.el.nativeElement, style, value + 'px');\n }\n removeStyle(style) {\n this.renderer.removeStyle(this.el.nativeElement, style);\n }\n get options() {\n return this.service.options;\n }\n setOption(style, value) {\n if (typeof value !== 'number' && typeof value !== 'string') {\n return;\n }\n const parsedValue = (typeof value === 'number') ? value : parseInt(value, 10);\n this.options[style] = parsedValue;\n this.service.setRestoreOption(style, parsedValue);\n }\n handleInitialFocus() {\n const wrapper = this.el.nativeElement;\n if (this.autoFocusedElement) {\n const initiallyFocusedElement = wrapper.querySelector(this.autoFocusedElement);\n if (initiallyFocusedElement) {\n initiallyFocusedElement.focus();\n }\n }\n else {\n this.focus();\n }\n }\n}\nWindowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nWindowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowComponent, selector: \"kendo-window\", inputs: { autoFocusedElement: \"autoFocusedElement\", title: \"title\", draggable: \"draggable\", resizable: \"resizable\", keepContent: \"keepContent\", state: \"state\", minWidth: \"minWidth\", minHeight: \"minHeight\", width: \"width\", height: \"height\", top: \"top\", left: \"left\" }, outputs: { dragStart: \"dragStart\", dragEnd: \"dragEnd\", resizeStart: \"resizeStart\", resizeEnd: \"resizeEnd\", close: \"close\", widthChange: \"widthChange\", heightChange: \"heightChange\", topChange: \"topChange\", leftChange: \"leftChange\", stateChange: \"stateChange\" }, host: { listeners: { \"focus\": \"onComponentFocus()\", \"blur\": \"onComponentBlur()\" }, properties: { \"attr.tabIndex\": \"this.tabIndex\", \"class.k-window\": \"this.hostClasses\", \"attr.dir\": \"this.dir\", \"style.minWidth\": \"this.styleMinWidth\", \"style.minHeight\": \"this.styleMinHeight\", \"style.position\": \"this.stylePosition\", \"class.k-window-maximized\": \"this.wrapperMaximizedClass\", \"class.k-window-minimized\": \"this.wrapperMinimizedClass\" } }, providers: [\n DragResizeService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.window'\n }\n ], queries: [{ propertyName: \"titleBarContent\", first: true, predicate: WindowTitleBarComponent, descendants: true }], viewQueries: [{ propertyName: \"titleBarView\", first: true, predicate: WindowTitleBarComponent, descendants: true }, { propertyName: \"resizeHandles\", predicate: ResizeHandleDirective, descendants: true }], exportAs: [\"kendoWindow\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n
{{ title }}
\n
\n \n \n \n \n
\n
\n \n\n
\n \n \n
\n\n \n
\n
\n
\n `, isInline: true, components: [{ type: WindowTitleBarComponent, selector: \"kendo-window-titlebar\", inputs: [\"template\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }, { type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: WindowMinimizeActionDirective, selector: \"button[kendoWindowMinimizeAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowMinimizeAction\"] }, { type: WindowMaximizeActionDirective, selector: \"button[kendoWindowMaximizeAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowMaximizeAction\"] }, { type: WindowRestoreActionDirective, selector: \"button[kendoWindowRestoreAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowRestoreAction\"] }, { type: WindowCloseActionDirective, selector: \"button[kendoWindowCloseAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowCloseAction\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: ResizeHandleDirective, selector: \"[kendoWindowResizeHandle]\", inputs: [\"direction\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoWindow',\n providers: [\n DragResizeService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.window'\n }\n ],\n selector: 'kendo-window',\n template: `\n \n \n\n \n
{{ title }}
\n
\n \n \n \n \n
\n
\n \n\n
\n \n \n
\n\n \n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService }, { type: NavigationService }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { autoFocusedElement: [{\n type: Input\n }], title: [{\n type: Input\n }], draggable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], keepContent: [{\n type: Input\n }], state: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], top: [{\n type: Input\n }], left: [{\n type: Input\n }], dragStart: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], resizeStart: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }], close: [{\n type: Output\n }], widthChange: [{\n type: Output\n }], heightChange: [{\n type: Output\n }], topChange: [{\n type: Output\n }], leftChange: [{\n type: Output\n }], stateChange: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-window']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], titleBarView: [{\n type: ViewChild,\n args: [WindowTitleBarComponent, { static: false }]\n }], titleBarContent: [{\n type: ContentChild,\n args: [WindowTitleBarComponent, { static: false }]\n }], resizeHandles: [{\n type: ViewChildren,\n args: [ResizeHandleDirective]\n }], styleMinWidth: [{\n type: HostBinding,\n args: ['style.minWidth']\n }], styleMinHeight: [{\n type: HostBinding,\n args: ['style.minHeight']\n }], stylePosition: [{\n type: HostBinding,\n args: ['style.position']\n }], wrapperMaximizedClass: [{\n type: HostBinding,\n args: ['class.k-window-maximized']\n }], wrapperMinimizedClass: [{\n type: HostBinding,\n args: ['class.k-window-minimized']\n }], onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }] } });\n\n/**\n * Indicates that the **Close** button of a Window that is opened through `WindowService` is clicked.\n */\nclass WindowCloseResult {\n}\n\n/**\n * Holds references to the object instance of the Window.\n * Controls the Windows that were opened through `WindowService`\n * ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n */\nclass WindowRef {\n}\n\n/**\n * The settings for the Window actions when the Window is opened through `WindowService`\n * ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n */\nclass WindowSettings {\n}\n\n/**\n * @hidden\n */\nclass WindowContainerService {\n set container(container) {\n WindowContainerService.container = container;\n }\n get container() {\n return WindowContainerService.container;\n }\n}\nWindowContainerService.container = null;\nWindowContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nWindowContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService, decorators: [{\n type: Injectable\n }] });\n\nconst isNotComponent = (component) => isString(component) || component instanceof TemplateRef;\nclass WindowInjector {\n constructor(getWindowRef, parentInjector) {\n this.getWindowRef = getWindowRef;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue) {\n if (token === WindowRef) {\n return this.getWindowRef();\n }\n return this.parentInjector.get(token, notFoundValue);\n }\n}\n/**\n * A service for opening Windows dynamically\n * ([see example]({% slug service_window %})).\n */\nclass WindowService {\n constructor(\n /**\n * @hidden\n */\n resolver, containerService) {\n this.resolver = resolver;\n this.containerService = containerService;\n }\n /**\n * Opens a Window component.\n *\n * @param {WindowSettings} settings - The settings that define the Window.\n * @returns {WindowRef} - A reference to the Window object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n *
\n * `\n * })\n * export class AppComponent {\n * constructor( private windowService: WindowService ) {}\n *\n * public open() {\n * var window = this.windowService.open({\n * title: \"My window\",\n * content: \"My content!\"\n * });\n *\n * window.result.subscribe((result) => {\n * if (result instanceof WindowCloseResult) {\n * console.log(\"Window was closed\");\n * }\n * });\n * }\n * }\n * ```\n *\n */\n open(settings) {\n const factory = this.resolver.resolveComponentFactory(WindowComponent);\n const container = settings.appendTo || this.containerService.container;\n if (!container) {\n throw new Error(`Cannot attach window to the page.\n Add an element that uses the kendoWindowContainer directive, or set the 'appendTo' property.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/window/service/\n `);\n }\n const windowRef = {\n close: () => { },\n content: null,\n result: null,\n window: null\n };\n const content = this.contentFrom(settings.content, container, windowRef);\n const window = container.createComponent(factory, undefined, undefined, content.nodes);\n windowRef.window = window;\n this.applyOptions(window.instance, settings);\n const apiClose = new Subject();\n const close = (e) => {\n apiClose.next(e || new WindowCloseResult());\n if (content.componentRef) {\n content.componentRef.destroy();\n }\n window.destroy();\n };\n const result = merge(apiClose, window.instance.close.pipe(map(e => (e ? e : new WindowCloseResult())), filter((e) => {\n if (settings.preventClose) {\n // add windowRef only when using component\n const windowRefParameter = isNotComponent(settings.content) ? undefined : windowRef;\n return !settings.preventClose(e, windowRefParameter);\n }\n return true;\n }))).pipe(take(1), \n // Takes care for multiple subscriptions:\n // We subscribe internally and the user may subscribe to get a close result - window.result.subscribe().\n // This causes multiple subscriptions to the same source and thus multiple emissions. share() solves that.\n share());\n result.subscribe(close);\n windowRef.close = close;\n windowRef.result = result;\n window.changeDetectorRef.markForCheck();\n return windowRef;\n }\n applyOptions(instance, options) {\n if (isPresent(options.htmlAttributes)) {\n instance.htmlAttributes = options.htmlAttributes;\n }\n if (isPresent(options.cssClass)) {\n instance.cssClass = options.cssClass;\n }\n if (isPresent(options.title)) {\n instance.title = options.title;\n }\n if (isPresent(options.keepContent)) {\n instance.keepContent = options.keepContent;\n }\n if (isPresent(options.width)) {\n instance.width = options.width;\n }\n if (isPresent(options.minWidth)) {\n instance.minWidth = options.minWidth;\n }\n if (isPresent(options.height)) {\n instance.height = options.height;\n }\n if (isPresent(options.minHeight)) {\n instance.minHeight = options.minHeight;\n }\n if (isPresent(options.left)) {\n instance.left = options.left;\n }\n if (isPresent(options.top)) {\n instance.top = options.top;\n }\n if (isPresent(options.draggable)) {\n instance.draggable = options.draggable;\n }\n if (isPresent(options.resizable)) {\n instance.resizable = options.resizable;\n }\n if (isPresent(options.messages && options.messages.closeTitle)) {\n instance.messages.closeTitle = options.messages.closeTitle;\n }\n if (isPresent(options.messages && options.messages.restoreTitle)) {\n instance.messages.restoreTitle = options.messages.restoreTitle;\n }\n if (isPresent(options.messages && options.messages.maximizeTitle)) {\n instance.messages.maximizeTitle = options.messages.maximizeTitle;\n }\n if (isPresent(options.messages && options.messages.minimizeTitle)) {\n instance.messages.minimizeTitle = options.messages.minimizeTitle;\n }\n if (isPresent(options.autoFocusedElement)) {\n instance.autoFocusedElement = options.autoFocusedElement;\n }\n if (isPresent(options.state)) {\n instance.state = options.state;\n if (options.state === 'minimized') {\n instance.keepContent = true;\n }\n }\n if (options.content instanceof TemplateRef) {\n instance.contentTemplate = options.content;\n }\n if (options.titleBarContent instanceof TemplateRef) {\n instance.titleBarTemplate = options.titleBarContent;\n }\n }\n contentFrom(content, container, windowRef) {\n const renderer = container.injector.get(Renderer2);\n let nodes = [];\n let componentRef = null;\n if (typeof content === 'string') {\n nodes = [renderer.createText(content)];\n }\n else if (content && !(content instanceof TemplateRef)) {\n const injector = new WindowInjector(() => windowRef, container.injector);\n const factory = this.resolver.resolveComponentFactory(content);\n componentRef = container.createComponent(factory, undefined, injector);\n nodes = [componentRef.location.nativeElement];\n windowRef.content = componentRef;\n }\n return {\n componentRef,\n nodes: [\n [],\n nodes // Content\n ]\n };\n }\n}\nWindowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService, deps: [{ token: i0.ComponentFactoryResolver }, { token: WindowContainerService }], target: i0.ɵɵFactoryTarget.Injectable });\nWindowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: WindowContainerService, decorators: [{\n type: Inject,\n args: [WindowContainerService]\n }] }]; } });\n\n/**\n * Provides an insertion point for the Dialogs which are created through the\n * Dialog service ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n * Created Dialogs will be mounted after that element.\n *\n * @example\n * ```html-no-run\n *
\n * ```\n */\nclass DialogContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n}\nDialogContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerDirective, deps: [{ token: i0.ViewContainerRef }, { token: DialogContainerService }], target: i0.ɵɵFactoryTarget.Directive });\nDialogContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogContainerDirective, selector: \"[kendoDialogContainer]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDialogContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: DialogContainerService }]; } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_dialogs %}#toc-localization)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nCustomMessagesComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-dialog-messages, kendo-window-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-dialog-messages, kendo-window-messages'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective], imports: [CommonModule], exports: [DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective, CommonModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule], CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES, CommonModule],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst DIALOG_DIRECTIVES = [\n DialogComponent,\n DialogTitleBarComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dialog component that includes all Dialog components and directives.\n * Imports `DialogModule` into the [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * of your application or into any other sub-module that will use the Dialog component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { DialogModule } from '@progress/kendo-angular-dialog';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, DialogModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass DialogModule {\n}\nDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, declarations: [DialogComponent,\n DialogTitleBarComponent, DialogContainerDirective], imports: [SharedModule], exports: [DialogComponent,\n DialogTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, DialogContainerDirective] });\nDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, providers: [DialogContainerService, DialogService], imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DIALOG_DIRECTIVES, DialogContainerDirective],\n entryComponents: [DIALOG_DIRECTIVES],\n exports: [DIALOG_DIRECTIVES, SHARED_DIRECTIVES, DialogContainerDirective],\n imports: [SharedModule],\n providers: [DialogContainerService, DialogService]\n }]\n }] });\n\n/**\n * Provides an insertion point for the Windows which are created through the\n * Window service ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n * Created Windows will be mounted after that element.\n *\n * @example\n * ```html-no-run\n *
\n * ```\n */\nclass WindowContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n}\nWindowContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerDirective, deps: [{ token: i0.ViewContainerRef }, { token: WindowContainerService }], target: i0.ɵɵFactoryTarget.Directive });\nWindowContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowContainerDirective, selector: \"[kendoWindowContainer]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoWindowContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: WindowContainerService }]; } });\n\nconst WINDOW_DIRECTIVES = [\n ResizeHandleDirective,\n WindowComponent,\n WindowTitleBarComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective\n];\nconst ENTRY_COMPONENTS = [\n WindowComponent,\n WindowTitleBarComponent\n];\nconst exportedModules = [\n WindowComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective,\n WindowTitleBarComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Window component. Imports `WindowModule` into the\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * of your application or into any other sub-module that will use the Window component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { WindowModule } from '@progress/kendo-angular-window';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, WindowModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass WindowModule {\n}\nWindowModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nWindowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, declarations: [ResizeHandleDirective,\n WindowComponent,\n WindowTitleBarComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective, WindowContainerDirective], imports: [SharedModule, DraggableModule], exports: [WindowComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective,\n WindowTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, WindowContainerDirective] });\nWindowModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, providers: [WindowContainerService, WindowService], imports: [[SharedModule, DraggableModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [WINDOW_DIRECTIVES, WindowContainerDirective],\n entryComponents: [ENTRY_COMPONENTS],\n exports: [exportedModules, SHARED_DIRECTIVES, WindowContainerDirective],\n imports: [SharedModule, DraggableModule],\n providers: [WindowContainerService, WindowService]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dialogs components.\n *\n * @example\n *\n * ```ts-no-run\n * import { DialogsModule } from '@progress/kendo-angular-dialog';\n *\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { NgModule } from '@angular/core';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, DialogsModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DialogsModule {\n}\nDialogsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDialogsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, exports: [DialogModule, WindowModule] });\nDialogsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, imports: [DialogModule, WindowModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [DialogModule, WindowModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, DialogAction, DialogActionsComponent, DialogCloseResult, DialogComponent, DialogContainerDirective, DialogContentBase, DialogModule, DialogRef, DialogService, DialogSettings, DialogTitleBarComponent, DialogsModule, LocalizedMessagesDirective, Messages, PreventableEvent, WindowCloseActionDirective, WindowCloseResult, WindowComponent, WindowContainerDirective, WindowMaximizeActionDirective, WindowMinimizeActionDirective, WindowModule, WindowRef, WindowRestoreActionDirective, WindowService, WindowSettings, WindowTitleBarComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, Input, Output, ViewChild, HostBinding, Directive, Injectable, InjectionToken, HostListener, ViewChildren, forwardRef, isDevMode, ViewContainerRef, Optional, Inject, ContentChild, ContentChildren, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i9 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid as guid$1, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';\nimport * as i8 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter as getter$1, pointers, touchEnabled } from '@progress/kendo-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { merge, fromEvent, Subject, Subscription, of, interval } from 'rxjs';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nexport { PopupComponent } from '@progress/kendo-angular-popup';\nimport { map, switchMap, take, auditTime, tap, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil } from 'rxjs/operators';\nimport * as i11 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@progress/kendo-angular-treeview';\nimport { DataBoundComponent, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, ExpandDirective, TreeViewModule } from '@progress/kendo-angular-treeview';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dropdowns',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652188959,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isNumber = (value) => !isNaN(value);\n/**\n * @hidden\n */\nconst guid = () => {\n let id = \"\";\n let i;\n let random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n/**\n * @hidden\n */\nconst combineStr = (begin, end) => {\n return begin.concat(end.substr(end.toLowerCase().indexOf(begin.toLowerCase()) + begin.length));\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => typeof window !== 'undefined';\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isObject = (value) => isPresent(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isEmptyString = (value) => typeof value === 'string' && value.length === 0;\n/**\n * @hidden\n */\nconst resolveValuesInArray = (values, data = [], valueField) => values\n .map(value => {\n return data.find(item => getter(item, valueField) === value);\n})\n .filter(value => value !== undefined);\n/**\n * @hidden\n */\nconst validateComplexValues = (values, valueField) => isArray(values) && values.filter(item => {\n return isObject(item) && isPresent(getter(item, valueField));\n});\n/**\n * @hidden\n */\nconst resolveAllValues = (value, data, valueField) => {\n const customValues = validateComplexValues(value, valueField) || [];\n const resolvedValues = resolveValuesInArray(value, data, valueField) || [];\n return resolvedValues.concat(customValues);\n};\n/**\n * @hidden\n */\nconst isObjectArray = (values) => {\n return isArray(values) && values.every(item => isObject(item));\n};\n/**\n * @hidden\n */\nconst selectedIndices = (values, data, valueField) => {\n const extractedValues = data.map(item => {\n return isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n });\n return values.reduce((arr, item) => {\n const value = isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n const index = extractedValues.indexOf(value);\n if (index !== -1) {\n arr.push(index);\n }\n return arr;\n }, []);\n};\n/**\n * @hidden\n */\nconst getter = (dataItem, field) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n if (!isPresent(field) || !isObject(dataItem)) {\n return dataItem;\n }\n // creates a field accessor supporting nested fields processing\n const valueFrom = getter$1(field);\n return valueFrom(dataItem);\n};\n/**\n * @hidden\n */\nconst resolveValue = (args) => {\n let dataItem;\n if (isPresent(args.value)) {\n const data = [args.defaultItem, ...args.data];\n dataItem = data.find(element => getter(element, args.valueField) === args.value);\n return {\n dataItem: dataItem,\n focused: args.data.indexOf(dataItem),\n selected: args.data.indexOf(dataItem)\n };\n }\n else if (args.index) {\n dataItem = args.data[args.index];\n return {\n dataItem: args.data[args.index],\n focused: args.index,\n selected: args.index\n };\n }\n return {\n dataItem: args.defaultItem,\n focused: -1,\n selected: -1\n };\n};\n/**\n * @hidden\n */\nconst sameCharsOnly = (word, character) => {\n for (let idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nconst shuffleData = (data, splitIndex, defaultItem) => {\n let result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nconst matchText = (text, word, ignoreCase) => {\n if (!isPresent(text)) {\n return false;\n }\n let temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nconst elementFromPoint = (x, y) => {\n if (!isDocumentAvailable()) {\n return;\n }\n return document.elementFromPoint(x, y);\n};\n/**\n * @hidden\n *\n * Checks whether the passed object has all of the listed properties.\n */\nconst hasProps = (obj, props) => {\n if (!isPresent(obj)) {\n return false;\n }\n return props.every(prop => obj.hasOwnProperty(prop));\n};\n/**\n * @hidden\n *\n * Checks whether an element is untouched by looking for the ng-untouched css class\n */\nconst isUntouched = (element) => element.className.includes('ng-untouched');\n/**\n * @hidden\n */\nconst noop = (_) => { };\n/**\n * IE element `matches` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\nconst matches = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n *\n * IE element `closest` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n */\nconst closest = (element, selector) => {\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (matches(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n *\n * Parses a provided value to its type 'number' representation.\n * If the parsed value (via Number(value)) is NaN, the provided default value is returned.\n * Uses 0 as default value if a second param is not provided.\n */\nconst parseNumber = (num, defaultValue = 0) => {\n const normalizedValue = Number(num);\n return isNaN(normalizedValue) ? defaultValue : normalizedValue;\n};\n/**\n * @hidden\n *\n * Checks whether the passed target element is inside the provided host or popupRef.\n */\nconst inDropDown = (host, target, popupRef) => {\n return host.nativeElement.contains(target) || (popupRef && popupRef.popupElement.contains(target));\n};\n/**\n * @hidden\n *\n * Calculates the hierarchical level of an item, based on the provided index.\n * The result level is zero-based (starts from 0).\n */\nconst getHierarchicalItemLevel = (index) => {\n return (index || '').split('_').length - 1;\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchDescendentNodes = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(descendent => filterExpression(descendent.item));\n }\n descendants.forEach(child => descendants = descendants.concat(fetchDescendentNodes(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Retrieves the correct value based on the item's level and the provided value field/s.\n * Used in the MultiSelectTree component.\n */\nconst valueFrom = ({ dataItem, index, level }, valueField) => {\n const fields = Array.isArray(valueField) ? valueField : [valueField];\n // either use the explicitly provided value level, or infer it from the item index\n const valueLevel = isPresent(level) ? level : getHierarchicalItemLevel(index);\n // fall-back to the last available one, if the current node is in a deeper level\n const normalizedLevel = Math.min(valueLevel, fields.length - 1);\n const field = fields[normalizedLevel];\n return getter$1(field)(dataItem);\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n/**\n * @hidden\n * Returns the rounded class based on the rounded input.\n */\nconst getRoundedClass = (rounded) => {\n const ROUNDED_CLASSES = {\n 'small': 'k-rounded-sm',\n 'medium': 'k-rounded-md',\n 'large': 'k-rounded-lg',\n 'full': 'k-rounded-full'\n };\n return ROUNDED_CLASSES[rounded];\n};\n/**\n * @hidden\n * Return the fillMode class based on the component and fillMode input.\n */\nconst getFillModeClass = (component, fillMode) => {\n const FILLMODE_CLASSES = {\n 'solid': `k-${component}-solid`,\n 'flat': `k-${component}-flat`,\n 'outline': `k-${component}-outline`\n };\n return FILLMODE_CLASSES[fillMode];\n};\n\n/**\n * @hidden\n */\nclass SearchBarComponent {\n constructor(localization, renderer) {\n this.localization = localization;\n this.valueChange = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onNavigate = new EventEmitter();\n this.searchBarClass = true;\n this._userInput = \"\";\n this._previousValue = \"\";\n this._placeholder = \"\";\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer = renderer;\n }\n get userInput() {\n return this._userInput;\n }\n set userInput(userInput) {\n this._userInput = userInput || \"\";\n }\n get value() {\n return this.input.nativeElement.value;\n }\n set placeholder(text) {\n this._placeholder = text || '';\n this.setInputSize();\n }\n get placeholder() {\n return this._placeholder;\n }\n get ariaExpanded() {\n return this.role === 'combobox' ? this.popupOpen : null;\n }\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnChanges(changes) {\n let previousUserInput;\n if (this.input && (changes.userInput || changes.suggestedText)) {\n if (changes.userInput && changes.userInput.previousValue) {\n if (this._previousValue === changes.userInput.previousValue) {\n previousUserInput = this._previousValue;\n }\n else {\n previousUserInput = changes.userInput.currentValue || \"\";\n }\n }\n else {\n previousUserInput = this._previousValue;\n }\n const caretIndex = this.input.nativeElement.selectionStart;\n const caretAtEnd = previousUserInput.length === caretIndex;\n this.writeInputValue(this.suggestedText ? combineStr(this.userInput, this.suggestedText) : this.userInput);\n if (this.suggestedText) {\n this.setInputSelection(this.userInput.length, this.suggestedText.length);\n }\n else if (caretAtEnd) {\n this.setInputSelection(this.userInput.length, this.userInput.length);\n }\n else {\n this.setInputSelection(caretIndex, caretIndex);\n }\n this._previousValue = this.userInput;\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n writeInputValue(text) {\n if (isDocumentAvailable()) {\n this.renderer.setProperty(this.input.nativeElement, 'value', text);\n }\n }\n setInputSelection(start, end) {\n if (isDocumentAvailable() && this.input.nativeElement === document.activeElement) {\n try {\n this.input.nativeElement.setSelectionRange(start, end);\n }\n catch (e) {\n //Make sure that the element is in the DOM before you invoke its methods\n }\n }\n }\n handleInput(event) {\n const value = event.target.value;\n if (value !== this.userInput) {\n this._previousValue = value;\n this.valueChange.emit(value);\n }\n }\n handleFocus(event) {\n this.onFocus.emit(event);\n }\n handleBlur(event) {\n this.onBlur.emit(event);\n }\n handleKeydown(event) {\n const keyCode = event.keyCode;\n const keys = [Keys.ArrowUp, Keys.ArrowDown, Keys.ArrowLeft, Keys.ArrowRight, Keys.Enter,\n Keys.Escape, Keys.Delete, Keys.Backspace, Keys.Home, Keys.End];\n if (keys.indexOf(keyCode) > -1) {\n this.onNavigate.emit(event);\n }\n }\n focus() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.focus();\n }\n }\n blur() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.blur();\n }\n }\n setInputSize() {\n const lengthOf = x => x ? x.length : 0;\n const input = this.input.nativeElement;\n const placeholderLength = lengthOf(this.placeholder);\n const textLength = lengthOf(this.value);\n const size = Math.max(placeholderLength, textLength, 1);\n this.renderer.setAttribute(input, 'size', size.toString());\n }\n}\nSearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: { id: \"id\", listId: \"listId\", tagListId: \"tagListId\", activeDescendant: \"activeDescendant\", noDataLabel: \"noDataLabel\", disabled: \"disabled\", readonly: \"readonly\", tabIndex: \"tabIndex\", popupOpen: \"popupOpen\", role: \"role\", userInput: \"userInput\", suggestedText: \"suggestedText\", placeholder: \"placeholder\" }, outputs: { valueChange: \"valueChange\", onBlur: \"onBlur\", onFocus: \"onFocus\", onClick: \"onClick\", onNavigate: \"onNavigate\" }, host: { properties: { \"class.k-searchbar\": \"this.searchBarClass\" } }, viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SearchBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-searchbar',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }]; }, propDecorators: { id: [{\n type: Input\n }], listId: [{\n type: Input\n }], tagListId: [{\n type: Input\n }], activeDescendant: [{\n type: Input\n }], noDataLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], popupOpen: [{\n type: Input\n }], role: [{\n type: Input\n }], userInput: [{\n type: Input\n }], suggestedText: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onNavigate: [{\n type: Output\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], searchBarClass: [{\n type: HostBinding,\n args: ['class.k-searchbar']\n }], placeholder: [{\n type: Input\n }] } });\n\n/**\n * Renders the list item content. To define the item template, nest an `` tag\n * with the `kendoItemTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * - [Using `ItemTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-item-template)\n * - [Using `ItemTemplate` with the ComboBox]({% slug templates_combobox %}#toc-item-template)\n * - [Using `ItemTemplate` with the DropDownList]({% slug templates_ddl %}#toc-item-template)\n * - [Using `ItemTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-item-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ItemTemplateDirective, selector: \"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the header content of the list. To define the header template, nest an `` tag\n * with the `kendoHeaderTemplate` directive inside the component tag.\n *\n * - [Using `HeaderTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-header-template)\n * - [Using `HeaderTemplate` with the ComboBox]({% slug templates_combobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownList]({% slug templates_ddl %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-header-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Header template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTemplateDirective, selector: \"[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the footer content of the list. To define the footer template, nest an `` tag\n * with the `kendoFooterTemplate` directive inside the component tag.\n *\n * - [Using `FooterTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-footer-template)\n * - [Using `FooterTemplate` with the ComboBox]({% slug templates_combobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownList]({% slug templates_ddl %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-footer-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Footer template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterTemplateDirective, selector: \"[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the group header content. To define the group template, nest an `` tag\n * with the `kendoGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `GroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-group-template)\n * - [Using `GroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-group-template)\n * - [Using `GroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-group-template)\n * - [Using `GroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-group-template)\n * - [Using `GroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-group-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nclass GroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nGroupTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupTemplateDirective, selector: \"[kendoDropDownListGroupTemplate],[kendoComboBoxGroupTemplate],[kendoMultiColumnComboBoxGroupTemplate],[kendoAutoCompleteGroupTemplate],[kendoMultiSelectGroupTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListGroupTemplate],[kendoComboBoxGroupTemplate],[kendoMultiColumnComboBoxGroupTemplate],[kendoAutoCompleteGroupTemplate],[kendoMultiSelectGroupTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the fixed group header content. To define the fixed group template, nest an `` tag\n * with the `kendoFixedGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `FixedGroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-fixed-group-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nclass FixedGroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFixedGroupTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FixedGroupTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFixedGroupTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FixedGroupTemplateDirective, selector: \"[kendoDropDownListFixedGroupTemplate],[kendoComboBoxFixedGroupTemplate],[kendoMultiColumnComboBoxFixedGroupTemplate],[kendoAutoCompleteFixedGroupTemplate],[kendoMultiSelectFixedGroupTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FixedGroupTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFixedGroupTemplate],[kendoComboBoxFixedGroupTemplate],[kendoMultiColumnComboBoxFixedGroupTemplate],[kendoAutoCompleteFixedGroupTemplate],[kendoMultiSelectFixedGroupTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor() {\n this.onSelect = new EventEmitter();\n this.onChange = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.total = 0;\n this.selectedIndices = [];\n }\n getTotal() {\n return this.total;\n }\n isSelected(index) {\n return isPresent(this.selectedIndices.find(current => current === index));\n }\n isFocused(index) {\n return index === this.focused;\n }\n focus(index) {\n if (this.isFocused(index)) {\n return;\n }\n this.focused = index;\n this.onFocus.emit(index);\n }\n select(index) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices = [index];\n this.focused = index;\n this.onSelect.emit({\n indices: [index],\n newSelection: isPresent(index)\n });\n }\n add(index) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices.push(index);\n this.focused = index;\n this.onChange.emit({\n added: index,\n indices: this.selectedIndices.slice()\n });\n }\n unselect(index) {\n if (!this.isSelected(index)) {\n return;\n }\n const position = this.selectedIndices.indexOf(index);\n this.selectedIndices.splice(position, 1);\n this.focused = index;\n this.onChange.emit({\n indices: this.selectedIndices.slice(),\n removed: index\n });\n }\n change(index) {\n const newSelection = isPresent(index) && !this.isSelected(index);\n this.selectedIndices = [index];\n this.focused = index;\n this.onChange.emit({\n indices: [index],\n newSelection: newSelection\n });\n }\n resetSelection(index) {\n this.selectedIndices = index instanceof Array ? index : [index];\n this.focused = this.selectedIndices[this.selectedIndices.length - 1];\n }\n get selected() {\n return this.selectedIndices.slice();\n }\n get focused() {\n return this.focusedIndex;\n }\n set focused(index) {\n if (this.focusedIndex !== index) {\n this.focusedIndex = index;\n this.onFocus.emit(index);\n }\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nvar NavigationAction;\n(function (NavigationAction) {\n // eslint-disable-next-line id-denylist\n NavigationAction[NavigationAction[\"Undefined\"] = 0] = \"Undefined\";\n NavigationAction[NavigationAction[\"Open\"] = 1] = \"Open\";\n NavigationAction[NavigationAction[\"Close\"] = 2] = \"Close\";\n NavigationAction[NavigationAction[\"Enter\"] = 3] = \"Enter\";\n NavigationAction[NavigationAction[\"Tab\"] = 4] = \"Tab\";\n NavigationAction[NavigationAction[\"Esc\"] = 5] = \"Esc\";\n NavigationAction[NavigationAction[\"Delete\"] = 6] = \"Delete\";\n NavigationAction[NavigationAction[\"Backspace\"] = 7] = \"Backspace\";\n NavigationAction[NavigationAction[\"Home\"] = 8] = \"Home\";\n NavigationAction[NavigationAction[\"End\"] = 9] = \"End\";\n NavigationAction[NavigationAction[\"Up\"] = 10] = \"Up\";\n NavigationAction[NavigationAction[\"Down\"] = 11] = \"Down\";\n NavigationAction[NavigationAction[\"Left\"] = 12] = \"Left\";\n NavigationAction[NavigationAction[\"Right\"] = 13] = \"Right\";\n})(NavigationAction || (NavigationAction = {}));\n\n/**\n * @hidden\n */\nclass DataService {\n constructor() {\n this.grouped = false;\n this.groupIndices = [];\n }\n set data(data) {\n this._data = data;\n this.grouped = this.isGrouped(data);\n if (this.grouped) {\n this.groupIndices = this.getGroupIndices(data);\n this._flatData = this.flatten(data);\n }\n }\n get data() {\n if (this.grouped) {\n return this._flatData;\n }\n return this._data;\n }\n /**\n * @hidden\n * Used to get the actual items count, i.e. excluding the header items in case of grouping.\n */\n get itemsCount() {\n if (!isPresent(this.data) || this.data.length === 0) {\n return 0;\n }\n const items = this.grouped ? this._flatData.filter(item => !item.header) : this.data;\n return items.length;\n }\n /**\n * @hidden\n * Used to determine if the component received grouped data.\n */\n isGrouped(data) {\n // GroupResult { aggregates: AggregateResult, field: string, items: object[], value: any }\n // https://www.telerik.com/kendo-angular-ui/components/dataquery/api/GroupResult/\n return (isPresent(data) && data.length !== 0) && isPresent(data[0]) && hasProps(data[0], ['aggregates', 'field', 'items', 'value']);\n }\n /**\n * @hidden\n * Used to calculate the last item index of each group.\n */\n getGroupIndices(data) {\n let groupIndices = [];\n for (let i = 0; i <= data.length - 1; i++) {\n groupIndices[i] = (groupIndices[i - 1] || 0) + data[i].items.length;\n }\n return groupIndices;\n }\n /**\n * @hidden\n * Used to get a flat array containing all items matching certain criteria.\n */\n filter(predicate) {\n let result = [];\n if (this.isGrouped(this.data)) {\n for (let i = 0; i <= this.groupIndices.length - 1; i++) {\n const matches = this.data[i].items.filter(predicate);\n if (matches) {\n result = result.concat(matches);\n }\n }\n }\n else {\n result = this.data.filter(predicate);\n }\n return result;\n }\n /**\n * @hidden\n * Used to get the index of a given data item.\n */\n indexOf(item, startFrom = 0) {\n let predicate = (element) => {\n return element === item;\n };\n if (this.grouped) {\n predicate = (element) => {\n return element.value === item;\n };\n }\n return this.findIndex(predicate, startFrom);\n }\n /**\n * @hidden\n * Used to get the index of a data item based on an expression.\n */\n findIndex(predicate, startFrom = 0) {\n let index = -1;\n if (this.grouped) {\n const data = this._flatData.filter(item => !item.header && item.offsetIndex >= startFrom);\n index = data.findIndex(predicate);\n index = data[index] ? data[index].offsetIndex : -1;\n }\n else {\n const data = this.data.slice(startFrom);\n const itemIndex = data.findIndex(predicate);\n index = itemIndex !== -1 ? itemIndex + startFrom : -1;\n }\n return index;\n }\n /**\n * @hidden\n * Used to get the closest group header prior to an item index.\n */\n closestGroup(index) {\n for (let i = index; i >= 0; i--) {\n if (this._flatData[i].header) {\n return this._flatData[i];\n }\n }\n }\n /**\n * @hidden\n * Used to get the first item matching the criteria.\n */\n find(predicate) {\n const index = this.findIndex(predicate);\n return this.itemAt(index);\n }\n /**\n * @hidden\n * Used to get the true index in a flattened data array.\n */\n flatIndex(index) {\n if (this.itemsCount === 0) {\n return -1;\n }\n if (this.grouped) {\n const match = this._flatData.find((item) => !item.header && item.offsetIndex === index);\n if (match) {\n return match.index;\n }\n }\n else {\n return index;\n }\n return -1;\n }\n /**\n * @hidden\n * Used to get the item at the provided index.\n */\n itemAt(index) {\n let dataItem;\n if (this.itemsCount === 0) {\n return dataItem;\n }\n if (this.grouped) {\n const match = this._flatData.find((item) => !item.header && item.offsetIndex === index);\n if (match) {\n dataItem = match.value;\n }\n }\n else {\n dataItem = this.data[index];\n }\n return dataItem;\n }\n /**\n * @hidden\n * Used to get the group at the provided index.\n */\n groupAt(index) {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n return this._flatData.find((item) => item.header && item.index === index);\n }\n /**\n * @hidden\n * Used to get the field by which the data is grouped.\n */\n groupField() {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return null;\n }\n return this._data[0].field;\n }\n /**\n * @hidden\n * Used to get the group to which a dataItem belongs.\n */\n itemGroup(item) {\n if (!item || this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n const fieldName = this.groupField();\n if (fieldName) {\n return getter(item, fieldName);\n }\n }\n flatten(data, group = undefined, offset = 0, groupIndex = 0) {\n let flat = [];\n if (isPresent(group)) {\n flat.push({\n header: true,\n index: groupIndex + offset,\n offsetIndex: groupIndex,\n value: group\n });\n }\n for (let i = 0; i < data.length; i++) {\n let result = [];\n if (data[i].items) {\n result = this.flatten(data[i].items, data[i].value, offset, i);\n offset = offset + data[i].items.length;\n }\n else {\n result.push({\n header: false,\n index: groupIndex + offset + i + 1,\n offsetIndex: offset + i,\n value: data[i]\n });\n }\n flat = flat.concat(result);\n }\n return flat;\n }\n}\nDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass DisabledItemsService {\n constructor(dataService) {\n this.dataService = dataService;\n this.itemDisabled = null;\n }\n isIndexDisabled(index) {\n if (this.itemDisabled) {\n const item = this.dataService.itemAt(index);\n if (isPresent(item)) {\n return this.itemDisabled({ dataItem: item, index });\n }\n else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({ dataItem: this.defaultItem, index: -1 });\n }\n }\n }\n isItemDisabled(item) {\n if (this.itemDisabled) {\n const index = this.dataService.indexOf(item);\n if (index !== -1) {\n return this.itemDisabled({ dataItem: item, index });\n }\n else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({ dataItem: this.defaultItem, index: -1 });\n }\n }\n }\n}\nDisabledItemsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledItemsService, deps: [{ token: DataService }], target: i0.ɵɵFactoryTarget.Injectable });\nDisabledItemsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledItemsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledItemsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DataService }]; } });\n\nconst MIN_INDEX = 0;\n/**\n * @hidden\n */\nclass NavigationEvent {\n /**\n * The index of the item to which the user navigated.\n */\n constructor(index, originalEvent) {\n this.index = index;\n this.originalEvent = originalEvent;\n }\n}\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(disabledItemsService, selectionService) {\n this.disabledItemsService = disabledItemsService;\n this.selectionService = selectionService;\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n this.enter = new EventEmitter();\n this.tab = new EventEmitter();\n this.esc = new EventEmitter();\n this.up = new EventEmitter();\n this.right = new EventEmitter();\n this.down = new EventEmitter();\n this.left = new EventEmitter();\n this.delete = new EventEmitter();\n this.backspace = new EventEmitter();\n this.home = new EventEmitter();\n this.end = new EventEmitter();\n }\n process(args) {\n const keyCode = args.originalEvent.keyCode;\n const altKey = args.originalEvent.altKey;\n let index;\n let action = NavigationAction.Undefined;\n if (altKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.Open;\n }\n else if (altKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.Close;\n }\n else if (keyCode === Keys.Enter) {\n action = NavigationAction.Enter;\n }\n else if (keyCode === Keys.Escape) {\n action = NavigationAction.Esc;\n }\n else if (keyCode === Keys.Tab) {\n action = NavigationAction.Tab;\n }\n else if (keyCode === Keys.ArrowUp) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: -1 });\n action = NavigationAction.Up;\n }\n else if (keyCode === Keys.ArrowLeft) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: -1 });\n action = NavigationAction.Left;\n }\n else if (keyCode === Keys.ArrowDown) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: 1 });\n action = NavigationAction.Down;\n }\n else if (keyCode === Keys.ArrowRight) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: 1 });\n action = NavigationAction.Right;\n }\n else if (keyCode === Keys.Home) {\n index = this.isDisabled(MIN_INDEX) ? args.current : MIN_INDEX;\n action = NavigationAction.Home;\n }\n else if (keyCode === Keys.End) {\n index = this.isDisabled(args.max) ? args.current : args.max;\n action = NavigationAction.End;\n }\n else if (keyCode === Keys.Delete) {\n action = NavigationAction.Delete;\n }\n else if (keyCode === Keys.Backspace) {\n action = NavigationAction.Backspace;\n }\n const eventData = new NavigationEvent(index, args.originalEvent);\n if (action !== NavigationAction.Undefined) {\n this[NavigationAction[action].toLowerCase()].emit(eventData);\n }\n return action;\n }\n next(args) {\n const { current, start, end, step } = args;\n const nextIndex = !isPresent(current) ? start : this.clampIndex(current + step, start, end);\n const firstFocusableIndex = this.firstFocusableIndex(nextIndex, start, end, step);\n if (isPresent(firstFocusableIndex)) {\n return firstFocusableIndex;\n }\n if (this.selectionService.isSelected(current) && current >= start) {\n return current;\n }\n const inversedStep = -1 * step;\n return this.firstFocusableIndex(nextIndex, start, end, inversedStep);\n }\n clampIndex(index, min, max) {\n if (!isPresent(index) || index < min) {\n return min;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n firstFocusableIndex(startIndex, min, max, step) {\n while (min <= startIndex && startIndex <= max) {\n if (!this.isDisabled(startIndex)) {\n return startIndex;\n }\n startIndex += step;\n }\n return undefined;\n }\n isDisabled(index) {\n if (this.disabledItemsService) {\n return this.disabledItemsService.isIndexDisabled(index);\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: DisabledItemsService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DisabledItemsService }, { type: SelectionService }]; } });\n\n/**\n * Renders content when no data is available. To define the no-data template, nest a `` tag\n * with the `kendoNoDataTemplate` directive inside the component tag.\n *\n * - [Using `NoDataTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the ComboBox]({% slug templates_combobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownList]({% slug templates_ddl %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-no-data-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

No data!

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [];\n * }\n * ```\n */\nclass NoDataTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNoDataTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoDataTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNoDataTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NoDataTemplateDirective, selector: \"[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoDataTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Defines the mandatory properties of the `kendoDropDownFilter` directive\n * so that `kendoDropDownFilter` can be used with any of the DropDowns components\n * which implement the `FilterableDropDownComponentBase` class.\n *\n * @hidden\n */\nclass FilterableComponent {\n}\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n pageSize: 50,\n itemHeight: 28\n};\n/**\n * @hidden\n */\nconst normalizeVirtualizationSettings = (settings, defaultOverrides) => {\n const defaults = Object.assign({}, DEFAULTS, defaultOverrides);\n if (settings === true) {\n return defaults;\n }\n if (!settings) {\n return null;\n }\n return Object.assign({ pageSize: DEFAULTS.pageSize }, settings);\n};\n\n/**\n * @hidden\n */\nconst TOUCH_ENABLED = new InjectionToken('dropdowns-touch-enabled');\n\n/**\n * @hidden\n */\nclass ListItemDirective {\n constructor(element) {\n this.element = element;\n }\n}\nListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListItemDirective, selector: \"\\\"li[role=option], li[role=group]\\\"\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '\"li[role=option], li[role=group]\"' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass SelectableDirective {\n constructor(selectionService) {\n this.checkboxes = { enabled: false };\n // @HostBinding('attr.offset-index')\n // @Input() public offsetIndex: number;\n this.multipleSelection = false;\n this.selectionService = selectionService;\n }\n get focusedClassName() {\n return this.selectionService.isFocused(this.index);\n }\n get selectedClassName() {\n return !this.checkboxes.enabled && this.selectionService.isSelected(this.index);\n }\n onClick(event) {\n event.stopPropagation();\n if (this.checkboxes.enabled && !this.checkboxes.checkOnClick) {\n return;\n }\n if (this.multipleSelection) {\n if (this.selectionService.isSelected(this.index)) {\n this.selectionService.unselect(this.index);\n }\n else {\n this.selectionService.add(this.index);\n }\n }\n else {\n this.selectionService.change(this.index);\n }\n }\n}\nSelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectableDirective, deps: [{ token: SelectionService }], target: i0.ɵɵFactoryTarget.Directive });\nSelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: { index: \"index\", checkboxes: \"checkboxes\", height: \"height\", multipleSelection: \"multipleSelection\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"attr.index\": \"this.index\", \"style.height.px\": \"this.height\", \"style.minHeight.px\": \"this.height\", \"class.k-focus\": \"this.focusedClassName\", \"class.k-selected\": \"this.selectedClassName\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownsSelectable]'\n }]\n }], ctorParameters: function () { return [{ type: SelectionService }]; }, propDecorators: { index: [{\n type: HostBinding,\n args: ['attr.index']\n }, {\n type: Input\n }], checkboxes: [{\n type: Input\n }], height: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: HostBinding,\n args: ['style.minHeight.px']\n }, {\n type: Input\n }], multipleSelection: [{\n type: Input\n }], focusedClassName: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], selectedClassName: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass ListComponent {\n /* tslint:disable:member-ordering */\n constructor(dataService, wrapper, selectionService, disabledItemsService, cdr, zone, renderer) {\n this.dataService = dataService;\n this.wrapper = wrapper;\n this.selectionService = selectionService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.zone = zone;\n this.renderer = renderer;\n this.selected = [];\n this.focused = -1;\n this.show = true;\n this.multipleSelection = false;\n this.type = 'list';\n this.checkboxes = { enabled: false };\n this.rounded = 'medium';\n this.onClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.listResize = new EventEmitter();\n this.startFrom = 0;\n this.lastLoaded = 0;\n this.lastScrollTop = 0;\n this.scrollToFocused = false;\n this._size = 'medium';\n this.selectSubscription = merge(this.selectionService.onSelect.pipe(map((args) => args.indices[0])), this.selectionService.onFocus)\n .pipe(\n // handle only the very last onSelect/onFocus emission\n switchMap(event => this.zone.onStable.pipe(take(1), map(() => event))))\n .subscribe(this.scrollToItem.bind(this));\n this.prepareClasses();\n }\n set data(data) {\n this._data = data[0] && data[0].header ? data.slice(0) : data;\n }\n get data() {\n return this._data;\n }\n set size(size) {\n if (this.type === 'list') {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n if (size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', size));\n }\n this._size = size;\n }\n }\n get size() {\n return this._size;\n }\n get pageSize() {\n if (this.virtual.pageSize) {\n return this.virtual.pageSize;\n }\n let size = Math.round(this.height / this.virtual.itemHeight);\n return size;\n }\n get scrollHeight() {\n return (this.dataService.grouped ? this.virtual.total - 1 : this.virtual.total) * this.virtual.itemHeight;\n }\n get overflowY() {\n if (isPresent(this.virtual)) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n return overflow;\n }\n }\n /**\n * @hidden\n */\n get checkboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n ngOnChanges(changes) {\n if (isChanged('data', changes, false)) {\n if (this.lastLoaded <= 0) {\n this.lastLoaded = this.data.length - 1;\n this.scrollToFocused = !changes.data.isFirstChange();\n }\n this.setOverflow();\n }\n if (isChanged('virtual', changes, false)) {\n this.setOverflow();\n }\n if (isChanged('type', changes, false)) {\n this.prepareClasses();\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n this.zone.runOutsideAngular(() => {\n this.scrollSubscription = fromEvent(this.content.nativeElement, \"scroll\").pipe(auditTime(100), tap(this.prefetchData.bind(this)), tap(this.findCurrentGroup.bind(this))).subscribe(() => {\n this.lastScrollTop = this.content.nativeElement.scrollTop;\n });\n });\n this.setOverflow();\n }\n ngAfterViewChecked() {\n if (this.virtual) {\n this.positionItems();\n }\n if (this.items && this.scrollToFocused) {\n this.scrollToFocused = false;\n const scrollTarget = this.items.length && this.selectionService.focused === -1 ? 0 : this.selectionService.focused;\n this.scrollToItem(scrollTarget);\n }\n if (this.dataService.grouped) {\n this.findCurrentGroup();\n }\n }\n ngOnDestroy() {\n this.selectSubscription.unsubscribe();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n onCheckedChange(e, index) {\n const isChecked = e.target['checked'];\n if (isChecked && !this.selectionService.isSelected(index)) {\n this.selectionService.add(index);\n }\n if (!isChecked && this.selectionService.isSelected(index)) {\n this.selectionService.unselect(index);\n }\n }\n prepareClasses() {\n if (this.type === 'list') {\n this.listContentClass = 'k-list-content';\n this.listClass = 'k-list-ul';\n this.listItemClass = 'k-list-item';\n this.listVirtualClass = 'k-virtual-list';\n this.listGroupStickyHeaderClass = 'k-list-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-list-header-text';\n this.listGroupItemClass = 'k-list-group-item';\n this.listGroupItemTextClass = 'k-list-item-text';\n }\n else {\n this.listContentClass = 'k-table-body k-table-scroller';\n this.listClass = 'k-table k-table-list';\n this.listItemClass = 'k-table-row';\n this.listVirtualClass = 'k-virtual-table';\n this.listGroupStickyHeaderClass = 'k-table-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-table-th';\n this.listGroupItemClass = 'k-table-group-row';\n this.listGroupItemTextClass = 'k-table-th';\n }\n }\n isChecked(index) {\n const normalizedIndex = this.virtual ? index + this.virtual.skip : index;\n return this.selectionService.isSelected(normalizedIndex);\n }\n firstVisibleItem() {\n const content = this.content.nativeElement;\n const rect = content.getBoundingClientRect();\n // IE9 hack\n const disabled = Array.prototype.slice.call(content.querySelectorAll(\".k-disabled\"));\n // This is a workaround for finding elements with pointer-events: none;\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"auto\"));\n const item = document.elementFromPoint(rect.left + 1, rect.top + 1);\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"none\"));\n // return the closest `li` item to cover the custom template scenario\n return closest(item, 'li');\n }\n findCurrentGroup() {\n if (!this.dataService.grouped) {\n this.currentGroup = undefined;\n return;\n }\n const item = this.firstVisibleItem();\n if (item) {\n let index;\n if (item.getAttribute(\"role\") === \"group\") {\n index = parseInt(item.getAttribute(\"group-index\"), 10);\n this.currentGroup = this.dataService.groupAt(index).value;\n }\n else {\n index = parseInt(item.getAttribute(\"index\"), 10);\n this.currentGroup = this.dataService.itemGroup(this.dataService.itemAt(index));\n }\n }\n else {\n this.currentGroup = undefined;\n }\n this.cdr.detectChanges();\n }\n prefetchData() {\n if (!this.virtual) {\n return;\n }\n const visibleItems = Math.trunc(this.content.nativeElement.clientHeight / this.virtual.itemHeight);\n const offsetY = this.content.nativeElement.scrollTop;\n const start = Math.trunc(offsetY / this.virtual.itemHeight);\n const down = offsetY > this.lastScrollTop;\n const nextPage = (start + visibleItems >= this.lastLoaded) && this.lastLoaded < this.virtual.total - 1;\n const leftOver = this.pageSize - (this.lastLoaded - this.startFrom);\n const prevPage = this.lastLoaded - this.pageSize + visibleItems >= start - leftOver;\n if (down && nextPage) {\n this.changePage(start);\n }\n if (!down && prevPage) {\n this.changePage(start - this.pageSize + visibleItems + 1);\n }\n }\n changePage(start) {\n this.zone.run(() => {\n let end = this.pageSize + start;\n if (end > this.virtual.total) {\n start--;\n end = this.virtual.total;\n }\n if (start < 0) {\n start = 0;\n }\n this.startFrom = start;\n this.lastLoaded = end;\n this.pageChange.emit({ skip: start, take: this.pageSize });\n });\n }\n index(groupIndex, itemIndex) {\n return groupIndex > 0 ? (this.dataService.groupIndices[groupIndex - 1] + itemIndex) : itemIndex;\n }\n getText(dataItem) {\n return getter(dataItem, this.textField);\n }\n getValue(dataItem) {\n return getter(dataItem, this.valueField);\n }\n isDisabled(index) {\n if (isPresent(this.virtual)) {\n index += this.virtual.skip;\n }\n return this.disabledItemsService.isIndexDisabled(index);\n }\n isAltRow(index) {\n return this.type === 'dropdowngrid' && index % 2 !== 0;\n }\n scrollToItem(index) {\n let flatIndex = index;\n if (this.dataService.grouped) {\n // takes into account the group header items\n flatIndex = this.dataService.flatIndex(index);\n /* The first group header item is not rendered in the list (see template), so subtract 1 when calulating the flat index.\n With virtualization enabled, the first group header could be in a previous page, in which case don't subtract anything. */\n const groupHeaderOffset = this.firstGroupHeaderInTargetedPage(flatIndex) ? -1 : 0;\n flatIndex += groupHeaderOffset;\n }\n if (this.virtual && flatIndex > -1) {\n this.scrollToIndex(flatIndex);\n return;\n }\n const items = this.items.toArray();\n if (isPresent(items[flatIndex]) && flatIndex !== -1) {\n this.scroll(items[flatIndex].element);\n }\n }\n scrollToIndex(index) {\n let content = this.content.nativeElement;\n let contentScrollTop = content.scrollTop;\n const itemOffsetTop = index * this.virtual.itemHeight;\n const itemOffsetHeight = this.virtual.itemHeight;\n const contentOffsetHeight = content.clientHeight;\n const bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n scroll(item) {\n if (!item) {\n return;\n }\n const nativeElement = item.nativeElement;\n let content = this.content.nativeElement, itemOffsetTop = nativeElement.offsetTop, itemOffsetHeight = nativeElement.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n /**\n * Indicates whether a scrollbar is currently rendered in the list.\n */\n hasScrollbar() {\n if (!(isPresent(this.items) && this.items.length && isPresent(this.list) && isPresent(this.content))) {\n return false;\n }\n const hasVirtualScroll = isPresent(this.virtual) && this.hasVirtualScrollbar();\n return hasVirtualScroll || this.list.nativeElement.scrollHeight > this.content.nativeElement.offsetHeight;\n }\n /**\n * Sets the list's content overflow (hides/shows scrollbar)\n */\n setOverflow() {\n if (this.virtual) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n this.renderer.setStyle(this.content.nativeElement, 'overflow-y', overflow);\n }\n }\n /**\n * Indicates whether the scrollbar should be visible in virtual mode.\n */\n hasVirtualScrollbar() {\n const contentOffsetHeight = this.content.nativeElement.offsetHeight;\n const virtualOffsetHeight = this.virtualContainer && this.virtualContainer.nativeElement.offsetHeight;\n return this.virtualContainer && virtualOffsetHeight > contentOffsetHeight;\n }\n positionItems() {\n this.items.forEach((item, index) => {\n const offsetY = (index + this.startFrom) * this.virtual.itemHeight;\n this.renderer.setStyle(item.element.nativeElement, \"transform\", `translateY(${offsetY}px`);\n });\n }\n /**\n * Indicates whether the first group header from the data set is in the targeted virtual page.\n */\n firstGroupHeaderInTargetedPage(itemIndex) {\n if (!isPresent(this.virtual)) {\n return true;\n }\n return this.virtual.skip === 0 && (this.virtual.pageSize > itemIndex);\n }\n setComponentClasses() {\n if (this.type === 'list') {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-list');\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n }\n }\n if (isPresent(this.virtual)) {\n this.renderer.addClass(this.wrapper.nativeElement, this.listVirtualClass);\n }\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [{ token: DataService }, { token: i0.ElementRef }, { token: SelectionService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-list\", inputs: { selected: \"selected\", focused: \"focused\", textField: \"textField\", valueField: \"valueField\", height: \"height\", template: \"template\", groupTemplate: \"groupTemplate\", fixedGroupTemplate: \"fixedGroupTemplate\", show: \"show\", id: \"id\", optionPrefix: \"optionPrefix\", multipleSelection: \"multipleSelection\", virtual: \"virtual\", type: \"type\", checkboxes: \"checkboxes\", data: \"data\", size: \"size\", rounded: \"rounded\" }, outputs: { onClick: \"onClick\", pageChange: \"pageChange\", listResize: \"listResize\" }, viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true, static: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }, { propertyName: \"virtualContainer\", first: true, predicate: [\"virtualContainer\"], descendants: true }, { propertyName: \"items\", predicate: ListItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
\n \n \n {{ currentGroup }}\n
\n
\n
    \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n 0\"\n role=\"group\"\n [class]=\"listGroupItemClass\"\n [class.k-table-alt-row]=\"isAltRow(itemIndex - 1)\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n \n \n \n {{ dataItem.value }}\n \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `, isInline: true, components: [{ type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: ListItemDirective, selector: \"\\\"li[role=option], li[role=group]\\\"\" }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-list',\n template: `\n
\n \n \n {{ currentGroup }}\n
\n
\n
    \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n 0\"\n role=\"group\"\n [class]=\"listGroupItemClass\"\n [class.k-table-alt-row]=\"isAltRow(itemIndex - 1)\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n \n \n \n {{ dataItem.value }}\n \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: DataService }, { type: i0.ElementRef }, { type: SelectionService }, { type: DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { selected: [{\n type: Input\n }], focused: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], height: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], fixedGroupTemplate: [{\n type: Input\n }], show: [{\n type: Input\n }], id: [{\n type: Input\n }], optionPrefix: [{\n type: Input\n }], multipleSelection: [{\n type: Input\n }], virtual: [{\n type: Input\n }], type: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], data: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], onClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], listResize: [{\n type: Output\n }], items: [{\n type: ViewChildren,\n args: [ListItemDirective]\n }], content: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], virtualContainer: [{\n type: ViewChild,\n args: ['virtualContainer', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, inputs: { noDataText: \"noDataText\", clearTitle: \"clearTitle\", checkAllText: \"checkAllText\", selectButtonText: \"selectButtonText\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive\n }], propDecorators: { noDataText: [{\n type: Input\n }], clearTitle: [{\n type: Input\n }], checkAllText: [{\n type: Input\n }], selectButtonText: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst NO_VALUE = \"\";\nconst DEFAULT_SIZE$5 = 'medium';\nconst DEFAULT_ROUNDED$5 = 'medium';\nconst DEFAULT_FILL_MODE$5 = 'solid';\n/**\n * @hidden\n */\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoCompleteComponent)\n};\n/**\n * Represents the [Kendo UI AutoComplete component for Angular]({% slug overview_autocomplete %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public placeholder: string = 'Type \"it\" for suggestions';\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass AutoCompleteComponent {\n constructor(localization, dataService, popupService, selectionService, navigationService, disabledItemsService, _zone, cdr, renderer, hostElement, touchEnabled) {\n this.localization = localization;\n this.dataService = dataService;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this._zone = _zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.touchEnabled = touchEnabled;\n /**\n * Defines whether the first match from the suggestions list will be automatically focused.\n * By default, `highlightFirst` is set to `true`.\n */\n this.highlightFirst = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * @hidden\n *\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_autocomplete %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the AutoComplete.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the AutoComplete gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.onChangeCallback = noop;\n this.onTouchedCallback = noop;\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this._popupSettings = { animate: true };\n this._open = false;\n this._value = \"\";\n this.valueChangeSubject = new Subject();\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.wrapper = this.hostElement.nativeElement;\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.selectionService.resetSelection([-1]);\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n get suggestion() {\n if (!this.text || !this.suggestedText) {\n this.suggestedText = undefined;\n return;\n }\n const hasMatch = this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase());\n const shouldSuggest = this.suggest && !this.backspacePressed;\n if (shouldSuggest && hasMatch) {\n return this.suggestedText;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * Toggles the visibility of the popup.\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + getter(dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.messageFor('noDataText');\n }\n }\n /**\n * Sets the data of the AutoComplete.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.filterable) {\n this.selectionService.focused = this.isOpen && this.data.length && this.highlightFirst ? this.firstFocusableIndex(0) : -1;\n }\n if (this.suggest && this.dataService.itemsCount > 0) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.valueField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the AutoComplete.\n */\n set value(newValue) {\n this.verifySettings(newValue);\n this._value = newValue || NO_VALUE;\n this.text = this.value;\n this.cdr.markForCheck();\n }\n get value() {\n return this._value || NO_VALUE;\n }\n /**\n * Configures the popup of the AutoComplete.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_autocomplete %})).\n * Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_autocomplete %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$5;\n this.renderer.removeClass(this.wrapper, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;\n this.renderer.removeClass(this.wrapper, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$5;\n this.renderer.removeClass(this.wrapper, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, \"k-focus\");\n this._isFocused = isFocused;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.localizationChangeSubscription = this.localization\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n });\n this.setComponentClasses();\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n }\n /**\n * Resets the value of the AutoComplete.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = NO_VALUE;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.change(NO_VALUE);\n if (this.filterable) {\n this.filterChange.emit('');\n }\n this.selectionService.resetSelection([]);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Focuses a specific item of the AutoComplete based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the AutoComplete.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the AutoComplete.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n verifySettings(newValue) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(newValue) && typeof newValue !== \"string\") {\n throw new Error(\"Expected value of type string. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/value-binding/\");\n }\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.valueField);\n }\n }\n }\n navigate(index) {\n if (!this.isOpen) {\n return;\n }\n this.selectionService.focus(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n if (this.disabled || this.readonly || isNaN(focused)) {\n return;\n }\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n action !== NavigationAction.Home &&\n action !== NavigationAction.End &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter(event) {\n const focused = this.selectionService.focused;\n let value;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focused >= 0) {\n value = getter(this.dataService.itemAt(focused), this.valueField);\n }\n else {\n const match = this.suggest && this.suggestedText && this.data.length &&\n getter(this.dataService.itemAt(0), this.valueField).toLowerCase() === this.searchbar.value.toLowerCase();\n if (this.isOpen && match) {\n value = this.suggestedText;\n }\n else {\n value = this.searchbar.value;\n }\n }\n this.change(value);\n }\n handleEscape() {\n this.togglePopup(false);\n this.selectionService.focused = -1;\n this.suggestedText = null;\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = isPresent(this.text) ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n this.togglePopup(text.length > 0);\n if (!this.highlightFirst) {\n this.selectionService.focused = -1;\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else if (this.highlightFirst) {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n const focused = this.filterable ? this.selectionService.focused : -1;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n let dataItem;\n let text;\n if (focused !== -1) {\n dataItem = this.dataService.itemAt(focused);\n text = getter(dataItem, this.valueField) || \"\";\n }\n else {\n text = this.searchbar.value;\n }\n const exactMatch = text === this.searchbar.value;\n const insensitiveMatch = text.toLowerCase() === this.searchbar.value.toLowerCase();\n if (!exactMatch && insensitiveMatch) {\n this.selectionService.resetSelection([]);\n }\n this.isFocused = false;\n const valueHasChanged = this.value !== this.text;\n const runInZone = hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper) || valueHasChanged;\n if (runInZone) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.change(this.searchbar.value);\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(value) {\n this.togglePopup(false);\n this.valueChangeSubject.next(value);\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.valueChangeSubscription = this.valueChangeSubject\n .subscribe(value => {\n const hasChange = this.value !== value;\n this.value = value;\n this.text = value;\n // emit change after assigning `this.value` => allows the user to modify the component value on `valueChange`\n if (hasChange) {\n this.emitChange(value);\n }\n });\n this.changeSubscription = this.selectionService.onChange.subscribe(this.handleItemChange.bind(this));\n this.focusSubscription = this.selectionService.onFocus.subscribe(this.handleItemFocus.bind(this));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down).subscribe((event) => this.navigate(event.index));\n this.closeSubscription = this.navigationService.close.subscribe(() => this.togglePopup(false));\n this.enterSubscription = this.navigationService.enter.subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc.subscribe(this.handleEscape.bind(this));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up AutoComplete on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => this.blur());\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.changeSubscription.unsubscribe();\n this.navigationSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.valueChangeSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleItemChange(event) {\n const index = event.indices.length ? event.indices[0] : undefined;\n this.selectionService.resetSelection([-1]);\n if (!isPresent(index)) {\n return;\n }\n let text = getter(this.dataService.itemAt(index), this.valueField);\n this.change(text);\n }\n handleItemFocus(_event) {\n const focused = this.selectionService.focused;\n const shouldSuggest = Boolean(this.suggest && this.data && this.data.length && focused >= 0);\n if (shouldSuggest) {\n this.suggestedText = getter(this.dataService.itemAt(focused), this.valueField);\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n popupAlign: popupPosition,\n anchorAlign: anchorPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter(item.value, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter(item, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', this.fillMode));\n }\n }\n}\nAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: i1.LocalizationService }, { token: DataService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AutoCompleteComponent, selector: \"kendo-autocomplete\", inputs: { highlightFirst: \"highlightFirst\", focusableId: \"focusableId\", data: \"data\", value: \"value\", valueField: \"valueField\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", loading: \"loading\", clearButton: \"clearButton\", suggest: \"suggest\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", filterable: \"filterable\", virtual: \"virtual\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-autocomplete\": \"this.widgetClasses\", \"class.k-input\": \"this.widgetClasses\", \"class.k-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.dir\": \"this.dir\" } }, providers: [\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoAutoComplete\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoAutoComplete',\n providers: [\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ],\n selector: 'kendo-autocomplete',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: DataService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { highlightFirst: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valueField: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], loading: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], suggest: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-autocomplete']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * @hidden\n */\nconst MultiselectMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'object': 'Expected values of Object type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst MultiSelectTreeMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-primitive-values',\n 'object': 'Expected values of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-object-values',\n 'dataItems': 'Expected dataItems of type Object[] to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'dataItemsLength': 'Expected dataItems length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding',\n 'valueDepth': 'Expected valueDepth of type number[] to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth',\n 'valueDepthLength': 'Expected valueDepth length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth'\n};\n/**\n * @hidden\n */\nconst ComboBoxMessages = {\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-bind-to-arrays-of-complex-data',\n 'noItemHeight': 'Expected virtual.itemHeight of type number.'\n};\n/**\n * @hidden\n */\nconst MultiColumnComboBoxMessages = {\n 'data': 'Provided data must consist only of objects. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/#toc-fields-configuration'\n};\n/**\n * @hidden\n */\nconst DropDownListMessages = {\n 'defaultItem': 'defaultItem and data items must be of same type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownListComponent/#toc-defaultitem',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst DropDownTreeMessages = {\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-primitive-values',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-object-values',\n 'dataItem': 'Expected dataItem of type Object to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownTreeComponent/#toc-dataitem',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding',\n 'valueDepth': 'Expected valueDepth to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/DropDownTreeComponent/#toc-valuedepth'\n};\n\n/**\n * @hidden\n */\nconst COMBOBOX_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboBoxComponent)\n};\nconst DEFAULT_SIZE$4 = 'medium';\nconst DEFAULT_ROUNDED$4 = 'medium';\nconst DEFAULT_FILL_MODE$4 = 'solid';\n/**\n * Represents the [Kendo UI ComboBox component for Angular]({% slug overview_combobox %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ComboBoxComponent {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.touchEnabled = touchEnabled;\n this.selected = [];\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Specifies whether the ComboBox allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_combobox %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n * @param { Any } value - The custom value defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return { ProductID: null, ProductName: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => userInput));\n /**\n * The hint that is displayed when the component is empty.\n *\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Enables the auto-completion of the text based on the first data item.\n */\n this.suggest = false;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_combobox %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_combobox %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time an item selection is changed\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the ComboBox.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ComboBox gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this._isFocused = false;\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualItemHeight = 28;\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualPageSize = 50;\n this._filtering = false;\n this._text = '';\n this.filterText = '';\n this._open = false;\n this._popupSettings = { animate: true };\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this.customValueSubject = new Subject();\n this.valueSubject = new Subject();\n this.clearValueSubject = new Subject();\n this.subs = new Subscription();\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n }\n set text(text) {\n this._text = isPresent(text) ? text.toString() : \"\";\n }\n get text() {\n return this._text;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + (dataItem ? getter(dataItem, this.valueField) : \"\");\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.messageFor('noDataText');\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the ComboBox.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n if (this._filtering) {\n const queryAndDataPresent = this.text.length > 0 && this.dataService.itemsCount > 0;\n const index = queryAndDataPresent ? this.firstFocusableIndex(0) : -1;\n this.selectionService.focused = index;\n }\n if (this.suggest && this.dataService.itemsCount && this.text) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.textField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the ComboBox.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the dataset are considered custom values.\n * > When the `Enter` key is pressed or the component loses focus, custom values get dismissed unless `allowCustom` is set to `true`.\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_combobox %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * Configures the popup of the ComboBox.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_combobox %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_combobox %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings, {\n itemHeight: this.defaultVirtualItemHeight,\n pageSize: this.defaultVirtualPageSize\n });\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n this.renderer[value ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, \"k-focus\");\n this._isFocused = value;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n get popupWidth() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get popupHeight() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.attachStreams();\n this.createValueStream();\n this.subscribeTouchEvents();\n this.attachSelectClickHandler();\n this.setComponentClasses();\n }\n createValueStream() {\n const valueStream = this.valueSubject.pipe(filter((candidate) => {\n const current = getter(this.value, this.valueField);\n const newValue = getter(candidate, this.valueField);\n let newText = getter(candidate, this.textField);\n if (!isPresent(this.value) && !isPresent(newValue)) {\n return false;\n }\n if (isPresent(newText)) {\n newText = newText.toString();\n }\n if (current === newValue && this.text === newText) {\n this.clearFilter();\n return false;\n }\n else {\n return true;\n }\n }), map((candidate) => {\n const newValue = getter(candidate, this.valueField);\n const newText = getter(candidate, this.textField);\n return {\n dataItem: candidate,\n text: newText,\n value: this.valuePrimitive ? newValue : candidate\n };\n }));\n const customValueStreams = partition(() => this.allowCustom)(this.customValueSubject.pipe(throttleTime(300)));\n const allowCustomValueStream = customValueStreams[0].pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), filter(() => {\n const hasChange = this.text !== getter(this.value, this.valueField);\n this.loading = hasChange;\n this.disabled = hasChange;\n if (!hasChange) {\n this.clearFilter();\n }\n return hasChange;\n }), this.valueNormalizer, map((normalizedValue) => {\n return {\n custom: true,\n dataItem: normalizedValue,\n text: this.text,\n value: normalizedValue\n };\n }));\n const disableCustomValueStream = customValueStreams[1].pipe(map(() => {\n return {\n custom: true,\n dataItem: undefined,\n text: undefined,\n value: undefined\n };\n }));\n const clearValueStream = this.clearValueSubject.pipe(map(() => ({\n dataItem: undefined,\n text: undefined,\n value: undefined\n })));\n if (this.valueSubscription) {\n this.valueSubscription.unsubscribe();\n }\n const merged = merge(valueStream, allowCustomValueStream, disableCustomValueStream, clearValueStream);\n this.valueSubscription = merged.pipe(catchError(() => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== undefined;\n this.dataItem = undefined;\n this.value = undefined;\n this.text = undefined;\n this.loading = false;\n this.disabled = false;\n if (selectionChanged) {\n this.selectionChange.emit(undefined);\n }\n this.emitValueChange();\n this.createValueStream();\n return of(null);\n }))\n .subscribe((state) => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== getter(state.dataItem, this.valueField);\n this.dataItem = state.dataItem;\n this.value = state.value;\n this.text = state.text;\n this.loading = false;\n this.disabled = false;\n this.clearFilter();\n if (state.custom) {\n this.selectionService.focused = -1;\n }\n if (selectionChanged) {\n const selectionArgs = state.custom ? undefined : this.dataItem;\n this.selectionChange.emit(selectionArgs);\n }\n this.emitValueChange();\n });\n }\n attachStreams() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n }));\n this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => isPresent(event.index)))\n .subscribe((event) => this.navigate(event.index)));\n this.subs.add(this.navigationService.open.subscribe(this.handleNavigationOpen.bind(this)));\n this.subs.add(this.navigationService.close.subscribe(() => this.togglePopup(false)));\n this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));\n this.subs.add(this.navigationService.enter.pipe(tap((event) => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n }))\n .subscribe(this.handleEnter.bind(this)));\n this.subs.add(merge(this.selectionService.onChange, this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)))\n .pipe(tap(_ => {\n this._filtering = false;\n this.togglePopup(false);\n }), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n this.change(dataItem);\n }));\n this.subs.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), tap(_ => this._filtering = false), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n const selectionChanged = getter(dataItem, this.valueField) !== getter(this.dataItem, this.valueField);\n this.updateState({ dataItem });\n if (selectionChanged) {\n this.selectionChange.emit(dataItem);\n }\n }));\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.subs.unsubscribe();\n if (isPresent(this.valueSubscription)) {\n this.valueSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectClickDisposeHandler) {\n this.selectClickDisposeHandler();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the ComboBox based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the ComboBox.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the ComboBox.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to open or close the popup,\n * the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the ComboBox.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n this.clearState();\n this.resetSelection();\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label\n * should be rendered in the input when the component is not focused.\n */\n isEmpty() {\n const textEmpty = !isPresent(this.text) || isEmptyString(this.text);\n const valueEmpty = !isPresent(this.value) || isEmptyString(this.value);\n return textEmpty && valueEmpty;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this._filtering = true;\n this._previousDataItem = undefined;\n this.selectionService.resetSelection([]);\n this.clearValueSubject.next();\n this._filtering = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}\n `;\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isOpen) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(ComboBoxMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(ComboBoxMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(ComboBoxMessages.textAndValue);\n }\n if (this.virtual && isNaN(this.virtual.itemHeight)) {\n throw new Error(ComboBoxMessages.noItemHeight);\n }\n }\n setState() {\n // Filtering in process, do nothing.\n if (this._filtering) {\n return;\n }\n const value = this.value;\n const valueField = this.valueField;\n const resolved = this.findDataItem({ valueField, value });\n if (isPresent(resolved.index) && resolved.index !== -1) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && this.allowCustom) {\n this.updateState({ dataItem: value });\n this.resetSelection(-1);\n }\n else if (this._previousDataItem && this.value) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection(-1);\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index) || index < 0;\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = index;\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter(item.value, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter(item, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const comparer = (element) => {\n const dataItem = this.dataService.grouped ? element.value : element;\n return getter(dataItem, valueField) === getter(value, valueField);\n };\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.textField);\n }\n }\n }\n /**\n * @hidden\n */\n getSuggestion() {\n const hasSelected = !!this.selectionService.selected.length;\n const shouldSuggest = this.suggest && !this.backspacePressed && this.suggestedText && this.text;\n if (!hasSelected && shouldSuggest && this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase())) {\n return this.suggestedText;\n }\n else {\n this.suggestedText = undefined;\n }\n }\n navigate(index) {\n if (this.dataService.itemsCount === 0) {\n return;\n }\n this.text = getter(this.dataService.itemAt(index), this.textField);\n this.selectionService.select(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n if (event.keyCode === Keys.Home || event.keyCode === Keys.End) {\n return;\n }\n if (!hasSelected) {\n if (event.keyCode === Keys.ArrowDown) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp) {\n offset = 1;\n }\n }\n const action = this.navigationService.process({\n current: offset + focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter() {\n const text = this.text;\n const focused = this.selectionService.focused;\n const hasFocused = isPresent(focused) && focused !== -1;\n const previousText = getter(this._previousDataItem, this.textField) || \"\";\n const focusedItemText = getter(this.dataService.itemAt(focused), this.textField);\n const textHasChanged = text !== previousText;\n this.togglePopup(false);\n this._filtering = false;\n if (this.allowCustom && textHasChanged) {\n if (text === focusedItemText || this.useSuggestion()) {\n this.selectionService.change(focused);\n }\n else {\n this.change(text, true);\n }\n }\n if (!this.allowCustom) {\n if (hasFocused) {\n this.selectionService.change(focused);\n }\n else if (textHasChanged) {\n this.change(text, true);\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n this._filtering = false;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n this.isFocused = false;\n const unresolvedSelection = getter(this.dataItem, this.valueField) !== getter(this.value, this.valueField);\n const currentText = this.searchbar.value;\n const textHasChanged = currentText !== (getter(this.dataItem, this.textField) || '');\n const valueHasChanged = unresolvedSelection || textHasChanged;\n const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement);\n if (runInZone) {\n this.zone.run(() => {\n if (valueHasChanged) {\n const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();\n if (lowerCaseMatch || unresolvedSelection) {\n this.selectionService.change(this.selectionService.focused);\n }\n else {\n this.change(currentText, true);\n }\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleEscape() {\n this.togglePopup(false);\n // clear the focus only if the focused item is not selected\n const hasSelected = this.selectionService.selected.length > 0;\n if (!hasSelected) {\n this.suggestedText = null;\n this.selectionService.focused = -1;\n }\n }\n /**\n * @hidden\n */\n handleNavigationOpen() {\n this.restoreItemFocus();\n this.togglePopup(true);\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = this.text ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n // Reset the selection prior to filter. If a match is present, it will be resolved. If a match is not present, it is not needed.\n this.selectionService.resetSelection([]);\n this.togglePopup(true);\n this._filtering = true;\n if (this.filterable && this.filterText !== text) {\n this.filterText = text;\n this.filterChange.emit(text);\n }\n else {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => this.onFocus.emit());\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(candidate, isCustom = false) {\n if (isCustom) {\n this.customValueSubject.next(candidate);\n }\n else {\n this.valueSubject.next(candidate);\n }\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n this._previousDataItem = this.dataItem;\n }\n /**\n * @hidden\n */\n selectClick() {\n if (!this.touchEnabled) {\n this.searchbar.focus();\n }\n if (!this.isOpen) {\n this.restoreItemFocus();\n }\n this.togglePopup(!this.isOpen);\n }\n get listContainerClasses() {\n return ['k-list-container', 'k-reset'].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n get focusedItemText() {\n const focused = this.selectionService.focused;\n if (!isPresent(focused) || focused === -1) {\n return null;\n }\n const itemText = getter(this.dataService.itemAt(focused), this.textField);\n return !isPresent(itemText) ? \"\" : itemText.toString();\n }\n /**\n * Focuses the first match when there's text in the input field, but no focused item.\n */\n restoreItemFocus() {\n const hasFocus = isPresent(this.selectionService.focused) && this.selectionService.focused > -1;\n if (!hasFocus && this.text && this.dataService.itemsCount) {\n if (this.filterable) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else {\n this.search(this.text);\n }\n }\n }\n useSuggestion() {\n if (!(this.suggest && isPresent(this.searchbar.value))) {\n return false;\n }\n const focusedDataItem = this.dataService.itemAt(this.selectionService.focused);\n const focusedItemText = getter(focusedDataItem, this.textField);\n if (!isPresent(focusedItemText)) {\n return false;\n }\n return this.searchbar.value.toLowerCase() === focusedItemText.toLowerCase();\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n anchorAlign: anchorPosition,\n popupAlign: popupPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.popupHeight;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = '';\n this.filterChange.emit(this.filterText);\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this.zone.runOutsideAngular(() => \n // Roll up ComboBox on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n const isInDropDown = inDropDown(this.wrapper, target, this.popupRef);\n if (this.isFocused && !isInDropDown) {\n // Close popup and mobile keyboard if searchbar is focused\n this.zone.run(() => this.blur());\n }\n else if (this.isOpen && !isInDropDown) {\n // Close popup if the popup is opened via the select click\n this.zone.run(() => this.togglePopup(false));\n }\n }));\n }\n attachSelectClickHandler() {\n const selectElement = this.select.nativeElement;\n const event = pointers ? 'pointerdown' : 'click';\n this.selectClickDisposeHandler = this.renderer.listen(selectElement, event, this.selectClick.bind(this));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComboBoxComponent, selector: \"kendo-combobox\", inputs: { focusableId: \"focusableId\", allowCustom: \"allowCustom\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", valuePrimitive: \"valuePrimitive\", valueNormalizer: \"valueNormalizer\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", iconClass: \"iconClass\", loading: \"loading\", suggest: \"suggest\", clearButton: \"clearButton\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", filterable: \"filterable\", virtual: \"virtual\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-combobox\": \"this.widgetClasses\", \"class.k-input\": \"this.widgetClasses\", \"class.k-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.dir\": \"this.dir\" } }, providers: [\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }, { propertyName: \"select\", first: true, predicate: [\"select\"], descendants: true, static: true }], exportAs: [\"kendoComboBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoComboBox',\n providers: [\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent)\n }\n ],\n selector: 'kendo-combobox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], suggest: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], select: [{\n type: ViewChild,\n args: ['select', { static: true }]\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-combobox']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * Renders the selected value of the dropdown. To define the header template, nest an `` tag\n * with the `kendoValueTemplate` directive inside the component tag.\n *\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `ValueTemplate` directive can only be used with the DropDownList and DropDownTree components.\n *\n * - [Using `ValueTemplate` with the DropDownList]({% slug templates_ddl %}#toc-value-template)\n * - [Using `ValueTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-value-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ValueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nValueTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nValueTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueTemplateDirective, selector: \"[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass FilterInputDirective {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n }\n ngOnChanges() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n}\nFilterInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nFilterInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterInputDirective, selector: \"[filterInput]\", inputs: { focused: [\"filterInput\", \"focused\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[filterInput]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { focused: [{\n type: Input,\n args: ['filterInput']\n }] } });\n\n/**\n * @hidden\n */\nconst DROPDOWNLIST_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownListComponent)\n};\nconst DEFAULT_SIZE$3 = 'medium';\nconst DEFAULT_ROUNDED$3 = 'medium';\nconst DEFAULT_FILL_MODE$3 = 'solid';\n/**\n * Represents the [Kendo UI DropDownList component for Angular]({% slug overview_ddl %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass DropDownListComponent {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this._zone = _zone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled;\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_ddl %}) functionality of the DropDownList.\n */\n this.filterable = false;\n /**\n * Enables a case-insensitive search. When filtration is disabled, use this option.\n */\n this.ignoreCase = true;\n /**\n * Sets the delay before an item search is performed. When filtration is disabled, use this option.\n */\n this.delay = 500;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires each time the value is changed ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field\n * ([see example]({% slug overview_ddl %}#toc-events)).\n * You can filter the source based on the passed filtration value.\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the item selection is changed\n * ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownList.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownList gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n this.role = 'listbox';\n this.groupIndices = [];\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.filterText = \"\";\n this._isFocused = false;\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n this.word = \"\";\n this.last = \"\";\n this.filterFocused = new EventEmitter();\n this.filterBlurred = new EventEmitter();\n this.hostElementFocused = new EventEmitter();\n this.hostElementBlurred = new EventEmitter();\n this.selectionSubscription = new Subscription();\n this._open = false;\n this._popupSettings = { animate: true };\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n }\n get width() {\n const wrapperWidth = isDocumentAvailable() ? this.wrapper.nativeElement.offsetWidth : 0;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get widgetTabIndex() {\n if (this.disabled) {\n return undefined;\n }\n const providedTabIndex = Number(this.tabIndex);\n const defaultTabIndex = 0;\n return !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get ariaExpanded() {\n return this.isOpen;\n }\n get ariaOwns() {\n if (!this.isOpen) {\n return;\n }\n return this.listBoxId;\n }\n get ariaActivedescendant() {\n if (!isPresent(this.dataItem) || !this.isOpen) {\n return;\n }\n return this.optionPrefix + \"-\" + getter(this.dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.messageFor('noDataText');\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the DropDownList.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the DropDownList.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(newValue) {\n if (!isPresent(newValue)) {\n this._previousDataItem = undefined;\n }\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownList.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_ddl %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_ddl %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddl %}#toc-primitive-values-from-object-fields)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = rounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n blurComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementBlurred.emit();\n }\n /**\n * @hidden\n */\n blurFilterInput() {\n this.filterBlurred.emit();\n }\n /**\n * @hidden\n */\n focusComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementFocused.emit();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get hostTabIndex() {\n return this.widgetTabIndex;\n }\n get isReadonly() {\n return this.readonly;\n }\n get isAriaExpanded() {\n return this.ariaExpanded;\n }\n get hostAriaOwns() {\n return this.ariaOwns;\n }\n get hostAriaActivedescendant() {\n return this.ariaActivedescendant;\n }\n get hostNoDataLabel() {\n return this.noDataLabel;\n }\n /**\n * @hidden\n */\n keydown(event) {\n const firstIndex = isPresent(this.defaultItem) ? -1 : 0;\n let focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(firstIndex) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n const isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;\n const isFilterFocused = this.filterable && this.isFocused && this.isOpen;\n if (isFilterFocused && isHomeEnd) {\n return;\n }\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);\n if (!hasSelected || focusedItemNotSelected) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft) {\n offset = 1;\n }\n }\n const eventData = event;\n const action = this.navigationService.process({\n current: focused + offset,\n max: this.dataService.itemsCount - 1,\n min: this.defaultItem ? -1 : 0,\n originalEvent: eventData\n });\n const leftRightKeys = (action === NavigationAction.Left) || (action === NavigationAction.Right);\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n !(leftRightKeys && this.filterable) &&\n action !== NavigationAction.Enter //enter when popup is opened is handled before `handleEnter`\n ) {\n eventData.preventDefault();\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n if (this.disabled || this.readonly || this.filterable) {\n return;\n }\n this.onKeyPress(event);\n }\n /**\n * @hidden\n */\n click(event) {\n event.preventDefault();\n this.focus();\n this.togglePopup(!this.isOpen);\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.localizationChangesSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n });\n this.assignAriaDescribedBy();\n this.setComponentClasses();\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n const value = this.value;\n return !(value === 0 || value === false || value || this.defaultItem);\n }\n /**\n * @hidden\n */\n onFilterFocus() {\n this.filterFocused.emit();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n if (this.localizationChangesSubscription) {\n this.localizationChangesSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('defaultItem', changes, false)) {\n this.disabledItemsService.defaultItem = this.defaultItem;\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive', 'defaultItem', 'itemDisabled'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the DropDownList based on a provided index.\n * If there is a default item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = isPresent(this.defaultItem) ? -1 : 0;\n const isInRange = minIndex <= index && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the DropDownList.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownList.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddl %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n if (!open && this.filterable && this.isFocused) {\n this.focus();\n }\n this._toggle(open);\n }\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the DropDownList.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get optionLabelSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get isDisabledDefaultItem() {\n return this.disabledItemsService.isItemDisabled(this.defaultItem);\n }\n /**\n * @hidden\n */\n getText() {\n return this.text;\n }\n /**\n * @hidden\n */\n getDefaultItemText() {\n return getter(this.defaultItem, this.textField);\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n if (!this.filterable) {\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index);\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = clear ? this.firstFocusableIndex(0) : index;\n }\n onSelectionChange({ dataItem }) {\n this.updateState({ dataItem });\n this.selectionChange.emit(dataItem);\n // reassigning the value label ID as aria-deascibedby forces firefox/nvda, forefox/jaws to read\n // the new value when the popup is closed and the value is changed with the arrow keys (up/down)\n this.assignAriaDescribedBy();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n // Item selection when the popup is open.\n this.selectionSubscription.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), map(this.itemFromEvent.bind(this)))\n .subscribe(this.onSelectionChange.bind(this)));\n // Item selection when the popup is closed | clicked | enter, and so on.\n this.selectionSubscription.add(merge(this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)), this.selectionService.onChange).pipe(map(this.itemFromEvent.bind(this)), tap(_ => this.togglePopup(false)))\n .subscribe(({ dataItem, value: newValue, newSelection }) => {\n if (newSelection) {\n this.onSelectionChange({ dataItem });\n }\n const shouldUsePrevious = !isPresent(dataItem) && this._previousDataItem;\n const shouldUseNewValue = newValue !== getter(this.value, this.valueField);\n if (shouldUsePrevious) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else if (shouldUseNewValue) {\n this.value = this.valuePrimitive ? newValue : dataItem;\n this._previousDataItem = dataItem;\n this.emitChange(this.value);\n }\n this.clearFilter();\n }));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down, this.navigationService.left.pipe(skipWhile(() => this.filterable)), this.navigationService.right.pipe(skipWhile(() => this.filterable)), this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => !isNaN(event.index)))\n .subscribe((event) => this.selectionService.select(event.index));\n this.openSubscription = this.navigationService.open.subscribe(() => this.togglePopup(true));\n this.closeSubscription = this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n });\n this.enterSubscription = this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc\n .subscribe(this.handleEscape.bind(this));\n this.filterBlurredSubscription = this.filterBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.hostElementFocused))))\n .subscribe(() => {\n this.hostElementBlurred.emit();\n });\n this._zone.runOutsideAngular(() => {\n this.componentBlurredSubscription =\n merge(this.hostElementBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.filterFocused)))), this.navigationService.tab).pipe(tap(event => event instanceof NavigationEvent && this.focus()), filter(() => this.isFocused))\n .subscribe(() => this.componentBlur());\n });\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownList on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.filterFocused) {\n // Close popup if filter is focused\n this.togglePopup(false);\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.focusComponent = this.focusComponent.bind(this);\n this.blurComponent = this.blurComponent.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.focusComponent, useCapture);\n document.addEventListener('blur', this.blurComponent, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.focusComponent, useCapture);\n document.removeEventListener('blur', this.blurComponent, useCapture);\n }\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.navigationSubscription.unsubscribe();\n this.openSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.componentBlurredSubscription.unsubscribe();\n this.filterBlurredSubscription.unsubscribe();\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n }\n itemFromEvent(event) {\n const index = event.indices[0];\n let dataItem = this.dataService.itemAt(index);\n dataItem = isPresent(dataItem) ? dataItem : this.currentOrDefault(index);\n const value = getter(dataItem, this.valueField);\n const newSelection = event.newSelection;\n return {\n dataItem,\n index,\n newSelection,\n value\n };\n }\n currentOrDefault(selectedIndex) {\n const defaultItemIndex = -1;\n if (isPresent(this.dataItem) && selectedIndex !== defaultItemIndex) {\n return this.dataItem;\n }\n else {\n return this.defaultItem;\n }\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n handleEnter() {\n if (this.isOpen) {\n this.selectionService.change(this.selectionService.focused);\n this.focus();\n }\n else {\n this.togglePopup(true);\n }\n }\n handleEscape() {\n if (isPresent(this.selectionService.selected[0])) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n else {\n this.togglePopup(false);\n this.clearFilter();\n }\n this.focus();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = \"\";\n this.cdr.markForCheck();\n this.filterChange.emit(this.filterText);\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.defaultItem && this.valueField && typeof this.defaultItem !== \"object\") {\n throw new Error(DropDownListMessages.defaultItem);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownListMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownListMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(DropDownListMessages.textAndValue);\n }\n }\n componentBlur() {\n this.isFocused = false;\n const selectionPresent = isPresent(this.selectionService.selected[0]);\n const valueHasChanged = selectionPresent && getter(this.value, this.valueField) !== getter(this.dataService.itemAt(this.selectionService.selected[0]), this.valueField);\n if (valueHasChanged ||\n hasObservers(this.close) ||\n hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n this.togglePopup(false);\n this.clearFilter();\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n const tagName = event.target.tagName.toLowerCase();\n if (tagName !== \"input\") {\n event.preventDefault();\n }\n }\n onKeyPress(event) {\n if (event.which === 0 || event.keyCode === Keys.Enter) {\n return;\n }\n let character = String.fromCharCode(event.charCode || event.keyCode);\n if (this.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === \" \") {\n event.preventDefault();\n }\n this.word += character;\n this.last = character;\n this.search();\n }\n search() {\n clearTimeout(this.typingTimeout);\n if (!this.filterable) {\n this.typingTimeout = setTimeout(() => {\n this.word = \"\";\n }, this.delay);\n this.selectNext();\n }\n }\n selectNext() {\n let data = this.dataService\n .filter((item) => isPresent(item) && !item.header && !this.disabledItemsService.isItemDisabled(item))\n .map((item) => {\n if (this.dataService.grouped) {\n return { item: item.value, itemIndex: item.offsetIndex };\n }\n return { item: item, itemIndex: this.dataService.indexOf(item) };\n });\n const isInLoop = sameCharsOnly(this.word, this.last);\n let dataLength = data.length;\n let hasSelected = !isNaN(this.selectionService.selected[0]);\n let startIndex = !hasSelected ? 0 : this.selectionService.selected[0];\n let text, index, defaultItem;\n if (this.defaultItem && !this.disabledItemsService.isItemDisabled(this.defaultItem)) {\n defaultItem = { item: this.defaultItem, itemIndex: -1 };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop && hasSelected ? 1 : 0;\n data = shuffleData(data, startIndex, defaultItem);\n index = 0;\n for (; index < dataLength; index++) {\n text = getter(data[index].item, this.textField);\n const loopMatch = Boolean(isInLoop && matchText(text, this.last, this.ignoreCase));\n const nextMatch = Boolean(matchText(text, this.word, this.ignoreCase));\n if (loopMatch || nextMatch) {\n index = data[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n this.navigate(index);\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n navigate(index) {\n this.selectionService.select(index);\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const prop = dataItem => getter(dataItem, valueField);\n let comparer;\n if (this.dataService.grouped) {\n comparer = (element) => {\n return prop(element.value) === prop(value);\n };\n }\n else {\n comparer = (element) => {\n return prop(element) === prop(value);\n };\n }\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n setState() {\n const value = this.value;\n const valueField = this.valueField;\n const textField = this.textField;\n const primitive = this.valuePrimitive;\n if (this.defaultItem) {\n const defaultValue = getter(this.defaultItem, valueField);\n const currentValue = getter(value, valueField);\n if (!isPresent(value) || (currentValue === defaultValue)) {\n this.updateState({ dataItem: this.defaultItem, confirm: true });\n this.resetSelection(-1);\n if (this.filterable && this.filterText && this.dataService.itemsCount) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n return;\n }\n }\n const resolved = this.findDataItem({ valueField, value });\n // The data and value are of same shape,\n // for example, value: 'foo', data: ['foo', 'bar']\n // or value: { value: 1, text: 'foo' }, data: [{ value: 1, text: 'foo' }].\n const ofSameType = !(primitive && textField);\n if (resolved.dataItem) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && ofSameType) {\n this.updateState({ dataItem: value });\n this.resetSelection();\n }\n else if (this._previousDataItem) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection();\n }\n }\n /**\n * @hidden\n */\n handleFilter(event) {\n this.filterChange.emit(event.target.value);\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n const trimmed = currentValue.replace(this.valueLabelId, '').trim();\n // reset the value label ID to force readers to read the new value\n this.valueLabelId = guid();\n // add to the current value - don't replace it\n const newValue = `${this.valueLabelId} ${trimmed}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n}\nDropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: { iconClass: \"iconClass\", loading: \"loading\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", defaultItem: \"defaultItem\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", filterable: \"filterable\", virtual: \"virtual\", ignoreCase: \"ignoreCase\", delay: \"delay\", valuePrimitive: \"valuePrimitive\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", focusableId: [\"id\", \"focusableId\"] }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", selectionChange: \"selectionChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"click\": \"click($event)\" }, properties: { \"class.k-dropdownlist\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.focusableId\", \"attr.dir\": \"this.dir\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\", \"attr.role\": \"this.role\", \"attr.aria-haspopup\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.aria-owns\": \"this.hostAriaOwns\", \"attr.aria-activedescendant\": \"this.hostAriaActivedescendant\", \"attr.aria-label\": \"this.hostNoDataLabel\" } }, providers: [\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent)\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: \"valueTemplate\", first: true, predicate: ValueTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoDropDownList\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ getText() }}\n \n \n \n \n \n \n \n\n \n
\n \n \n \n \n
\n
\n \n \n \n
\n {{ getDefaultItemText() }}\n
\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownList',\n providers: [\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent)\n }\n ],\n selector: 'kendo-dropdownlist',\n template: `\n \n \n \n \n \n \n {{ getText() }}\n \n \n \n \n \n \n \n\n \n
\n \n \n \n \n
\n
\n \n \n \n
\n {{ getDefaultItemText() }}\n
\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], ignoreCase: [{\n type: Input\n }], delay: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], itemTemplate: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdownlist']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], focusableId: [{\n type: Input,\n args: ['id']\n }, {\n type: HostBinding,\n args: ['attr.id']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }, {\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostAriaOwns: [{\n type: HostBinding,\n args: ['attr.aria-owns']\n }], hostAriaActivedescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], hostNoDataLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], click: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Renders the content of the custom list item in the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-customizing-the-item-content)).\n * The template context is set to the current component.\n * To get a reference to the current text that is typed by the\n * user, use the `let-customItem` directive.\n *\n * > The `CustomItemTemplate` directive can only be used with the MultiSelect component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * New Item: {{customItem}}\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n *\n */\nclass CustomItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCustomItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCustomItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomItemTemplateDirective, selector: \"[kendoMultiSelectCustomItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectCustomItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the selected tag value of the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-tag-template)).\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `TagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass TagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTagTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTagTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TagTemplateDirective, selector: \"[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the grouped tag values in the MultiSelect\n * ([see example]({% slug summarytagmode_multiselect %})).\n * The template context is set to the current component.\n * To get a reference to the current grouped\n * data items collection, use the `let-dataItems` directive.\n *\n * > The `GroupTagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItems.length}} item(s) selected\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass GroupTagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupTagTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTagTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nGroupTagTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupTagTemplateDirective, selector: \"[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTagTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Arguments for the `removeTag` event. The `removeTag` event fires when a tag is about\n * to the removed. If you cancel the event, the removal is prevented.\n */\nclass RemoveTagEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `remove` event.\n * @param dataItem - The data item or an array of data items that will be removed.\n */\n constructor(dataItem) {\n super();\n this.dataItem = dataItem;\n }\n}\n\n/**\n * @hidden\n */\nconst normalizeCheckboxesSettings = (settings) => {\n if (isObject(settings)) {\n const defaultSettings = { enabled: true, checkOnClick: true };\n return Object.assign({}, defaultSettings, settings);\n }\n return { enabled: Boolean(settings), checkOnClick: true };\n};\n\n/**\n * @hidden\n */\nclass TagListComponent {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.rounded = 'medium';\n this.fillMode = 'solid';\n /**\n * A collection with the disabled tags' indices.\n */\n this.disabledIndices = new Set();\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n this._size = 'medium';\n }\n set size(size) {\n this.renderer.removeClass(this.hostElement.nativeElement, getSizeClass('chip-list', this.size));\n if (size) {\n this.renderer.addClass(this.hostElement.nativeElement, getSizeClass('chip-list', size));\n }\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get hostId() {\n return this.id;\n }\n tagProp(tag, prop, index) {\n const propField = prop && this.getPropField(tag, prop, index);\n return getter(tag, propField);\n }\n isTagDisabled(tag, positionIndex) {\n if (this.isGroupTag(tag)) {\n /** The `positionIndex` is used to determine after how many single tags is the group tag displayed =>\n * => it is used to increment the indices inside the group tag so that we determine the actual position index\n * of each group tag item as they appear in the `value` (important to check against `disabledIndices`)\n * e.g. `disabledIndices = [0, 1]` && `tags = ['Small', ['Medium', 'Large']]` => without the incrementation with\n * `positionIndex`, the group tag would yield [0, 1] as indices, while it should yield [1, 2]\n */\n return tag.every((_tag, index) => this.disabledIndices.has(index + positionIndex));\n }\n return this.disabledIndices.has(positionIndex);\n }\n deleteTag(event, tag, index) {\n event.preventDefault();\n event.stopImmediatePropagation();\n if (!this.disabled && event.which === 1) {\n this.removeTag.emit({ tag, index });\n }\n }\n itemId(tag, index) {\n if (tag) { //because of custom values\n return this.tagPrefix + \"-\" + this.tagProp(tag, this.valueField, index);\n }\n }\n isGroupTag(tag) {\n return tag instanceof Array;\n }\n tagAriaHidden(index) {\n return isPresent(this.focused) && this.focused !== index;\n }\n getPropField(tag, prop, index) {\n // Needed for MultiSelectTree value binding (Heterogeneous Data)\n const fieldsCount = prop.length - 1;\n if (typeof prop === 'string') {\n return prop;\n }\n else if (this.valueDepth) {\n const depth = this.valueDepth[index];\n return fieldsCount < depth ? prop[fieldsCount] : prop[depth];\n }\n else {\n return prop.find(item => item in tag);\n }\n }\n}\nTagListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTagListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TagListComponent, selector: \"kendo-taglist\", inputs: { tags: \"tags\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", focused: \"focused\", template: \"template\", groupTemplate: \"groupTemplate\", disabled: \"disabled\", tagPrefix: \"tagPrefix\", id: \"id\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", disabledIndices: \"disabledIndices\" }, outputs: { removeTag: \"removeTag\" }, host: { properties: { \"class.k-input-values\": \"this.hostClasses\", \"class.k-chip-list\": \"this.hostClasses\", \"class.k-selection-multiple\": \"this.hostClasses\", \"attr.id\": \"this.hostId\" } }, ngImport: i0, template: `\n \n \n \n \n \n \n \n {{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected\n \n \n \n \n \n \n {{ tagProp(tag, textField, index) }}\n \n \n \n\n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-taglist',\n template: `\n \n \n \n \n \n \n \n {{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected\n \n \n \n \n \n \n {{ tagProp(tag, textField, index) }}\n \n \n \n\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { tags: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], focused: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tagPrefix: [{\n type: Input\n }], id: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], disabledIndices: [{\n type: Input\n }], removeTag: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-input-values']\n }, {\n type: HostBinding,\n args: ['class.k-chip-list']\n }, {\n type: HostBinding,\n args: ['class.k-selection-multiple']\n }], hostId: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\nconst MULTISELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent)\n};\nconst DEFAULT_SIZE$2 = 'medium';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_FILL_MODE$2 = 'solid';\n/**\n * Represents the [Kendo UI MultiSelect component for Angular]({% slug overview_multiselect %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass MultiSelectComponent {\n constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.dataService = dataService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.differs = differs;\n this.renderer = renderer;\n this._zone = _zone;\n this.touchEnabled = touchEnabled;\n this.listBoxId = guid();\n this.tagListId = guid();\n this.tagPrefix = \"tag-\" + guid();\n this.optionPrefix = \"option-\" + guid();\n this.focusedTagIndex = undefined;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether to close the options list of the MultiSelect after the item selection is finished\n * ([see example]({% slug openstate_multiselect %}#toc-keeping-the-options-list-open-while-on-focus)).\n * @default true\n */\n this.autoClose = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_multiselect %}) functionality of the MultiSelect.\n */\n this.filterable = false;\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to an empty array and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags\n * ([see examples]({% slug summarytagmode_multiselect %}#toc-rendering-of-tags)).\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Specifies whether the MultiSelect allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_multiselect %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback function which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n *\n * @param { Any } value - The custom value that is defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return {\n * value: Math.floor(Math.random() * (1000 - 100) + 1000), //generate unique valueField\n * text: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => {\n const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();\n const matchingValue = this.value.find(comparer);\n if (matchingValue) {\n return matchingValue;\n }\n const matchingItem = this.dataService.find(comparer);\n return matchingItem ? matchingItem : userInput;\n }));\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_multiselect %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the MultiSelect.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelect gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselecttree %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n this.role = 'combobox';\n this.initialized = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n this._placeholder = '';\n this._open = false;\n this._value = [];\n this._popupSettings = { animate: true };\n this._checkboxes = { enabled: false };\n this._isFocused = false;\n this.selectedDataItems = [];\n this.customValueSubject = new Subject();\n this.observableSubscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n this.data = [];\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n }\n /**\n * Focuses a specific item of the MultiSelect based on a provided index.\n * If there is a custom item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = this.allowCustom ? -1 : 0;\n const isInRange = minIndex <= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the MultiSelect.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * @hidden\n */\n onSearchBarFocus() {\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * Blurs the MultiSelect.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onSearchBarBlur() {\n if (!this.isFocused) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n hasObservers(this.close) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.closePopup();\n if (!(this.isOpen && this.allowCustom)) {\n this.clearFilter();\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n if (!this.allowCustom) {\n this.clearFilter();\n }\n this.closePopup();\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the MultiSelect.\n *\n * > The data has to be provided in an array-like list of items.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n //Use length instead of itemsCount because of grouping\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the MultiSelect. It can be either of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(values) {\n this._value = values ? values : [];\n if (!this.differ && this.value) {\n this.differ = this.differs.find(this.value).create();\n }\n this.valueChangeDetected = true;\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The hint which is displayed when the component is empty.\n * When the values are selected, it disappears.\n */\n set placeholder(text) {\n this._placeholder = text || '';\n }\n get placeholder() {\n return this.selectedDataItems.length ? '' : this._placeholder;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_multiselect %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Specifies whether checkboxes will be rendered before each item in the popup list.\n */\n set checkboxes(settings) {\n this._checkboxes = normalizeCheckboxesSettings(settings);\n }\n get checkboxes() {\n return this._checkboxes;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_multiselect %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Configures the popup of the MultiSelect.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_multiselect %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n get dir() {\n return this.direction;\n }\n get disabledClass() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n /**\n * @hidden\n */\n hostMousedown(event) {\n const inputElement = this.searchbar.input.nativeElement;\n if (event.button === 0) {\n if (this.isFocused && this.isOpen && event.target === inputElement) {\n return;\n }\n if (!this.touchEnabled || (this.touchEnabled && event.target.tagName !== 'SPAN')) {\n this.searchbar.focus();\n }\n this.togglePopup(!this.isOpen);\n event.preventDefault();\n }\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get customItemSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get activeDescendant() {\n const focusedTagIndex = this.focusedTagIndex;\n const focusedListIndex = this.selectionService.focused;\n let prefix;\n let item;\n if (isPresent(focusedTagIndex) && !this.isOpen) {\n item = this.tags[focusedTagIndex];\n prefix = this.tagPrefix;\n }\n else if (isPresent(focusedListIndex) && focusedListIndex !== -1 && this.isOpen) {\n item = this.dataService.itemAt(focusedListIndex);\n prefix = this.optionPrefix;\n }\n else {\n return null;\n }\n return prefix + \"-\" + getter(item, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.messageFor('noDataText');\n }\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n */\n verifySettings() {\n if (!isDevMode() || this.value.length === 0) {\n return;\n }\n if (!isArray(this.value)) {\n throw new Error(MultiselectMessages.array);\n }\n if (this.valuePrimitive === true && isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.primitive);\n }\n if (this.valuePrimitive === false && !isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(MultiselectMessages.textAndValue);\n }\n }\n /**\n * @hidden\n */\n change(event) {\n const isCustomItem = (isPresent(event.added) || isPresent(event.removed)) && (event.added === -1 || event.removed === -1);\n if (isCustomItem) {\n this.addCustomValue(this.text);\n return; // The change is emited asynchronosly.\n }\n // Existing items.\n if (isPresent(event.added)) {\n const dataItem = this.dataService.itemAt(event.added);\n const newItem = (this.valuePrimitive && isPresent(dataItem) && isPresent(dataItem[this.valueField])) ? dataItem[this.valueField] : dataItem;\n this.value = [...this.value, newItem];\n }\n if (isPresent(event.removed)) {\n const dataItem = this.dataService.itemAt(event.removed);\n const filter = (item) => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n this.value = this.value.filter(filter);\n this.selectionService.focused = event.removed;\n this.cdr.detectChanges();\n }\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n setState(value) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const selection = selectedIndices(this.value, data, this.valueField);\n this.selectionService.resetSelection(selection);\n if (this.disabledItemsService.isIndexDisabled(this.selectionService.focused)) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n if (this.isOpen && this.selectionService.focused === undefined) {\n if (this.dataService.itemsCount > 0) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else if (this.allowCustom) {\n this.selectionService.focused = -1;\n }\n }\n if (this.valuePrimitive && !this.valueField) {\n this.selectedDataItems = value.slice();\n }\n if (isObjectArray(value) || this.valuePrimitive && this.valueField) {\n this.selectedDataItems = resolveAllValues(value, data, this.valueField);\n }\n if (this.selectedDataItems.length < value.length) {\n this.selectedDataItems = value\n .map(current => {\n const dataItem = this.selectedDataItems.find(item => getter(item, this.valueField) === getter(current, this.valueField));\n return isPresent(dataItem) ? dataItem : this.resolveDataItemFromTags(current);\n })\n .filter(dataItem => isPresent(dataItem));\n }\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.disabledIndices = this.disabledItemsMapper();\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilter(text) {\n this.text = text;\n if (text && !this.isOpen) {\n this.openPopup();\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else {\n this.searchTextAndFocus(text);\n }\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n /**\n * @hidden\n */\n clearFilter() {\n if (this.filterable && this.text) {\n this.filterChange.emit(\"\");\n }\n this.text = \"\";\n /* Clearing the value from the input as the setInputSize calculation will be incorrect otherwise.\n Calling cdr.detectChanges to clear the input value as a result of property binding\n causes JAWS to read outdated tag values in IE upon tag selection for some reason. */\n this.searchbar.input.nativeElement.value = \"\";\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;\n const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;\n const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || navigateInput && !selectValue) {\n return;\n }\n const eventData = event;\n const focused = isNaN(this.selectionService.focused) ? -1 : this.selectionService.focused;\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: this.allowCustom && this.text ? -1 : 0,\n open: this.isOpen,\n originalEvent: eventData\n });\n if (action !== NavigationAction.Undefined &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag }) {\n const eventArgs = new RemoveTagEvent(tag);\n if (this.disabled || this.readonly) {\n return;\n }\n this.focus();\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n if (tag instanceof Array) {\n this.removeGroupTag(tag);\n }\n else {\n this.removeSingleTag(tag);\n }\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.clearFilter();\n const selected = this.selectionService.selected;\n this.value = this.value.filter((_item, index) => this.disabledItemsService.isIndexDisabled(selected[index]));\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n addCustomValue(text) {\n this.customValueSubject.next(text);\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n ngDoCheck() {\n const valueChanges = this.differ && this.differ.diff(this.value);\n if (valueChanges && !this.valueChangeDetected) {\n this.setState(this.value);\n }\n this.valueChangeDetected = false;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.createCustomValueStream();\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n });\n this.setState(this.value);\n this.setComponentClasses();\n this.initialized = true;\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createCustomValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes)) {\n this.setState(this.value);\n }\n }\n ngAfterViewInit() {\n this.searchbar.setInputSize();\n }\n ngOnDestroy() {\n this._toggle(false);\n this.unsubscribeEvents();\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselect %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the respective `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required for opening the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the MultiSelect.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.text = \"\";\n this.value = [];\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n // NG MODEL BINDINGS\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n onTagMapperChange() {\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.cdr.markForCheck();\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n const isOpen = () => this.isOpen;\n const isClosed = () => !this.isOpen;\n const isTagFocused = () => !this.isOpen && this.focusedTagIndex !== undefined;\n [\n this.selectionService.onChange.subscribe(this.handleItemChange.bind(this)),\n this.navigationService.esc.subscribe(this.closePopup.bind(this)),\n this.navigationService.enter.pipe(filter(isOpen)).subscribe(this.handleEnter.bind(this)),\n this.navigationService.open.subscribe(this.openPopup.bind(this)),\n this.navigationService.close.subscribe(this.handleClose.bind(this)),\n this.navigationService.up.pipe(filter(isOpen)).subscribe((event) => this.handleUp(event.index)),\n this.navigationService.home.pipe(filter(() => isClosed)).subscribe(this.handleHome.bind(this)),\n this.navigationService.end.pipe(filter(() => isClosed)).subscribe(this.handleEnd.bind(this)),\n this.navigationService.backspace.pipe(filter(isTagFocused)).subscribe(this.handleBackspace.bind(this)),\n this.navigationService.delete.pipe(filter(isTagFocused)).subscribe(this.handleDelete.bind(this)),\n this.navigationService.left.subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)),\n this.navigationService.right.subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)),\n this.navigationService.down.subscribe((event) => this.handleDownKey(event.index))\n ].forEach(s => this.observableSubscriptions.add(s));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up MultiSelect on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if ((this.isFocused || this.isOpen) && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n this.blur();\n if (this.isOpen) {\n this.togglePopup(false);\n }\n });\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.observableSubscriptions.unsubscribe();\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n removeGroupTag(dataItems) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const dataItemValues = new Set(dataItems.map(item => getter(item, this.valueField)));\n this.value = this.value.filter(value => {\n const index = selectedIndices([value], data, this.valueField)[0];\n const isDataItemDisabled = this.disabledItemsService.isIndexDisabled(index);\n return !dataItemValues.has(getter(value, this.valueField)) || isDataItemDisabled;\n });\n this.emitValueChange();\n }\n removeSingleTag(dataItem) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const index = selectedIndices([dataItem], data, this.valueField)[0];\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return;\n }\n if (isNumber(index)) {\n this.selectionService.unselect(index);\n this.selectionService.focused = index;\n this.togglePopup(false);\n }\n else { // the deleted item is not present in the source\n const filter = item => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n this.value = this.value.filter(filter);\n this.emitValueChange();\n }\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n const { selected } = this.selectionService;\n return new Set(this.selectedDataItems.reduce((indices, _item, index) => {\n if (this.disabledItemsService.isIndexDisabled(selected[index])) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n createCustomValueStream() {\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n this.customValueSubscription = this.customValueSubject.pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), this.valueNormalizer, catchError(() => {\n this.loading = false;\n this.disabled = false;\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n this.createCustomValueStream();\n return of(null);\n }))\n .subscribe((normalizedValue) => {\n this.loading = false;\n this.disabled = false;\n if (isPresent(normalizedValue)) { // if valueNormalizer returns `null` or `undefined` custom value is discarded\n const newValue = this.valuePrimitive ? getter(normalizedValue, this.valueField) : normalizedValue;\n const itemIndex = this.dataService.indexOf(newValue);\n const customItem = itemIndex === -1;\n if (this.value.indexOf(newValue) === -1) {\n this.tags = this.tagMapper([...this.selectedDataItems, normalizedValue]);\n if (!customItem) {\n this.selectionService.add(itemIndex);\n }\n else {\n this.value = [...this.value, newValue];\n }\n }\n else {\n if (!customItem && this.selectionService.isSelected(itemIndex)) {\n this.selectionService.unselect(itemIndex);\n this.selectionService.focused = itemIndex;\n }\n else {\n this.value = this.value.filter(item => getter(item, this.valueField) !== newValue);\n }\n }\n this.emitValueChange();\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n });\n }\n handleItemChange(event) {\n this.change(event);\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleEnter(event) {\n const service = this.selectionService;\n const focusedIndex = this.selectionService.focused;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focusedIndex === -1) {\n if (this.allowCustom && this.text) {\n this.addCustomValue(this.text);\n }\n return; // Clear filter & close are done at customValueSubscription due to race conditions.\n }\n if (service.isSelected(focusedIndex)) {\n service.unselect(focusedIndex);\n service.focused = focusedIndex;\n }\n else {\n service.add(focusedIndex);\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleClose() {\n this.closePopup();\n this.searchbar.focus();\n }\n handleEnd() {\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome() {\n this.focusedTagIndex = 0;\n }\n handleUp(index) {\n this.selectionService.focused = index;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n this.handleRemoveTag({ tag: this.tags[this.tags.length - 1] });\n this.searchbar.focus();\n }\n }\n handleDelete() {\n this.handleRemoveTag({ tag: this.tags[this.focusedTagIndex] });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n handleLeftKey() {\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleDownKey(index) {\n if (this.isOpen) {\n this.selectionService.focused = index || this.firstFocusableIndex(0);\n }\n else {\n this.openPopup();\n }\n }\n handleRightKey() {\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n }\n findIndex(text, startsFrom = 0) {\n let itemText;\n text = text.toLowerCase();\n let index = this.dataService.findIndex(item => {\n if (this.dataService.grouped) {\n itemText = getter(item.value, this.textField);\n }\n else {\n itemText = getter(item, this.textField);\n }\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return text && itemText.startsWith(text);\n }, startsFrom);\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index + 1 > this.dataService.itemsCount) ? -1 : this.findIndex(text, index + 1);\n }\n else {\n return index;\n }\n }\n searchTextAndFocus(text) {\n const index = this.findIndex(text);\n this.selectionService.focused = index;\n }\n closePopup() {\n this.togglePopup(false);\n this.focusedTagIndex = undefined;\n }\n openPopup() {\n this.togglePopup(true);\n this.focusedTagIndex = undefined;\n }\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.togglePopup(false);\n });\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n }\n resolveDataItemFromTags(value) {\n if (!(this.tags && this.tags.length && isPresent(value))) {\n return undefined;\n }\n // Flattening the tags array in case of a summary tag occurrence.\n const tags = this.tags.reduce((acc, tag) => {\n const items = isArray(tag) ? tag : [tag];\n acc.push(...items);\n return acc;\n }, []);\n return tags.find(tag => getter(tag, this.valueField) === getter(value, this.valueField));\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n const nextIndex = index + 1;\n return (nextIndex < maxIndex) ? this.firstFocusableIndex(nextIndex) : undefined;\n }\n else {\n return index;\n }\n }\n nextTick(f) {\n this._zone.runOutsideAngular(() => {\n // Use `setTimeout` instead of a resolved promise\n // because the latter does not wait long enough.\n setTimeout(() => this._zone.run(f));\n });\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: DataService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectComponent, selector: \"kendo-multiselect\", inputs: { focusableId: \"focusableId\", autoClose: \"autoClose\", loading: \"loading\", data: \"data\", value: \"value\", valueField: \"valueField\", textField: \"textField\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", placeholder: \"placeholder\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", checkboxes: \"checkboxes\", readonly: \"readonly\", filterable: \"filterable\", virtual: \"virtual\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", valuePrimitive: \"valuePrimitive\", clearButton: \"clearButton\", tagMapper: \"tagMapper\", allowCustom: \"allowCustom\", valueNormalizer: \"valueNormalizer\" }, outputs: { filterChange: \"filterChange\", valueChange: \"valueChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\", removeTag: \"removeTag\" }, host: { listeners: { \"mousedown\": \"hostMousedown($event)\" }, properties: { \"class.k-multiselect\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"attr.dir\": \"this.dir\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-loading\": \"this.isLoading\", \"attr.role\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\" } }, providers: [\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"customItemTemplate\", first: true, predicate: CustomItemTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"tagTemplate\", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: \"groupTagTemplate\", first: true, predicate: GroupTagTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoMultiSelect\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ text }}\n \n
\n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: TagListComponent, selector: \"kendo-taglist\", inputs: [\"tags\", \"textField\", \"valueField\", \"valueDepth\", \"focused\", \"template\", \"groupTemplate\", \"disabled\", \"tagPrefix\", \"id\", \"size\", \"rounded\", \"fillMode\", \"disabledIndices\"], outputs: [\"removeTag\"] }, { type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelect',\n providers: [\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)\n }\n ],\n selector: 'kendo-multiselect',\n template: `\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ text }}\n \n
\n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: DataService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], loading: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valueField: [{\n type: Input\n }], textField: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], filterChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], removeTag: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], customItemTemplate: [{\n type: ContentChild,\n args: [CustomItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-multiselect']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n\n/**\n * Renders the column cell content of the MultiColumnComboBox. To define a column cell template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnCellTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) and data item are available as context variables:\n *\n * - `let-dataItem=\"dataItem\"` (`any`) - The current data item. Also available as implicit context variable.\n * - `let-column=\"column\"` ([`ColumnComponent`]({% slug api_dropdowns_comboboxcolumncomponent %})) - The current column configuration obejct.\n */\nclass ColumnCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nColumnCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnCellTemplateDirective, selector: \"[kendoMultiColumnComboBoxColumnCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the column header content of the MultiColumnComboBox. To define a column header template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnHeaderTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) is available as implicit context variable.\n */\nclass ColumnHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nColumnHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnHeaderTemplateDirective, selector: \"[kendoMultiColumnComboBoxColumnHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\nclass ComboBoxColumnComponent {\n constructor() {\n /**\n * Sets the visibility of the column.\n *\n * @default false\n */\n this.hidden = false;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n }\n}\nComboBoxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nComboBoxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComboBoxColumnComponent, selector: \"kendo-combobox-column\", inputs: { field: \"field\", title: \"title\", width: \"width\", hidden: \"hidden\", style: \"style\", headerStyle: \"headerStyle\", class: \"class\", headerClass: \"headerClass\", media: \"media\" }, queries: [{ propertyName: \"cellTemplate\", first: true, predicate: ColumnCellTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: ColumnHeaderTemplateDirective, descendants: true }], ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-combobox-column',\n template: ''\n }]\n }], propDecorators: { cellTemplate: [{\n type: ContentChild,\n args: [ColumnCellTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [ColumnHeaderTemplateDirective, { static: false }]\n }], field: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], hidden: [{\n type: Input\n }], style: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], class: [{\n type: Input\n }], headerClass: [{\n type: Input\n }], media: [{\n type: Input\n }] } });\n\n/**\n * Persists the intially resolved scrollbar width value.\n */\nlet SCROLLBAR_WIDTH;\n/**\n * @hidden\n *\n * Gets the default scrollbar width accoring to the current environment.\n */\nconst scrollbarWidth = () => {\n // calculate scrollbar width only once, then return the memoized value\n if (isNaN(SCROLLBAR_WIDTH)) {\n const div = document.createElement('div');\n div.style.cssText = 'overflow: scroll; overflow-x: hidden; zoom: 1; clear: both; display: block;';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n SCROLLBAR_WIDTH = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return SCROLLBAR_WIDTH;\n};\n/**\n * Checks if all columns have a valid user-defined width.\n */\nconst allColumnsWidthsSet = (columns) => {\n if (!isPresent(columns) || columns.length === 0) {\n return false;\n }\n return columns.toArray().every(column => !isNaN(column.width) && column.width > 0);\n};\n/**\n * @hidden\n *\n * Calculates the row width according to the passed columns width configuration.\n * Hidden columns and such that don't match the provided media query are ignored.\n * If some of the columns don't have a preset width or have an invalid width value, the function returns `null`.\n */\nconst getRowWidthFromColumnsMeta = (columns) => {\n if (!allColumnsWidthsSet(columns)) {\n return null;\n }\n const bordersWidth = 2;\n const initialRowWidht = scrollbarWidth() + bordersWidth;\n return columns.reduce((totalWidth, column) => {\n if (!column.hidden && column.matchesMedia) {\n totalWidth += parseInt(column.width, 10);\n }\n return totalWidth;\n }, initialRowWidht);\n};\n\n/**\n * Represents the [Kendo UI MultiColumnComboBox component for Angular]({% slug overview_multicolumncombobox %}).\n */\nclass MultiColumnComboBoxComponent extends ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, wrapper, touchEnabled) {\n super(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, touchEnabled);\n /**\n * @hidden\n */\n this.hostClasses = true;\n this.removeWindowResizeListener = noop;\n // the row height in @progress/kendo-theme-default\n this.defaultVirtualItemHeight = 36;\n // use a smaller virtual page size as columns with multiple cells can cause poor performance\n this.defaultVirtualPageSize = 30;\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n set header(header) {\n // updates the header padding on initial render as the resize senzor doesn't kick in as early\n this.updateHeaderPadding(header && header.nativeElement);\n }\n get popupWidth() {\n const wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n const min = `${wrapperOffsetWidth}px`;\n const width = this.popupSettings.width || getRowWidthFromColumnsMeta(this.columns) || wrapperOffsetWidth;\n const max = isNaN(width) ? width : `${width}px`;\n return { min, max };\n }\n /**\n * @hidden\n */\n get tableSizeClass() {\n return `${this.size ? getSizeClass('table', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n return [\n 'k-popup',\n 'k-dropdowngrid-popup'\n ].concat(this.popupSettings.popupClass || []);\n }\n ngAfterViewInit() {\n this.updateColumnsMediaState();\n this.addWindowResizeListener();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeWindowResizeListener();\n }\n /**\n * @hidden\n */\n textFrom(dataItem, field) {\n return getter(dataItem, field);\n }\n /**\n * @hidden\n *\n * Adds or removes a padding value at the end of the header container equal to the size of the scrollbar.\n * As when the items container has a scrollbar, the column headers and the cells are misaligned.\n * When the container has a scrollbar, the padding style is added, and when there is none - it is removed.\n */\n updateHeaderPadding(header) {\n if (!isPresent(header)) {\n return;\n }\n // the scrollbar is rendered on the left in rtl\n const headerPaddingPosition = this.localization.rtl ? 'padding-left' : 'padding-right';\n if (this.optionsList.hasScrollbar() && scrollbarWidth() > 0) {\n this.renderer.setStyle(header, headerPaddingPosition, `${scrollbarWidth()}px`);\n }\n else {\n this.renderer.removeStyle(header, headerPaddingPosition);\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(this.data) && this.data.length > 0 && this.data.some(item => !isObject(item))) {\n throw new Error(MultiColumnComboBoxMessages.data);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiColumnComboBoxMessages.textAndValue);\n }\n super.verifySettings();\n }\n addWindowResizeListener() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.zone.runOutsideAngular(() => this.removeWindowResizeListener = this.renderer.listen(window, 'resize', this.updateColumnsMediaState.bind(this)));\n }\n updateColumnsMediaState() {\n if (!(isPresent(this.columns) && isDocumentAvailable())) {\n return;\n }\n this.columns.forEach(column => {\n const matchesMedia = !column.media || window.matchMedia(column.media).matches;\n if (column.matchesMedia !== matchesMedia) {\n column.matchesMedia = matchesMedia;\n if (this.isOpen) {\n // enter the zone only if the popup is actually open\n // update its width in case it's dependent on the columns' width\n this.zone.run(() => this.popupRef.popupElement.style.width = this.popupWidth.max);\n }\n }\n });\n }\n}\nMultiColumnComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiColumnComboBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TOUCH_ENABLED }], target: i0.ɵɵFactoryTarget.Component });\nMultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiColumnComboBoxComponent, selector: \"kendo-multicolumncombobox\", host: { properties: { \"class.k-dropdowngrid\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\" } }, providers: [\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }\n ], queries: [{ propertyName: \"columns\", predicate: ComboBoxColumnComponent }], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n
\n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n
\n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {{ column.title || column.field }}\n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n \n {{ textFrom(dataItem, column.field) }}\n \n \n \n \n
\n
\n\n \n \n \n\n \n \n \n
\n \n
{{ messageFor('noDataText') }}
\n
\n \n\n \n \n
\n \n \n \n \n \n \n
\n \n \n
\n
\n
\n\n \n\n
\n\n \n \n\n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i11.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }\n ],\n selector: 'kendo-multicolumncombobox',\n template: `\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n
\n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {{ column.title || column.field }}\n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n \n {{ textFrom(dataItem, column.field) }}\n \n \n \n \n \n
\n\n \n \n \n\n \n \n \n
\n \n
{{ messageFor('noDataText') }}
\n
\n \n\n \n \n
\n \n \n \n \n \n \n
\n \n \n
\n
\n
\n\n \n\n
\n\n \n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowngrid']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], columns: [{\n type: ContentChildren,\n args: [ComboBoxColumnComponent]\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }] } });\n\n/**\n * Renders the content of each node in the DropDownTree. To define a node template, nest an `` tag\n * with the `kendoDropDownTreeNodeTemplate` directive inside the `` tag.\n *\n * The current data item and hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - The current data item. Available as implicit context variable.\n * - `let-index=\"index\"` (`string`) - The current item hierarchical index.\n */\nclass NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NodeTemplateDirective, selector: \"[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst DEFAULT_POPUP_SETTINGS$1 = { animate: true };\nconst hasChildren$1 = () => false;\nconst fetchChildren$1 = () => of([]);\nconst itemDisabled$1 = () => false;\nconst isNodeVisible$1 = () => true;\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).\n */\nclass DropDownTreeComponent {\n constructor(wrapper, popupService, navigationService, renderer, _zone, cdr, localization, touchEnabled) {\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this._zone = _zone;\n this.cdr = cdr;\n this.localization = localization;\n this.touchEnabled = touchEnabled;\n this.hostClasses = true;\n this.role = 'listbox';\n this.ariaHasPopup = 'tree';\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_ddt %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren$1;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren$1;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddt %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n this.valuePrimitive = false;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled$1;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible$1;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the DropDownTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually]({% slug filtering_ddt %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`]({% slug api_dropdowns_dropdowntreehierarchybindingdirective %}) and [`kendoDropDownTreeFlatBinding`]({% slug api_dropdowns_dropdowntreeflatbindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * @hidden\n */\n this.filter = '';\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * @hidden\n */\n this.selectedKeys = [];\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n /**\n * @hidden\n *\n * Used to associate the value label with the wrapper via aria-describedby.\n */\n this.valueLabelId = `k-${guid$1()}`;\n this._popupSettings = DEFAULT_POPUP_SETTINGS$1;\n this._tabindex = 0;\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = [];\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n get isReadonly() {\n return this.readonly;\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n this.navigationService.process({\n originalEvent: eventData\n });\n }\n set treeview(treeview) {\n if (treeview) {\n if (this.isFocused && !this.filterable || this.touchEnabled) {\n treeview.focus();\n }\n // the treeview animations are initially disabled (we don't want expand animations during popup opening)\n // re-enables the animations for user interaction\n treeview.animate = true;\n this._treeview = treeview;\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Sets the data of the DropDownTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the DropDownTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Keeps the current `dataItem` object in order to resolve selection.\n * Needs to be provided when `value` is bound in and `valuePrimitive` is set to true.\n */\n set dataItem(item) {\n this._dataItem = item;\n this.setState();\n }\n get dataItem() {\n return this._dataItem ? this._dataItem : this.value;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = Number(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.assignAriaDescribedBy();\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !this.text && !this.placeholder;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n }\n else {\n this.destroyPopup();\n }\n }\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.togglePopup(false);\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * Focuses a specific item of the DropDownTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n let isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Focuses the DropDownTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Resets the value of the DropDownTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = undefined;\n this.dataItem = undefined;\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddt %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n onSelectionChange({ dataItem, index }) {\n this.valueDepth = index.split('_').length - 1;\n const valueField = this.getField(this.valueField, dataItem);\n const newValue = this.valuePrimitive ?\n getter$1(valueField)(dataItem) :\n dataItem;\n const shouldUpdateValue = newValue !== this.value;\n if (shouldUpdateValue) {\n this.value = newValue;\n this.dataItem = dataItem;\n this.emitValueChange(this.value);\n }\n this.togglePopup(false);\n this.focus();\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.value = undefined;\n this.dataItem = undefined;\n this.clearState();\n this.valueChange.emit(undefined);\n this.emitValueChange();\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n // If the user resets the value by providing null/undefined we need to reset the `dataItem`\n // Because upon initialization of the component the `writeValue` is being called twice -\n // first time with `null` value regardless of sync/async value - an extra check is added to\n // distinguish between client reset and initial phanotm 'null' value\n if (!isPresent(value) && isPresent(this.value)) {\n this.dataItem = null;\n }\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n this.filterChange.next(input.value);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownTreeMessages.primitive);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.dataItem !== \"object\") {\n throw new Error(DropDownTreeMessages.dataItem);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownTreeMessages.object);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(DropDownTreeMessages.textAndValue);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && isPresent(this.value) && !isPresent(this.valueDepth)) {\n throw new Error(DropDownTreeMessages.valueDepth);\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n getText(textField, dataItem) {\n if (isPresent(dataItem) && isPresent(textField)) {\n const field = this.getField(textField, dataItem);\n return getter$1(field)(dataItem);\n }\n return null;\n }\n /**\n * @hidden\n *\n * Determines the `valueField` and `textField` for a specific level in the data set\n * @param field - the field value (string | string[])\n * @param value - current value\n */\n getField(field, value) {\n const fieldsCount = field.length - 1;\n if (typeof field === 'string') {\n // If the `valueField` | `textField` is the same for all levels\n return field;\n }\n else if (isPresent(this.valueDepth)) {\n // When `valueDepth` can be defined from the index on selectionChange or provided by the user\n return fieldsCount < this.valueDepth ? field[fieldsCount] : field[this.valueDepth];\n }\n else {\n // Fallback: Look to find a match of each field in the current data item\n // Side effect may occur if all of the listed fields are present in the data item\n return field.find(item => item in value);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n handleEscape() {\n this.togglePopup(false);\n this.focus();\n }\n setState() {\n if (isPresent(this.value) && isPresent(this.dataItem) && isPresent(this.valueField)) {\n this.text = this.getText(this.textField, this.dataItem);\n const valueField = this.getField(this.valueField, this.dataItem);\n this.selectBy = valueField;\n this.selectedKeys = [getter$1(valueField)(this.dataItem)];\n }\n else {\n this.clearState();\n }\n this.cdr.markForCheck();\n }\n clearState() {\n this.text = undefined;\n this.selectedKeys = [];\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n }), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), this.navigationService.esc\n .subscribe(() => this.handleEscape()), this.navigationService.tab.subscribe(() => this.focus()), this.navigationService.down.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n }), this.navigationService.up.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (this.filterable && this.treeview['navigationService']['activeIndex'] === '0') {\n this.filterInput.nativeElement.focus();\n }\n }));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownTree on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.isOpen) {\n this.treeview.blur();\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n // add to the current value - don't replace it (the aria-describedby is used by the FormField component as well)\n const newValue = `${this.valueLabelId} ${currentValue.trim()}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n}\nDropDownTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.ElementRef }, { token: i2.PopupService }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeComponent, selector: \"kendo-dropdowntree\", inputs: { loading: \"loading\", clearButton: \"clearButton\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", dataItem: \"dataItem\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", tabindex: \"tabindex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", itemDisabled: \"itemDisabled\", isNodeExpanded: \"isNodeExpanded\", isNodeVisible: \"isNodeVisible\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", focusableId: \"focusableId\" }, outputs: { open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\", filterChange: \"filterChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-dropdowntree\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.id\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.role\": \"this.role\", \"attr.aria-haspopup\": \"this.ariaHasPopup\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\" } }, providers: [\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }\n ], queries: [{ propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"nodeTemplate\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"valueTemplate\", first: true, predicate: ValueTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"treeview\", first: true, predicate: [\"treeview\"], descendants: true }, { propertyName: \"filterInput\", first: true, predicate: [\"filterInput\"], descendants: true }], exportAs: [\"kendoDropDownTree\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ text || placeholder }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n
\n \n `, isInline: true, components: [{ type: i1$1.TreeViewComponent, selector: \"kendo-treeview\", inputs: [\"filterInputPlaceholder\", \"animate\", \"nodeTemplate\", \"loadMoreButtonTemplate\", \"trackBy\", \"nodes\", \"textField\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"navigable\", \"children\", \"loadOnDemand\", \"filterable\", \"filter\", \"size\"], outputs: [\"childrenLoaded\", \"blur\", \"focus\", \"expand\", \"collapse\", \"nodeDragStart\", \"nodeDrag\", \"filterStateChange\", \"nodeDrop\", \"nodeDragEnd\", \"addItem\", \"removeItem\", \"checkedChange\", \"selectionChange\", \"filterChange\", \"nodeClick\", \"nodeDblClick\"], exportAs: [\"kendoTreeView\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.SelectDirective, selector: \"[kendoTreeViewSelectable]\", inputs: [\"isSelected\", \"selectBy\", \"kendoTreeViewSelectable\", \"selectedKeys\"], outputs: [\"selectedKeysChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownTree',\n providers: [\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }\n ],\n selector: 'kendo-dropdowntree',\n template: `\n \n \n \n \n \n \n {{ text || placeholder }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n
\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.PopupService }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaHasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], loading: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], focusableId: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass BaseCheckDirective {\n addItem(item) {\n if (this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign(Object.assign({}, item), { level });\n this.checkedItems.push(candidate);\n this.checkedKeys.add(this.getKey(candidate));\n }\n removeItem(item) {\n if (!this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign(Object.assign({}, item), { level });\n this.checkedItems = this.checkedItems\n .filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));\n this.checkedKeys.delete(this.getKey(candidate));\n }\n isItemChecked(item) {\n const level = item.index.split('_').length - 1;\n item.level = level;\n return this.checkedKeys.has(this.getKey(item));\n }\n updateItems() {\n this.checkedItems = this.checkedItems || [];\n this.checkedKeys = new Set(this.checkedItems.map(item => this.getKey(item)));\n }\n /**\n * Adds the item's depth to the item's value to allow duplicate values on different levels.\n *\n * @param item - The checked key.\n * @returns { string } - A string key consisting of the item's `valueField` value and its depth.\n */\n getKey(item) {\n if (isArray(this.valueField)) {\n return valueFrom(item, this.valueField) + '_' + item.level;\n }\n return valueFrom(item, this.valueField);\n }\n}\nBaseCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseCheckDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nBaseCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseCheckDirective, inputs: { valueField: \"valueField\", checkedItems: \"checkedItems\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseCheckDirective, decorators: [{\n type: Directive\n }], propDecorators: { valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass CheckAllDirective extends BaseCheckDirective {\n constructor(element, zone, cdr, renderer) {\n super();\n this.element = element;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n }\n handleChange(event) {\n // Need to store the current checkbox state at the moment of click\n this.currentCheckedState = event.checked;\n this.currentIndeterminateState = this.isIndeterminate;\n this.treeview.nodes.map((_value, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n this.checkNode(itemLookup);\n });\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n get isIndeterminate() {\n const isIndeterminate = this.treeview.nodes.some((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.someChecked(itemLookup);\n });\n return this.isChecked ? false : isIndeterminate;\n }\n get isChecked() {\n const isChecked = this.treeview.nodes.every((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.allChecked(itemLookup);\n });\n return isChecked;\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n this.renderer.setProperty(this.element.nativeElement, 'checked', this.isChecked);\n this.renderer.setProperty(this.element.nativeElement, 'indeterminate', this.isIndeterminate);\n }\n }\n ngOnInit() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n checkNode(itemLookup) {\n if (this.treeview.isDisabled(itemLookup.item.dataItem, itemLookup.item.index)) {\n return;\n }\n const pendingCheck = [];\n const filter = (item) => this.treeview.isVisible(item.dataItem, item.index) &&\n !this.treeview.isDisabled(item.dataItem, item.index);\n pendingCheck.push(itemLookup.item);\n fetchDescendentNodes(itemLookup, filter)\n .forEach(lookup => pendingCheck.push(lookup.item));\n pendingCheck.forEach(item => {\n if (this.currentIndeterminateState) {\n if (this.lastAction === 'check') {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n return;\n }\n if (this.currentCheckedState) {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n });\n }\n allChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.every(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) && this.allChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked && this.isItemChecked(lookup.item);\n }\n someChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.some(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) || this.someChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked || this.isItemChecked(lookup.item);\n }\n}\nCheckAllDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckAllDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nCheckAllDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckAllDirective, selector: \"[checkAll]\", inputs: { lastAction: \"lastAction\", treeview: \"treeview\", checkedItems: \"checkedItems\", valueField: \"valueField\", focused: [\"checkAll\", \"focused\"] }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, host: { listeners: { \"change\": \"handleChange($event.target)\" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckAllDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: '[checkAll]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { lastAction: [{\n type: Input\n }], treeview: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }], valueField: [{\n type: Input\n }], focused: [{\n type: Input,\n args: ['checkAll']\n }], checkedItemsChange: [{\n type: Output\n }], handleChange: [{\n type: HostListener,\n args: ['change', ['$event.target']]\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass CheckDirective extends BaseCheckDirective {\n constructor(treeView) {\n super();\n this.treeView = treeView;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe(this.handleCheckedChange.bind(this)));\n this.treeView.isChecked = this.getCheckedState.bind(this);\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkable)) {\n this.toggleCheckOnClick();\n }\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n getCheckedState(dataItem, index) {\n if (this.isItemChecked({ dataItem, index })) {\n return 'checked';\n }\n else if (this.checkable.checkChildren && this.isItemIndeterminate(this.treeView.itemLookup(index))) {\n return 'indeterminate';\n }\n else {\n return 'none';\n }\n }\n handleCheckedChange(node) {\n this.checkNode(node);\n // parents should be checked if `checkChildren` is set to `true` (single config option for both)\n const checkParents = this.checkable.checkChildren;\n if (checkParents) {\n this.checkParents(node.parent);\n }\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.checkable.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick\n .pipe(filter(event => event.type === 'click'))\n .subscribe(event => {\n const lookup = this.treeView.itemLookup(event.item.index);\n this.handleCheckedChange(lookup);\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(lookup) {\n if (this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index)) {\n return;\n }\n const target = lookup.item;\n const pendingCheck = [target];\n // TODO: extract in a separate `checkChildren` method?\n if (this.checkable.checkChildren) {\n const filter = (item) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index);\n fetchDescendentNodes(lookup, filter)\n .forEach(lookup => pendingCheck.push(lookup.item));\n }\n const shouldCheck = !this.isItemChecked(target);\n pendingCheck.forEach(item => {\n if (shouldCheck) {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n });\n }\n checkParents(parent) {\n let currentParent = parent;\n while (currentParent) {\n const allChildrenSelected = currentParent.children.every(item => this.isItemChecked(item));\n if (allChildrenSelected) {\n this.addItem(currentParent.item);\n }\n else {\n this.removeItem(currentParent.item);\n }\n currentParent = currentParent.parent;\n }\n }\n isItemIndeterminate(lookup) {\n const children = lookup.children;\n if (!Array.isArray(children) || children.length === 0) {\n return false;\n }\n let index = 0;\n let child = children[index];\n while (isPresent(child)) {\n if (this.isItemChecked(child.item) || this.isItemIndeterminate(child)) {\n return true;\n }\n index += 1;\n child = children[index];\n }\n return false;\n }\n}\nCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, deps: [{ token: i1$1.TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckDirective, selector: \"[kendoMultiSelectTreeCheckable]\", inputs: { checkable: \"checkable\", valueField: \"valueField\", checkedItems: \"checkedItems\" }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeCheckable]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.TreeViewComponent }]; }, propDecorators: { checkable: [{\n type: Input\n }], valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }], checkedItemsChange: [{\n type: Output\n }] } });\n\nconst DEFAULT_POPUP_SETTINGS = { animate: true };\nconst DEFAULT_CHECKABLE_SETTINGS = { checkChildren: true, checkOnClick: true };\nconst hasChildren = () => false;\nconst fetchChildren = () => of([]);\nconst itemDisabled = () => false;\nconst isNodeVisible = () => true;\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_ROUNDED = 'medium';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).\n */\nclass MultiSelectTreeComponent {\n constructor(wrapper, popupService, renderer, navigationService, _zone, localization, cdr, touchEnabled) {\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.renderer = renderer;\n this.navigationService = navigationService;\n this._zone = _zone;\n this.localization = localization;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled;\n this.hostClasses = true;\n this.role = 'combobox';\n this.ariaHasPopup = 'tree';\n /**\n * Sets the levels in the data set where the values can be found when `valueField` is an Array.\n * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.\n */\n this.valueDepth = [];\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_multiselecttree %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be a primitive one.\n */\n this.valuePrimitive = false;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default false\n */\n this.loadOnDemand = false;\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n * @default true\n */\n this.clearButton = true;\n /**\n * Renders the built-in input element for filtering the MultiSelectTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the MultiSelectTree manually]({% slug filtering_multiselecttree %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoMultiSelectTreeHierarchyBinding`]({% slug api_dropdowns_multiselecttreehierarchybindingdirective %}) and [`kendoMultiSelectTreeFlatBinding`]({% slug api_dropdowns_multiselecttreeflatbindingdirective %}) directives.\n * @default false\n */\n this.filterable = false;\n /**\n * If `checkАll` is set to `true` and the checkboxes are enabled, a tri-state checkbox appears above the embedded treeview.\n * Clicking the checkbox checks or unchecks all enabled items of the treeview that are loaded.\n * @default false\n */\n this.checkAll = false;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags.\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Fires each time the user focuses the MultiSelectTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelectTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_multiselecttree %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselect %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.checkedItems = [];\n /**\n * @hidden\n */\n this.checkBy = (item) => item;\n /**\n * @hidden\n */\n this.showAfter = 0;\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n this.tagListId = guid$1();\n this.tagPrefix = \"tag-\" + guid$1();\n this.focusedTagIndex = undefined;\n this._value = [];\n this._tabindex = 0;\n this._popupSettings = DEFAULT_POPUP_SETTINGS;\n this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = [];\n this.lastAction = 'check';\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeFocusEvents();\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n get isReadonly() {\n return this.readonly;\n }\n get ariaDescribedBy() {\n return this.tagListId;\n }\n get ariaActiveDescendant() {\n return this.focusedTagId;\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n const action = this.navigationService.process({\n originalEvent: eventData\n });\n if (action === NavigationAction.Open) {\n eventData.preventDefault();\n }\n }\n set treeview(treeview) {\n this._treeview = treeview;\n if (treeview) {\n // If filtering is enabled, focus the TreeView on mobile devices instead of the filter input\n if (this.isFocused && !this.filterable && !this.checkAll || this.touchEnabled) {\n treeview.focus();\n }\n /**\n * the treeview animations are initially disabled (we don't want expand animations during popup opening)\n * re-enables the animations for user interaction\n * The Promise is required to properly change the `animate` property when\n * the popup is appended to a container and opened upon initialization.\n * Otherwise, the \"Expression has changed...\" type error will be thrown.\n */\n Promise.resolve(null).then(() => this.treeview.animate = true);\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = parseNumber(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Configures the popup of the MultiSelectTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS, settings);\n // `detectChanges` needed, otherwise upon value initialization and `appendTo` property\n // an error is thrown => ExpressionChangedAfterItHasBeenCheckedError\n this.cdr.detectChanges();\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines the checkable settings of the MultiSelecTree nodes.\n * If no value is provided, the default [`CheckableSettings`]({% slug api_dropdowns_multiselecttreecheckablesettings %}) are applied.\n */\n set checkableSettings(settings) {\n this._checkableSettings = Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings);\n }\n get checkableSettings() {\n return this._checkableSettings;\n }\n /**\n * Sets the data of the MultiSelectTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the MultiSelectTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(value) {\n this._value = value ? value : [];\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Keeps the current `dataItems` object in order to resolve selection.\n * Needs to be provided when when programmatically setting a `value` and `valuePrimitive` is set to `true`.\n */\n set dataItems(items) {\n this._dataItems = (items || []).map((item, index) => {\n if (hasProps(item, ['dataItem', 'index', 'level'])) {\n return item;\n }\n return {\n dataItem: item,\n index: null,\n level: this.valueDepth[index] || 0\n };\n });\n this.setState();\n }\n get dataItems() {\n return this._dataItems || this.value.map((value, index) => ({\n dataItem: value,\n index: null,\n level: this.valueDepth[index] || 0\n }));\n }\n /**\n * @hidden\n */\n get focusedTagId() {\n if (!isPresent(this.focusedTagIndex) || this.isOpen) {\n return null;\n }\n const dataItem = this.tags[this.focusedTagIndex];\n return `${this.tagPrefix}-${valueFrom({ dataItem }, this.valueField)}`;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n get isTagFocused() {\n return !this.isOpen && this.focusedTagIndex !== undefined;\n }\n get isTreeViewActive() {\n return this.treeview && this.treeview.isActive;\n }\n get isWrapperActive() {\n return document.activeElement === this.wrapper.nativeElement;\n }\n get isFilterActive() {\n return this.filterInput && document.activeElement === this.filterInput.nativeElement;\n }\n get isCheckAllActive() {\n return this.checkAllInput && document.activeElement === this.checkAllInput.nativeElement;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', String(this.isOpen));\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n if (anyChanged(['valueDepth', 'value', 'dataItems'], changes, false)) {\n if (changes.value && !changes.dataItems && !this.valuePrimitive) {\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n this.dataItems = this.value;\n }\n else {\n // Re-map the dataItems because `valueDepth` is not yet available when the check directive parses the items\n this.dataItems = this.dataItems.map((item, index) => (Object.assign(Object.assign({}, item), { level: this.valueDepth[index] || 0 })));\n }\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !Boolean(this.placeholder) && (!isPresent(this.value) || this.value.length === 0);\n }\n /**\n * Focuses the MultiSelectTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the MultiSelectTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Focuses a specific item of the MultiSelectTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n const isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Resets the value of the MultiSelectTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = [];\n this.dataItems = [];\n this.valueDepth = [];\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselecttree %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n // Re-focus the treeview if `close` is prevented\n if (this.isOpen && this.treeview) {\n if (this.lastNodeOnFocus) {\n this.lastNodeOnFocus.setAttribute('tabindex', '0');\n }\n this.treeview.focus();\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n this.togglePopup(false);\n if (hasObservers(this.onBlur) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n }\n /**\n * @hidden\n */\n handleNodeClick(node) {\n if (!this.isFocused) {\n // Re-focus the MultiSelectTree when popup close is prevented and a node is clicked\n // On click the focus should be on the clicked element which is why we need to update the lastNodeOnFocus\n const parent = node.originalEvent.target.parentElement.parentElement;\n this.lastNodeOnFocus = parent;\n this.focus();\n }\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n this._zone.run(() => {\n this.focusedTagIndex = undefined;\n });\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n }\n else {\n this.destroyPopup();\n }\n }\n else {\n this.removeTreeViewFromTabOrder();\n }\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n handleCheckedItemsChange(items) {\n this.valueDepth = items.map(item => item.level);\n this.lastAction = items.length > this.dataItems.length ? 'check' : 'uncheck';\n this.dataItems = items.slice();\n this.updateValue(this.dataItems);\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag, index }) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventArgs = new RemoveTagEvent(tag);\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n // Remove tags based on their position index\n if (tag instanceof Array) {\n // Remove group tag\n this.dataItems = this.dataItems.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n }\n else {\n // Remove single tag\n this.dataItems = this.dataItems.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n }\n this.updateValue(this.dataItems);\n // focus the wrapper if the component is not focused - the floating label reacts to focus/blur\n if (!this.isFocused) {\n this.focus();\n }\n }\n /**\n * @hidden\n */\n handleTagMapperChange(showAfter) {\n this.showAfter = parseNumber(showAfter);\n this.setTags();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.value = this.value.filter((_item, index) => this.disabledIndices.has(index));\n this.dataItems = this.dataItems.filter((_item, index) => this.disabledIndices.has(index));\n this.valueDepth = this.valueDepth.filter((_depth, index) => this.disabledIndices.has(index));\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n if (!this.valuePrimitive) {\n this.dataItems = this.value;\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n this.filterChange.next(input.value);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get checkAllCheckboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n toggleCheckAll() {\n this.checkAllInput.nativeElement.focus();\n this.checkAllInput.nativeElement.click();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiSelectTreeMessages.textAndValue);\n }\n if (!isArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.array);\n }\n if (this.value.length > 0) {\n if (this.valuePrimitive && this.value.some(item => isObject(item))) {\n throw new Error(MultiSelectTreeMessages.primitive);\n }\n const isEveryDataItemObject = this.dataItems.every(item => isObject(item.dataItem));\n if (this.valuePrimitive && !isArray(this.dataItems)) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && !isEveryDataItemObject) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && this.dataItems.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.dataItemsLength);\n }\n if (!this.valuePrimitive && !isObjectArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.object);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && !isArray(this.valueDepth)) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length === 0) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.valueDepthLength);\n }\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n this.renderer.setAttribute(popupWrapper, 'dir', this.direction);\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), merge(this.navigationService.close, this.navigationService.esc).subscribe(() => {\n this.focus();\n this.togglePopup(false);\n }), this.navigationService.tab.subscribe(this.handleTabKey.bind(this)), this.navigationService.up.subscribe(this.handleUpKey.bind(this)), this.navigationService.down.subscribe(this.handleDownKey.bind(this)), this.navigationService.left\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)), this.navigationService.right\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)), this.navigationService.home.pipe(filter(() => !this.isOpen)).subscribe(this.handleHome.bind(this)), this.navigationService.end.pipe(filter(() => !this.isOpen)).subscribe(this.handleEnd.bind(this)), this.navigationService.backspace.pipe(filter(() => this.isTagFocused)).subscribe(this.handleBackspace.bind(this)), this.navigationService.delete.pipe(filter(() => this.isTagFocused)).subscribe(this.handleDelete.bind(this)));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n handleTabKey() {\n this.focus();\n if (this.isOpen) {\n this.treeview.blur();\n this.removeTreeViewFromTabOrder();\n }\n }\n handleUpKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Prevent toggling the focus between the filterInput and the wrapper elements with `up` key\n if (this.isWrapperActive) {\n return;\n }\n const isFirstNodeActive = this.treeview['navigationService']['activeIndex'] === '0';\n // Current focus is on the filter input => should focus the wrapper\n if (this.filterable && this.isFilterActive) {\n this.focus();\n // Current focus is on the treeview first node => should focus the check all checkbox if enabled\n }\n else if (this.checkAll && !this.isCheckAllActive && isFirstNodeActive) {\n this.checkAllInput.nativeElement.focus();\n // Current focus is either on the check all checkbox or the treeview's first node\n // => should focus either the filter input (if enabled) or the wrapper\n }\n else if (this.isCheckAllActive || isFirstNodeActive) {\n if (this.filterable) {\n this.filterInput.nativeElement.focus();\n }\n else {\n this.focus();\n }\n }\n }\n handleDownKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Current focus is on the wrapper => should focus the filter input\n if (this.filterable && this.isWrapperActive) {\n this.filterInput.nativeElement.focus();\n // Current focus is on the wrapper/filter input => should focus check all checkbox if enabled\n }\n else if (this.checkAll && (this.isWrapperActive || this.isFilterActive)) {\n this.checkAllInput.nativeElement.focus();\n // Should focus the treeview if filterable and check all are disabled\n }\n else if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n this.focusedTagIndex = undefined;\n }\n handleRightKey(event) {\n event.originalEvent.preventDefault();\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n else if (!this.focusedTagIndex) {\n this.focusedTagIndex = 0;\n }\n }\n handleLeftKey(event) {\n event.originalEvent.preventDefault();\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleEnd(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = 0;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n const tag = this.tags[this.tags.length - 1];\n const index = this.tags.length - 1;\n this.handleRemoveTag({ tag, index });\n }\n }\n handleDelete() {\n const tag = this.tags[this.focusedTagIndex];\n const index = this.focusedTagIndex;\n this.handleRemoveTag({ tag, index });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.unSubscribeFocusEvents();\n }\n /**\n * Remove the `TreeView` from the tab order, otherwise a focus loop between the page elements will occur\n * and the user will not be able to tab to the rest of the browser elements\n */\n removeTreeViewFromTabOrder() {\n const nodes = this.treeview.element.nativeElement.querySelectorAll('li');\n nodes.forEach(item => {\n if (item.getAttribute('tabindex') === '0') {\n this.lastNodeOnFocus = item;\n this.lastNodeOnFocus.setAttribute('tabindex', '-1');\n }\n });\n }\n setState() {\n if (isPresent(this.dataItems) && isPresent(this.valueField)) {\n this.setTags();\n this.checkedItems = this.dataItems.slice();\n }\n this.cdr.markForCheck();\n }\n setTags() {\n const source = this.dataItems.map(item => item.dataItem);\n this.tags = this.tagMapper(source);\n this.disabledIndices = this.disabledItemsMapper();\n }\n updateValue(value) {\n const newValue = this.valuePrimitive ?\n value.map(item => valueFrom(item, this.valueField)) :\n value.map(item => item.dataItem);\n this.value = newValue;\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n return new Set(this.dataItems.reduce((indices, item, index) => {\n if (this.itemDisabled(item.dataItem, item.index)) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nMultiSelectTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.ElementRef }, { token: i2.PopupService }, { token: i0.Renderer2 }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeComponent, selector: \"kendo-multiselecttree\", inputs: { tabindex: \"tabindex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", popupSettings: \"popupSettings\", checkableSettings: \"checkableSettings\", data: \"data\", value: \"value\", dataItems: \"dataItems\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", loading: \"loading\", placeholder: \"placeholder\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", loadOnDemand: \"loadOnDemand\", focusableId: \"focusableId\", clearButton: \"clearButton\", filterable: \"filterable\", checkAll: \"checkAll\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", isNodeExpanded: \"isNodeExpanded\", isNodeVisible: \"isNodeVisible\", itemDisabled: \"itemDisabled\", tagMapper: \"tagMapper\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", valueChange: \"valueChange\", removeTag: \"removeTag\", filterChange: \"filterChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-dropdowntree\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.id\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.role\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.aria-haspopup\": \"this.ariaHasPopup\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\", \"attr.aria-describedby\": \"this.ariaDescribedBy\", \"attr.aria-activedescendant\": \"this.ariaActiveDescendant\" } }, providers: [\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }\n ], queries: [{ propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"nodeTemplate\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"tagTemplate\", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: \"groupTagTemplate\", first: true, predicate: GroupTagTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"treeview\", first: true, predicate: [\"treeview\"], descendants: true }, { propertyName: \"filterInput\", first: true, predicate: [\"filterInput\"], descendants: true }, { propertyName: \"checkAllInput\", first: true, predicate: [\"checkAllInput\"], descendants: true }], exportAs: [\"kendoMultiSelectTree\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n {{ placeholder }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ messageFor('checkAllText') }}\n \n
\n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `, isInline: true, components: [{ type: TagListComponent, selector: \"kendo-taglist\", inputs: [\"tags\", \"textField\", \"valueField\", \"valueDepth\", \"focused\", \"template\", \"groupTemplate\", \"disabled\", \"tagPrefix\", \"id\", \"size\", \"rounded\", \"fillMode\", \"disabledIndices\"], outputs: [\"removeTag\"] }, { type: i1$1.TreeViewComponent, selector: \"kendo-treeview\", inputs: [\"filterInputPlaceholder\", \"animate\", \"nodeTemplate\", \"loadMoreButtonTemplate\", \"trackBy\", \"nodes\", \"textField\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"navigable\", \"children\", \"loadOnDemand\", \"filterable\", \"filter\", \"size\"], outputs: [\"childrenLoaded\", \"blur\", \"focus\", \"expand\", \"collapse\", \"nodeDragStart\", \"nodeDrag\", \"filterStateChange\", \"nodeDrop\", \"nodeDragEnd\", \"addItem\", \"removeItem\", \"checkedChange\", \"selectionChange\", \"filterChange\", \"nodeClick\", \"nodeDblClick\"], exportAs: [\"kendoTreeView\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: CheckAllDirective, selector: \"[checkAll]\", inputs: [\"lastAction\", \"treeview\", \"checkedItems\", \"valueField\", \"checkAll\"], outputs: [\"checkedItemsChange\"] }, { type: CheckDirective, selector: \"[kendoMultiSelectTreeCheckable]\", inputs: [\"checkable\", \"valueField\", \"checkedItems\"], outputs: [\"checkedItemsChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelectTree',\n providers: [\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }\n ],\n selector: 'kendo-multiselecttree',\n template: `\n \n \n \n \n {{ placeholder }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ messageFor('checkAllText') }}\n \n
\n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.PopupService }, { type: i0.Renderer2 }, { type: NavigationService }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], ariaHasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], ariaDescribedBy: [{\n type: HostBinding,\n args: ['attr.aria-describedby']\n }], ariaActiveDescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], checkAllInput: [{\n type: ViewChild,\n args: ['checkAllInput', { static: false }]\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], checkableSettings: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], dataItems: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], loading: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], filterable: [{\n type: Input\n }], checkAll: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], removeTag: [{\n type: Output\n }], filterChange: [{\n type: Output\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nclass DropDownTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * The nodes which will be displayed by the DropDownTree.\n */\n set data(nodes) {\n this.dropDownTree.nodes = nodes;\n this.nodes = nodes;\n }\n ;\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nDropDownTreeFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeFlatBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreeFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeFlatBindingDirective, selector: \"[kendoDropDownTreeFlatBinding]\", inputs: { data: [\"kendoDropDownTreeFlatBinding\", \"data\"], idField: [\"valueField\", \"idField\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeFlatBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeFlatBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoDropDownTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] } });\n\nconst INDEX_SEPARATOR = '_';\nconst nodeIndex = (index = '', parentIndex = '') => {\n return `${parentIndex}${parentIndex ? INDEX_SEPARATOR : ''}${index}`;\n};\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter$1(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nclass DropDownTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * The nodes which will be displayed by the DropDownTree.\n */\n set data(nodes) {\n this.dropDownTree.nodes = nodes;\n this.nodes = nodes;\n }\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nDropDownTreeHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeHierarchyBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreeHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeHierarchyBindingDirective, selector: \"[kendoDropDownTreeHierarchyBinding]\", inputs: { data: [\"kendoDropDownTreeHierarchyBinding\", \"data\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeHierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeHierarchyBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoDropDownTreeHierarchyBinding']\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nclass MultiSelectTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * The nodes which will be displayed by the MultiSelectTree.\n */\n set data(nodes) {\n this.multiSelectTree.nodes = nodes;\n this.nodes = nodes;\n }\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nMultiSelectTreeFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeFlatBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeFlatBindingDirective, selector: \"[kendoMultiSelectTreeFlatBinding]\", inputs: { data: [\"kendoMultiSelectTreeFlatBinding\", \"data\"], idField: [\"valueField\", \"idField\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeFlatBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeFlatBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoMultiSelectTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nclass MultiSelectTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * The nodes which will be displayed by the MultiSelectTree.\n */\n set data(nodes) {\n this.multiSelectTree.nodes = nodes;\n this.nodes = nodes;\n }\n /**\n * @hidden\n */\n set nodes(values) {\n super.nodes = values;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n}\nMultiSelectTreeHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeHierarchyBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeHierarchyBindingDirective, selector: \"[kendoMultiSelectTreeHierarchyBinding]\", inputs: { data: [\"kendoMultiSelectTreeHierarchyBinding\", \"data\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeHierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeHierarchyBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { data: [{\n type: Input,\n args: ['kendoMultiSelectTreeHierarchyBinding']\n }] } });\n\n/**\n * A directive which manages the expanded state of the popup TreeView.\n */\nclass DropDownTreesExpandDirective extends ExpandDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n *\n * Ensures a user-defined `isNodeExpanded` callback will not be overriden by the default directive setup.\n * Implemented as a value setter in the base directive, this just overrides the input name.\n */\n set isExpanded(value) {\n this.dropDownTree.isExpanded = value;\n }\n ;\n}\nDropDownTreesExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesExpandDirective, deps: [{ token: i1$1.ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreesExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreesExpandDirective, selector: \"[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]\", inputs: { isExpanded: [\"isNodeExpanded\", \"isExpanded\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesExpandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.ExpandableComponent }]; }, propDecorators: { isExpanded: [{\n type: Input,\n args: ['isNodeExpanded']\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_dropdowns %}#toc-messages)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-dropdownlist-messages,kendo-combobox-messages,kendo-multicolumncombobox-messages,kendo-autocomplete-messages,kendo-multiselect-messages,kendo-dropdowntree-messages,kendo-multiselecttree-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-dropdownlist-messages,kendo-combobox-messages,kendo-multicolumncombobox-messages,kendo-autocomplete-messages,kendo-multiselect-messages,kendo-dropdowntree-messages,kendo-multiselecttree-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DEFAULT_FILTER_SETTINGS = {\n caseSensitive: false,\n operator: 'startsWith'\n};\n/**\n * Implements an event handler for the `filterChange` event of a DropDowns component\n * which performs simple data filtering.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [\"Albania\", \"Andorra\", \"Armenia\", \"Austria\", \"Azerbaijan\"];\n * }\n * ```\n * > Currently, the built-in filtering does not work with [grouped data]({% slug api_kendo-data-query_groupby %}).\n */\nclass FilterDirective {\n constructor(component) {\n this.component = component;\n /**\n * @hidden\n *\n * Sets whether the filtering functionality is enabled on component init.\n */\n this.filterable = true;\n this._data = [];\n }\n /**\n * The initial data that will be used as a source array for the filtering operations.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.component.filterable = this.filterable;\n this.filterChangeSubscription = this.component.filterChange\n .subscribe(this.handleFilterChange.bind(this));\n }\n ngOnDestroy() {\n if (isPresent(this.filterChangeSubscription)) {\n this.filterChangeSubscription.unsubscribe();\n }\n }\n handleFilterChange(query) {\n this.component.data = this.data.filter(item => this.matchesAnyField(item, query));\n }\n matchesAnyField(item, query) {\n const normalizedQuery = this.normalizeValue(query);\n const { fields } = this.filterSettings;\n // if no filter fields are present, we are dealing with primitive data\n if (fields.length === 0) {\n return this.checkItem(item, normalizedQuery);\n }\n return fields.some(field => this.checkItem(getter(item, field), normalizedQuery));\n }\n checkItem(target, query) {\n target = this.normalizeValue(target);\n if (this.filterSettings.operator === 'contains') {\n return target.indexOf(query) !== -1;\n }\n else {\n return target.indexOf(query) === 0;\n }\n }\n normalizeValue(value) {\n const normalizedValue = isPresent(value) ? value.toString() : '';\n return this.filterSettings.caseSensitive ? normalizedValue : normalizedValue.toLowerCase();\n }\n getFilterFields(providedFields) {\n // ignore provided fields if the component deals with primitive data\n if (!this.component.textField && !this.component.valueField) {\n return [];\n }\n if (isArray(providedFields) && providedFields.length > 0) {\n return providedFields;\n }\n else {\n // the autocomplete uses `valueField` for text extraction\n const textField = this.component.textField || this.component.valueField;\n return [textField];\n }\n }\n get filterSettings() {\n const settings = this.rawSettings;\n const providedFields = isPresent(settings) && typeof settings === 'object' ? settings.fields : [];\n return Object.assign({}, DEFAULT_FILTER_SETTINGS, settings, { fields: this.getFilterFields(providedFields) });\n }\n}\nFilterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterDirective, deps: [{ token: FilterableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterDirective, selector: \"[kendoDropDownFilter]\", inputs: { data: \"data\", rawSettings: [\"kendoDropDownFilter\", \"rawSettings\"], filterable: \"filterable\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownFilter]'\n }]\n }], ctorParameters: function () { return [{ type: FilterableComponent }]; }, propDecorators: { data: [{\n type: Input\n }], rawSettings: [{\n type: Input,\n args: ['kendoDropDownFilter']\n }], filterable: [{\n type: Input\n }] } });\n\nconst SHARED_DIRECTIVES = [\n HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The noData template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n */\nclass SharedDirectivesModule {\n}\nSharedDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, declarations: [HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective], exports: [HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective] });\nSharedDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\nconst INTERNAL_DIRECTIVES = [\n ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective], imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], exports: [ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_DIRECTIVES],\n exports: [INTERNAL_DIRECTIVES, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule],\n imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]\n }]\n }] });\n\n/**\n * A directive which configures the MultiSelectTree to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug api_dropdowns_multiselecttreesummarytagdirective %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass MultiSelectTreeSummaryTagDirective {\n constructor(multiSelectTreeComponent) {\n this.multiSelectTreeComponent = multiSelectTreeComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectTreeComponent.handleTagMapperChange(this.showAfter);\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectTreeComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n // tags provided in an array are rendered as a single group tag\n return [...tags.slice(0, showAfter), tags.slice(showAfter)];\n }\n else {\n return tags;\n }\n };\n }\n}\nMultiSelectTreeSummaryTagDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeSummaryTagDirective, deps: [{ token: MultiSelectTreeComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeSummaryTagDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeSummaryTagDirective, selector: \"[kendoMultiSelectTreeSummaryTag]\", inputs: { showAfter: [\"kendoMultiSelectTreeSummaryTag\", \"showAfter\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeSummaryTagDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeSummaryTag]'\n }]\n }], ctorParameters: function () { return [{ type: MultiSelectTreeComponent }]; }, propDecorators: { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectTreeSummaryTag']\n }] } });\n\nconst DROPDOWNTREE_DIRECTIVES = [\n DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective\n];\n/**\n * @hidden\n */\nclass DropDownTreesModule {\n}\nDropDownTreesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownTreesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, declarations: [DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective], imports: [SharedModule, TreeViewModule], exports: [DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective, SharedDirectivesModule] });\nDropDownTreesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, imports: [[SharedModule, TreeViewModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNTREE_DIRECTIVES],\n exports: [DROPDOWNTREE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule, TreeViewModule]\n }]\n }] });\n\n/**\n * A directive which configures the MultiSelect to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug summarytagmode_multiselect %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass SummaryTagDirective {\n constructor(multiSelectComponent) {\n this.multiSelectComponent = multiSelectComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectComponent.onTagMapperChange();\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n let result;\n result = tags.slice(0, showAfter);\n result.push(tags.slice(showAfter, tags.length));\n return result;\n }\n else {\n return tags;\n }\n };\n }\n}\nSummaryTagDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SummaryTagDirective, deps: [{ token: MultiSelectComponent }], target: i0.ɵɵFactoryTarget.Directive });\nSummaryTagDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SummaryTagDirective, selector: \"[kendoMultiSelectSummaryTag]\", inputs: { showAfter: [\"kendoMultiSelectSummaryTag\", \"showAfter\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SummaryTagDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectSummaryTag]'\n }]\n }], ctorParameters: function () { return [{ type: MultiSelectComponent }]; }, propDecorators: { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectSummaryTag']\n }] } });\n\nconst AUTOCOMPLETE_DIRECTIVES = [\n AutoCompleteComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `AutoCompleteComponent`—The AutoComplete component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nclass AutoCompleteModule {\n}\nAutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, declarations: [AutoCompleteComponent], imports: [SharedModule], exports: [AutoCompleteComponent, SharedDirectivesModule] });\nAutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [AUTOCOMPLETE_DIRECTIVES],\n exports: [AUTOCOMPLETE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }] });\n\nconst COMBOBOX_DIRECTIVES = [\n ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ComboBoxComponent`—The ComboBox component class.\n * - `MultiColumnComboBoxComponent`—The MultiColumnComboBox component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `ColumnHeaderTemplateDirective`—The column header template directive.\n * - `ColumnCellTemplateDirective`—The column cell template directive.\n */\nclass ComboBoxModule {\n}\nComboBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nComboBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, declarations: [ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective], imports: [SharedModule], exports: [ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective, SharedDirectivesModule] });\nComboBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMBOBOX_DIRECTIVES],\n exports: [COMBOBOX_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\nconst DROPDOWNLIST_DIRECTIVES = [\n DropDownListComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownListComponent`—The DropDownList component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nclass DropDownListModule {\n}\nDropDownListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, declarations: [DropDownListComponent], imports: [SharedModule], exports: [DropDownListComponent, SharedDirectivesModule] });\nDropDownListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNLIST_DIRECTIVES],\n exports: [DROPDOWNLIST_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }] });\n\nconst MULTISELECT_DIRECTIVES = [\n MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `MultiSelectComponent`—The MultiSelect component class.\n * - `SummaryTagDirective`—The MultiSelect summary tag directive.\n * - `ItemTemplateDirective`—The item template directive.\n * - `CustomItemTemplateDirective`—The custom item template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no-data template directive.\n */\nclass MultiSelectModule {\n}\nMultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective], imports: [SharedModule], exports: [MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective, SharedDirectivesModule] });\nMultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MULTISELECT_DIRECTIVES],\n exports: [MULTISELECT_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dropdowns components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Dropdowns module\n * import { DropDownsModule } from '@progress/kendo-angular-dropdowns';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DropDownsModule], // import the Dropdowns module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DropDownsModule {\n}\nDropDownsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\nDropDownsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, imports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutoCompleteComponent, AutoCompleteModule, CheckAllDirective, CheckDirective, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, ComboBoxColumnComponent, ComboBoxComponent, ComboBoxModule, CustomItemTemplateDirective, CustomMessagesComponent, DropDownListComponent, DropDownListModule, DropDownTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, DropDownsModule, FilterDirective, FilterInputDirective, FilterableComponent, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTagTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, ListComponent, ListItemDirective, LocalizedMessagesDirective, MultiColumnComboBoxComponent, MultiSelectComponent, MultiSelectModule, MultiSelectTreeComponent, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, MultiSelectTreeSummaryTagDirective, NoDataTemplateDirective, NodeTemplateDirective, PreventableEvent, RemoveTagEvent, SearchBarComponent, SelectableDirective, SharedDirectivesModule, SharedModule, SummaryTagDirective, TagListComponent, TagTemplateDirective, TemplateContextDirective, ValueTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Component, Input, ContentChildren, QueryList, Directive, Optional, forwardRef, SkipSelf, Host, ContentChild, NgModule } from '@angular/core';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { IntlService, ExcelExporter, Workbook } from '@progress/kendo-ooxml';\nexport * from '@progress/kendo-ooxml';\nimport { toString } from '@telerik/kendo-intl';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\n\nconst compileTemplate = (templateRef, context, updateContext) => {\n let embeddedView = templateRef.createEmbeddedView(context);\n const result = (data) => {\n updateContext(context, data);\n embeddedView.detectChanges();\n return embeddedView.rootNodes.reduce((content, rootNode) => {\n return content + rootNode.textContent;\n }, '').trim();\n };\n result.destroy = () => {\n embeddedView.destroy();\n embeddedView = null;\n };\n return result;\n};\nconst updateGroupHeaderContext = (context, data) => {\n context.$implicit = context.group = data;\n context.field = data.field;\n context.value = data.value;\n context.aggregates = data.aggregates;\n};\nconst updateGroupFooterContext = (context, data) => {\n context.group = data.group;\n context.$implicit = context.aggregates = data;\n};\nconst updateFooterContext = (context, data) => {\n context.aggregates = data.aggregates;\n};\n/**\n * @hidden\n */\nconst toExporterColumns = (sourceColumns) => {\n const exporterColumns = [];\n let columnIndex = 0;\n const addColumns = (columns, result, level) => {\n columns.forEach((column) => {\n if (column.level === level) {\n const exporterColumn = new ExporterColumn(column, columnIndex);\n result.push(exporterColumn);\n if (column.children && column.children.some(c => c !== column)) {\n const children = exporterColumn.columns = [];\n addColumns(column.children, children, level + 1);\n }\n else {\n columnIndex++;\n }\n }\n });\n };\n addColumns(sourceColumns, exporterColumns, 0);\n return exporterColumns;\n};\n/**\n * @hidden\n */\nconst destroyColumns = (columns) => {\n if (columns) {\n columns.forEach(column => {\n column.destroy();\n });\n }\n};\n/**\n * @hidden\n */\nclass ExporterColumn {\n constructor(column, columnIndex) {\n this.title = column.title;\n this.field = column.field;\n this.hidden = column.hidden;\n this.locked = column.locked;\n this.width = column.width;\n this.headerCellOptions = column.headerCellOptions;\n this.cellOptions = column.cellOptions;\n this.groupHeaderCellOptions = column.groupHeaderCellOptions;\n this.groupFooterCellOptions = column.groupFooterCellOptions;\n this.footerCellOptions = column.footerCellOptions;\n if (column.footerTemplate) {\n this.footerTemplate = compileTemplate(column.footerTemplate.templateRef, {\n $implicit: column,\n column: column,\n columnIndex: columnIndex\n }, updateFooterContext);\n }\n if (column.groupFooterTemplate) {\n this.groupFooterTemplate = compileTemplate(column.groupFooterTemplate.templateRef, {\n column: column,\n field: column.field\n }, updateGroupFooterContext);\n }\n if (column.groupHeaderTemplate) {\n this.groupHeaderTemplate = compileTemplate(column.groupHeaderTemplate.templateRef, {}, updateGroupHeaderContext);\n }\n if (column.groupHeaderColumnTemplate) {\n this.groupHeaderColumnTemplate = compileTemplate(column.groupHeaderColumnTemplate.templateRef, {}, updateGroupHeaderContext);\n }\n }\n destroy() {\n if (this.footerTemplate) {\n this.footerTemplate.destroy();\n }\n if (this.groupFooterTemplate) {\n this.groupFooterTemplate.destroy();\n }\n if (this.groupHeaderTemplate) {\n this.groupHeaderTemplate.destroy();\n }\n if (this.groupHeaderColumnTemplate) {\n this.groupHeaderColumnTemplate.destroy();\n }\n destroyColumns(this.columns);\n }\n}\n\nIntlService.register({ toString });\n/**\n *\n * @hidden\n */\nconst workbookOptions = (options) => {\n const columns = toExporterColumns(options.columns);\n const exporter = new ExcelExporter({\n columns: columns,\n data: options.data,\n filterable: options.filterable,\n groups: options.group,\n paddingCellOptions: options.paddingCellOptions,\n headerPaddingCellOptions: options.headerPaddingCellOptions,\n collapsible: options.collapsible,\n hierarchy: options.hierarchy,\n aggregates: options.aggregates\n });\n const result = exporter.workbook();\n result.creator = options.creator;\n result.date = options.date;\n result.rtl = options.rtl;\n destroyColumns(columns);\n return result;\n};\n/**\n * @hidden\n */\nconst toDataURL = (options) => {\n const workbook = new Workbook(options);\n return workbook.toDataURL();\n};\n/**\n * @hidden\n */\nconst isWorkbookOptions = (value) => {\n return value && value.sheets;\n};\n\n/**\n * @hidden\n */\nclass ColumnBase {\n constructor(parent) {\n this.parent = parent;\n }\n /**\n * @hidden\n */\n get level() {\n return this.parent ? this.parent.level + 1 : 0;\n }\n}\nColumnBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, deps: [{ token: ColumnBase }], target: i0.ɵɵFactoryTarget.Component });\nColumnBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnBase, selector: \"ng-component\", inputs: { title: \"title\", width: \"width\", locked: \"locked\", hidden: \"hidden\", headerCellOptions: \"headerCellOptions\" }, queries: [{ propertyName: \"children\", predicate: ColumnBase }], ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, decorators: [{\n type: Component,\n args: [{\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase }]; }, propDecorators: { title: [{\n type: Input\n }], width: [{\n type: Input\n }], locked: [{\n type: Input\n }], hidden: [{\n type: Input\n }], headerCellOptions: [{\n type: Input\n }], children: [{\n type: ContentChildren,\n args: [ColumnBase]\n }] } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-excel-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441161,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n// eslint-disable max-line-length\n/**\n * Represents the [Kendo UI Excel Export component for Angular]({% slug overview_excelexport %}).\n * Configures the settings for the Excel export of the Kendo UI Grid.\n */\nclass ExcelExportComponent {\n constructor(localization, zone) {\n this.localization = localization;\n this.zone = zone;\n /**\n * Specifies the name of the file that is exported to Excel.\n * @default \"Export.xlsx\"\n */\n this.fileName = 'Export.xlsx';\n /**\n * @hidden\n */\n this.columns = new QueryList();\n validatePackage(packageMetadata);\n this.saveFile = this.saveFile.bind(this);\n }\n /**\n * Saves the data to Excel.\n *\n * @param exportData - An optional parameter. Can be the data that will be exported or [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}).\n */\n save(exportData) {\n this.toDataURL(exportData).then(this.saveFile);\n }\n /**\n * Based on the specified columns and data, returns\n * [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %})\n * ([see example]({% slug customrowsandcells_excelexport %})).\n *\n * @param exportData - The optional data to be exported.\n * @returns {WorkbookOptions} - The workbook options.\n */\n workbookOptions(exportData) {\n const currentData = this.getExportData(exportData);\n const options = workbookOptions({\n columns: this.columns,\n data: currentData.data,\n group: currentData.group,\n filterable: this.filterable,\n creator: this.creator,\n date: this.date,\n rtl: this.localization.rtl,\n paddingCellOptions: this.paddingCellOptions,\n headerPaddingCellOptions: this.headerPaddingCellOptions,\n collapsible: this.collapsible\n });\n return options;\n }\n /**\n * Returns a promise which will be resolved with the file data URI\n * ([see example]({% slug filesaving_excelexport %})).\n *\n * @param exportData - The optional data or [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}) that will be used to generate the data URI.\n * @returns {Promise} - The promise that will be resolved by the file data URI.\n */\n toDataURL(exportData) {\n const options = isWorkbookOptions(exportData) ?\n exportData :\n this.workbookOptions(exportData);\n return this.zone.runOutsideAngular(() => toDataURL(options));\n }\n getExportData(exportData) {\n let result;\n if (exportData) {\n if (Array.isArray(exportData)) {\n result = {\n data: exportData\n };\n }\n else {\n result = exportData;\n }\n }\n else {\n result = {\n data: this.data,\n group: this.group\n };\n }\n return result;\n }\n saveFile(dataURL) {\n saveAs(dataURL, this.fileName, {\n forceProxy: this.forceProxy,\n proxyURL: this.proxyURL\n });\n }\n}\nExcelExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nExcelExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExcelExportComponent, selector: \"kendo-excelexport\", inputs: { fileName: \"fileName\", filterable: \"filterable\", collapsible: \"collapsible\", creator: \"creator\", date: \"date\", forceProxy: \"forceProxy\", proxyURL: \"proxyURL\", data: \"data\", group: \"group\", paddingCellOptions: \"paddingCellOptions\", headerPaddingCellOptions: \"headerPaddingCellOptions\" }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.excelexport'\n }\n ], queries: [{ propertyName: \"columns\", predicate: ColumnBase, descendants: true }], exportAs: [\"kendoExcelExport\"], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoExcelExport',\n selector: 'kendo-excelexport',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.excelexport'\n }\n ],\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { fileName: [{\n type: Input\n }], filterable: [{\n type: Input\n }], collapsible: [{\n type: Input\n }], creator: [{\n type: Input\n }], date: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], data: [{\n type: Input\n }], group: [{\n type: Input\n }], paddingCellOptions: [{\n type: Input\n }], headerPaddingCellOptions: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase, { descendants: true }]\n }] } });\n\n/**\n * Represents the group header cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-header-template)).\n * Enables you to customize the content of the group header item.\n */\nclass GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderTemplateDirective, selector: \"[kendoExcelExportGroupHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group header column template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-header-column-template)).\n */\nclass GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderColumnTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderColumnTemplateDirective, selector: \"[kendoExcelExportGroupHeaderColumnTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupHeaderColumnTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group footer cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-footer-template)).\n * Enables you to customize the group footer cell of the column.\n */\nclass GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupFooterTemplateDirective, selector: \"[kendoExcelExportGroupFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportGroupFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the footer cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-footer-template)).\n * Enables you to customize the footer cell of the column.\n */\nclass FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterTemplateDirective, selector: \"[kendoExcelExportFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExcelExportFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the columns of the Kendo UI Excel Export component for Angular.\n */\nclass ColumnComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n }\n}\nColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnComponent, selector: \"kendo-excelexport-column\", inputs: { field: \"field\", cellOptions: \"cellOptions\", groupHeaderCellOptions: \"groupHeaderCellOptions\", groupFooterCellOptions: \"groupFooterCellOptions\", footerCellOptions: \"footerCellOptions\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ], queries: [{ propertyName: \"groupHeaderTemplate\", first: true, predicate: GroupHeaderTemplateDirective, descendants: true }, { propertyName: \"groupHeaderColumnTemplate\", first: true, predicate: GroupHeaderColumnTemplateDirective, descendants: true }, { propertyName: \"groupFooterTemplate\", first: true, predicate: GroupFooterTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ],\n selector: 'kendo-excelexport-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; }, propDecorators: { field: [{\n type: Input\n }], cellOptions: [{\n type: Input\n }], groupHeaderCellOptions: [{\n type: Input\n }], groupFooterCellOptions: [{\n type: Input\n }], footerCellOptions: [{\n type: Input\n }], groupHeaderTemplate: [{\n type: ContentChild,\n args: [GroupHeaderTemplateDirective, { static: false }]\n }], groupHeaderColumnTemplate: [{\n type: ContentChild,\n args: [GroupHeaderColumnTemplateDirective, { static: false }]\n }], groupFooterTemplate: [{\n type: ContentChild,\n args: [GroupFooterTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the column group component of the Kendo UI Excel Export component.\n */\nclass ColumnGroupComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n this.parent = parent;\n }\n}\nColumnGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnGroupComponent, selector: \"kendo-excelexport-column-group\", providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ],\n selector: 'kendo-excelexport-column-group',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }]; } });\n\nconst declarations = [\n ExcelExportComponent,\n ColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Excel Export component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ExcelExportModule module\n * import { ExcelExportModule } from '@progress/kendo-angular-excel-export';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ExcelExportModule], // import ExcelExportModule module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ExcelExportModule {\n}\nExcelExportModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nExcelExportModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule, declarations: [ExcelExportComponent,\n ColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective], exports: [ExcelExportComponent,\n ColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective] });\nExcelExportModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelExportModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [declarations]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ColumnBase, ColumnComponent, ColumnGroupComponent, ExcelExportComponent, ExcelExportModule, FooterTemplateDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderTemplateDirective, isWorkbookOptions, toDataURL, workbookOptions };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Component, HostBinding, Input, EventEmitter, Injectable, Optional, Inject, Directive, SkipSelf, QueryList, isDevMode, ContentChildren, ContentChild, forwardRef, Host, Output, SecurityContext, ChangeDetectionStrategy, ViewChild, HostListener, ViewChildren, Self, TemplateRef, Pipe, ViewEncapsulation, NgModule } from '@angular/core';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, anyChanged, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, DraggableModule, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { merge, of, Subject, from, Subscription, interval, fromEvent, zip as zip$1, BehaviorSubject, Observable } from 'rxjs';\nimport { switchMap, take, map, filter, takeUntil, switchMapTo, delay, auditTime, distinctUntilChanged, tap, throttleTime, debounceTime, bufferCount } from 'rxjs/operators';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i4$2 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormControl, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { orderBy, isCompositeFilterDescriptor, process, filterBy } from '@progress/kendo-data-query';\nimport * as i1$2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport * as i1$3 from '@angular/platform-browser';\nimport * as i4$1 from '@progress/kendo-angular-inputs';\nimport { NumericTextBoxComponent, InputsModule, NumericTextBoxModule } from '@progress/kendo-angular-inputs';\nimport * as i1$4 from '@progress/kendo-angular-dropdowns';\nimport { DropDownListComponent, DropDownListModule, AutoCompleteModule, DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport * as i5 from '@progress/kendo-angular-label';\nimport { LabelModule } from '@progress/kendo-angular-label';\nimport * as i4$3 from '@progress/kendo-angular-dateinputs';\nimport { DatePickerModule } from '@progress/kendo-angular-dateinputs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { getter } from '@progress/kendo-common';\nimport * as i1$5 from '@progress/kendo-angular-intl';\nimport { Button } from '@progress/kendo-angular-buttons';\nimport { PDFExportMarginComponent, PDFExportTemplateDirective, PDFExportComponent } from '@progress/kendo-angular-pdf-export';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { workbookOptions, toDataURL, ColumnBase as ColumnBase$1, ExcelExportModule } from '@progress/kendo-angular-excel-export';\n\nconst EMPTY_REGEX = /^\\s*$/;\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isTruthy = (value) => !!value;\n/**\n * @hidden\n */\nconst isNullOrEmptyString = (value) => isBlank(value) || EMPTY_REGEX.test(value);\n/**\n * @hidden\n */\nconst observe = (list) => merge(of(list), list.changes);\n/**\n * @hidden\n */\nconst isUniversal = () => typeof document === 'undefined';\n/**\n * @hidden\n */\nconst isString = (value) => typeof value === 'string';\n/**\n * @hidden\n */\nconst isNumber = (value) => typeof value === \"number\" && !isNaN(value);\n/**\n * @hidden\n */\nconst extractFormat = (format) => {\n if (isString(format) && !isNullOrEmptyString(format) && format.startsWith('{0:')) {\n return format.slice(3, format.length - 1);\n }\n return format;\n};\n/**\n * @hidden\n */\nconst not = (fn) => (...args) => !fn.apply(null, args);\n/**\n * @hidden\n */\nconst or = (...conditions) => (value) => conditions.reduce((acc, x) => acc || x(value), false);\n/**\n * @hidden\n */\nconst and = (...conditions) => (value) => conditions.reduce((acc, x) => acc && x(value), true);\n/**\n * @hidden\n */\nconst Skip = new InjectionToken(\"Skip\");\n/**\n * @hidden\n */\nconst createPromise = () => {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = (data) => {\n resolve(data);\n return promise;\n };\n rejectFn = (data) => {\n reject(data);\n return promise;\n };\n });\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n return promise;\n};\n/** @hidden */\nconst iterator = getIterator$1();\n// TODO: Move to kendo-common\nfunction getIterator$1() {\n if (typeof Symbol === 'function' && Symbol.iterator) {\n return Symbol.iterator;\n }\n const keys = Object.getOwnPropertyNames(Map.prototype);\n const proto = Map.prototype;\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (key !== 'entries' && key !== 'size' && proto[key] === proto.entries) {\n return key;\n }\n }\n}\nconst FRAME_DURATION = 1000 / 60;\nconst wnd = typeof window !== 'undefined' ? window : {};\n/** @hidden */\nconst requestAnimationFrame = wnd.requestAnimationFrame || wnd.msRequestAnimationFrame || (callback => setTimeout(callback, FRAME_DURATION));\n/** @hidden */\nconst cancelAnimationFrame = wnd.cancelAnimationFrame || wnd.msCancelRequestAnimationFrame || clearTimeout;\n/**\n * @hidden\n */\nconst detectIE = () => {\n if (!isDocumentAvailable()) {\n return;\n }\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n const trident = ua.indexOf('Trident/');\n return msie > 0 || trident > 0;\n};\n/**\n * @hidden\n */\nconst nodesToArray = (nodes) => [].slice.call(nodes);\n/**\n * @hidden\n */\nconst replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\\{\\\\s*${name}\\\\s*\\}`, 'g'), value);\n\n/**\n * Represents the Kendo UI GridSpacer component for Angular.\n * Used to give additional white space between the Pager inner elements,\n * and provides a way for customizing the spacer width.\n * It can also be used in any flex container within the Grid.\n */\nclass GridSpacerComponent {\n constructor() {\n this.hostClass = true;\n }\n get sizedClass() {\n return isPresent(this.width);\n }\n get flexBasisStyle() {\n return this.width;\n }\n}\nGridSpacerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGridSpacerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridSpacerComponent, selector: \"kendo-grid-spacer, kendo-pager-spacer\", inputs: { width: \"width\" }, host: { properties: { \"class.k-spacer\": \"this.hostClass\", \"class.k-spacer-sized\": \"this.sizedClass\", \"style.flexBasis\": \"this.flexBasisStyle\" } }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridSpacerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-spacer, kendo-pager-spacer',\n template: ``\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-spacer']\n }], sizedClass: [{\n type: HostBinding,\n args: ['class.k-spacer-sized']\n }], flexBasisStyle: [{\n type: HostBinding,\n args: ['style.flexBasis']\n }], width: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DomEventsService {\n constructor() {\n this.cellClick = new EventEmitter();\n this.cellMousedown = new EventEmitter();\n this.cellMouseup = new EventEmitter();\n this.click = new EventEmitter();\n this.keydown = new EventEmitter();\n this.focus = new EventEmitter();\n this.focusIn = new EventEmitter();\n this.focusOut = new EventEmitter();\n this.windowBlur = new EventEmitter();\n }\n}\nDomEventsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDomEventsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DomEventsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass LocalDataChangesService {\n constructor() {\n this.changes = new EventEmitter();\n }\n}\nLocalDataChangesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocalDataChangesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalDataChangesService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass GridFocusableElement {\n constructor(navigationService) {\n this.navigationService = navigationService;\n }\n focus() {\n this.navigationService.focusCell();\n }\n toggle(active) {\n this.navigationService.toggle(active);\n }\n canFocus() {\n return true;\n }\n hasFocus() {\n return this.navigationService.hasFocus();\n }\n isNavigable() {\n return false;\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationCursor {\n constructor(model) {\n this.model = model;\n this.changes = new Subject();\n this.activeRow = 0;\n this.activeCol = 0;\n this.virtualCol = 0;\n this.virtualRow = 0;\n }\n get row() {\n return this.model.findRow(this.activeRow);\n }\n get cell() {\n const row = this.row;\n if (row) {\n return this.model.findCell(this.activeCol, row);\n }\n }\n get dataRowIndex() {\n const row = this.row;\n if (row) {\n return row.dataRowIndex;\n }\n return -1;\n }\n /**\n * Assumes and announces a new cursor position.\n */\n reset(rowIndex = this.activeRow, colIndex = this.activeCol, force = true) {\n if (this.activate(rowIndex, colIndex, force)) {\n this.virtualRow = rowIndex;\n this.virtualCol = colIndex;\n }\n }\n activate(rowIndex, colIndex, force) {\n if (!force && this.isActiveRange(rowIndex, colIndex)) {\n return false;\n }\n const prevColIndex = this.activeCol;\n const prevRowIndex = this.activeRow;\n this.activeCol = colIndex;\n this.activeRow = rowIndex;\n this.changes.next({\n colIndex,\n prevColIndex,\n prevRowIndex,\n rowIndex\n });\n return true;\n }\n isActiveRange(rowIndex, colIndex) {\n if (this.activeRow !== rowIndex) {\n return false;\n }\n const cell = this.cell;\n const { start, end } = this.model.cellRange(cell);\n return !Boolean(cell) || (start <= colIndex && colIndex <= end);\n }\n /**\n * Assumes a new cursor position without announcing it.\n */\n assume(rowIndex = this.activeRow, colIndex = this.activeCol) {\n this.virtualRow = rowIndex;\n this.virtualCol = colIndex;\n this.activeCol = colIndex;\n this.activeRow = rowIndex;\n }\n /**\n * Announces a current cursor position to subscribers.\n */\n announce() {\n this.changes.next({\n colIndex: this.activeCol,\n prevColIndex: this.activeCol,\n prevRowIndex: this.activeRow,\n rowIndex: this.activeRow\n });\n }\n activateVirtualCell(cell) {\n const rowRange = this.model.rowRange(cell);\n const cellRange = this.model.cellRange(cell);\n const activeCol = this.activeCol;\n const activeRow = this.activeRow;\n if (rowRange.start <= activeRow && activeRow <= rowRange.end &&\n cellRange.start <= activeCol && activeCol <= cellRange.end) {\n this.activeRow = cell.rowIndex;\n this.activeCol = cell.colIndex;\n return true;\n }\n }\n isActive(rowIndex, colIndex) {\n return this.activeCol === colIndex && this.activeRow === rowIndex;\n }\n moveUp(offset = 1) {\n return this.offsetRow(-offset);\n }\n moveDown(offset = 1) {\n return this.offsetRow(offset);\n }\n moveLeft(offset = 1) {\n return this.offsetCol(-offset);\n }\n moveRight(offset = 1) {\n return this.offsetCol(offset);\n }\n lastCellIndex(row) {\n return this.metadata.columns.leafColumnsToRender.length - 1 +\n (this.metadata.hasDetailTemplate && (!row || !row.groupItem) ? 1 : 0);\n }\n offsetCol(offset) {\n const prevRow = this.model.findRow(this.virtualRow);\n const lastIndex = this.lastCellIndex(prevRow);\n const virtualCol = this.virtualCol;\n this.virtualCol = Math.max(0, Math.min(virtualCol + offset, lastIndex));\n let nextColIndex = this.virtualCol;\n let nextRowIndex = this.virtualRow;\n let cell = this.model.findCell(this.virtualCol, prevRow);\n if (!cell && this.metadata.virtualColumns) {\n return this.activate(nextRowIndex, nextColIndex);\n }\n if (cell.colSpan > 1 && cell.colIndex <= virtualCol && virtualCol < cell.colIndex + cell.colSpan) {\n nextColIndex = offset > 0 ? Math.min(cell.colIndex + cell.colSpan, lastIndex) : Math.max(0, cell.colIndex + offset);\n const nextCell = this.model.findCell(nextColIndex, prevRow);\n if (cell !== nextCell) {\n cell = nextCell;\n this.virtualCol = cell.colIndex;\n }\n else {\n this.virtualCol = virtualCol;\n }\n }\n return this.activate(cell.rowIndex, cell.colIndex);\n }\n offsetRow(offset) {\n let nextColIndex = this.virtualCol;\n if (this.metadata && this.metadata.isVirtual) {\n const maxIndex = this.metadata.maxLogicalRowIndex;\n let nextIndex = Math.max(0, Math.min(this.activeRow + offset, maxIndex));\n if (this.metadata.hasDetailTemplate && !this.model.findRow(nextIndex)) {\n nextIndex = offset > 0 ? nextIndex + 1 : nextIndex - 1;\n nextIndex = Math.max(0, Math.min(nextIndex, maxIndex));\n }\n if (this.metadata.hasDetailTemplate && nextIndex === maxIndex) {\n if (this.model.lastRow.index !== maxIndex) {\n // Don't attempt to navigate past the last collapsed row.\n nextIndex--;\n }\n }\n const nextRow = this.model.findRow(nextIndex);\n if (nextRow) {\n // remove duplication\n let cell = this.model.findCell(this.virtualCol, nextRow);\n if (cell.rowIndex <= this.virtualRow && offset > 0 && cell.rowSpan > 1) {\n cell = this.model.findCell(this.virtualCol, this.model.findRow(cell.rowIndex + cell.rowSpan - 1 + offset));\n }\n nextIndex = cell.rowIndex;\n nextColIndex = cell.colIndex;\n }\n this.virtualRow = nextIndex;\n return this.activate(nextIndex, nextColIndex);\n }\n const nextRow = this.model.findRow(this.virtualRow + offset) || this.model.nextRow(this.virtualRow, offset);\n if (!nextRow) {\n return false;\n }\n let cell = this.model.findCell(this.virtualCol, nextRow);\n if (cell && cell.rowIndex <= this.virtualRow && offset > 0 && cell.rowSpan > 1) { // spanned cell go to next\n const nextPos = cell.rowIndex + cell.rowSpan - 1 + offset;\n cell = this.model.findCell(this.virtualCol, this.model.findRow(nextPos));\n }\n if (!cell && this.metadata.virtualColumns) {\n return this.activate(this.virtualRow + offset, this.virtualCol);\n }\n this.virtualRow = cell.rowIndex;\n return this.activate(this.virtualRow, cell.colIndex);\n }\n}\n\n/**\n * @hidden\n */\nclass ItemMap {\n constructor() {\n this.count = 0;\n this.items = {};\n }\n get first() {\n if (this.count > 0) {\n let result;\n this.forEach(item => {\n result = item;\n return true;\n });\n return result;\n }\n }\n get last() {\n if (this.count > 0) {\n const keys = Object.keys(this.items);\n return this.items[keys[keys.length - 1]];\n }\n }\n removeItem(key) {\n if (this.items[key]) {\n delete this.items[key];\n this.count--;\n }\n }\n setItem(key, item) {\n if (!this.items[key]) {\n this.count++;\n }\n this.items[key] = item;\n }\n getItem(key) {\n return this.items[key];\n }\n toArray() {\n const result = [];\n this.forEach(item => {\n result.push(item);\n });\n return result;\n }\n forEach(callback) {\n for (let key in this.items) {\n if (this.items.hasOwnProperty(key) && callback(this.items[key])) {\n return this.items[key];\n }\n }\n }\n find(callback) {\n return this.forEach(callback);\n }\n}\n\n/**\n * @hidden\n *\n * Contains information for the currently rendered rows and cells.\n */\nclass NavigationModel {\n constructor() {\n this.rows = new ItemMap();\n }\n get firstRow() {\n return this.rows.first;\n }\n get lastRow() {\n return this.rows.last;\n }\n registerCell(cell) {\n const row = this.rows.getItem(cell.logicalRowIndex);\n if (!row) {\n return;\n }\n const colIndex = cell.logicalColIndex;\n const modelCell = {\n uid: cell.uid,\n colIndex,\n rowIndex: row.index,\n colSpan: cell.colSpan,\n rowSpan: cell.rowSpan,\n detailExpandCell: cell.detailExpandCell,\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex,\n focusGroup: cell.focusGroup\n };\n row.cells.setItem(colIndex, modelCell);\n if (cell.groupItem) {\n row.groupItem = cell.groupItem;\n }\n return modelCell;\n }\n unregisterCell(index, rowIndex, cell) {\n const row = this.rows.getItem(rowIndex);\n if (row) {\n const match = row.cells.getItem(index);\n if (match && match.uid === cell.uid) {\n row.cells.removeItem(index);\n }\n }\n }\n registerRow(row) {\n const modelRow = {\n uid: row.uid,\n index: row.logicalRowIndex,\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex,\n cells: new ItemMap()\n };\n this.rows.setItem(row.logicalRowIndex, modelRow);\n }\n updateRow(row) {\n const current = this.rows.getItem(row.logicalRowIndex);\n if (current) {\n Object.assign(current, {\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex\n });\n }\n }\n unregisterRow(index, row) {\n const match = this.rows.getItem(index);\n if (match && match.uid === row.uid) {\n this.rows.removeItem(index);\n }\n }\n cellRange(cell) {\n if (cell) {\n const start = cell.colIndex;\n const end = cell.colIndex + (cell.colSpan || 1) - 1;\n return {\n start,\n end\n };\n }\n return {};\n }\n rowRange(cell) {\n if (cell) {\n const start = cell.rowIndex;\n const end = cell.rowIndex + (cell.rowSpan || 1) - 1;\n return {\n start,\n end\n };\n }\n return {};\n }\n nextRow(rowIndex, offset) {\n const rows = this.rows.toArray();\n const row = this.rows.getItem(rowIndex);\n const position = rows.indexOf(row);\n const next = rows[position + offset];\n return next;\n }\n findRow(index) {\n return this.rows.getItem(index);\n }\n findCell(index, row) {\n if (!row) {\n return;\n }\n const rowIndex = row.index;\n let cell = row.cells.getItem(index);\n let currentIndex = rowIndex;\n while (!cell && row) {\n row = this.rows.getItem(currentIndex);\n cell = this.rowCell(index, row);\n currentIndex--;\n }\n if (cell && rowIndex <= row.index + (cell.rowSpan || 1) - 1) {\n return cell;\n }\n }\n rowCell(index, row) {\n if (!row || !row.cells.count) {\n return;\n }\n const firstCell = row.cells.first;\n let cell, currentIndex = index;\n while (!cell && currentIndex >= firstCell.colIndex) {\n cell = row.cells.getItem(currentIndex);\n currentIndex--;\n }\n if (cell && index <= cell.colIndex + (cell.colSpan || 1) - 1) {\n return cell;\n }\n }\n}\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst NODE_NAME_PREDICATES = {};\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst matchesClasses = (classNames) => (element) => hasClasses(element, classNames);\n/**\n * @hidden\n */\nconst matchesNodeName = (nodeName) => {\n if (!NODE_NAME_PREDICATES[nodeName]) {\n NODE_NAME_PREDICATES[nodeName] = (element) => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();\n }\n return NODE_NAME_PREDICATES[nodeName];\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst contains$2 = (parent, node, matchSelf = false) => {\n const outside = !closest(node, (child) => child === parent);\n if (outside) {\n return false;\n }\n const el = closest(node, (child) => child === node);\n return el && (matchSelf || el !== parent);\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (!element.tagName) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n const hasTabIndex = Boolean(element.getAttribute('tabIndex'));\n const focusable = !element.disabled && focusableRegex.test(tagName);\n return focusable || hasTabIndex;\n};\n/**\n * @hidden\n */\nconst isFocusableWithTabKey = (element, checkVisibility = true) => {\n if (!isFocusable(element)) {\n return false;\n }\n const visible = !checkVisibility || isVisible(element);\n const ariaHidden = element.getAttribute('aria-hidden') === 'true';\n const tabIndex = element.getAttribute('tabIndex');\n return visible && !ariaHidden && tabIndex !== '-1';\n};\n/**\n * @hidden\n */\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst findLastElement = (node, predicate, matchSelf = true) => {\n let last = null;\n findElement(node, (node) => {\n if (predicate(node)) {\n last = node;\n }\n return false;\n }, matchSelf);\n return last;\n};\n/**\n * @hidden\n */\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility));\n};\n/**\n * @hidden\n */\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nconst findLastFocusableChild = (element, checkVisibility = true) => {\n return findLastElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nfunction rtlScrollPosition(position, element, initial) {\n let result = position;\n if (initial < 0) {\n result = -position;\n }\n else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\n\n/**\n * @hidden\n */\nclass PagerContextService {\n constructor() {\n this.changes = new Subject();\n this.pageChange = new Subject();\n }\n get currentPage() {\n return this.skip / this.pageSize;\n }\n notifyChanges(changes) {\n this.total = changes.total;\n this.pageSize = changes.pageSize;\n this.skip = changes.skip;\n this.changes.next(changes);\n }\n changePage(page) {\n this.pageChange.next({ skip: page * this.pageSize, take: this.pageSize });\n }\n changePageSize(value) {\n this.pageChange.next({ skip: 0, take: value });\n }\n nextPage() {\n const nextPage = this.currentPage + 1;\n if (nextPage * this.pageSize < this.total) {\n this.changePage(nextPage);\n }\n }\n prevPage() {\n const prevPage = this.currentPage - 1;\n if (prevPage * this.pageSize >= 0) {\n this.changePage(prevPage);\n }\n }\n}\n\n/**\n * @hidden\n */\nclass ScrollRequestService {\n constructor() {\n this.requests = new Subject();\n }\n scrollTo(request) {\n this.requests.next(request);\n }\n}\nScrollRequestService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollRequestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nScrollRequestService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollRequestService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollRequestService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst getGroupRowArgs = (groupItem) => {\n if (!isPresent(groupItem)) {\n return null;\n }\n return { group: groupItem.data, groupIndex: groupItem.index, parentGroup: getGroupRowArgs(groupItem.parentGroup) };\n};\n\nconst isChildIndex = (targetIndex, parentIndex) => parentIndex !== targetIndex && targetIndex.startsWith(parentIndex);\n/**\n * @hidden\n */\nclass GroupsService {\n constructor() {\n this.changes = new Subject();\n this.rowState = new Set();\n }\n reset() {\n this.rowState.clear();\n }\n ngOnDestroy() {\n this.reset();\n }\n isExpanded(groupArgs) {\n if (this.userCallback) {\n return this.userCallback(groupArgs);\n }\n return !this.rowState.has(groupArgs.groupIndex);\n }\n isInExpandedGroup(groupItem) {\n let expanded = true;\n while (groupItem && expanded) {\n expanded = this.isExpanded({\n group: groupItem.data,\n groupIndex: groupItem.index,\n parentGroup: getGroupRowArgs(groupItem.parentGroup)\n });\n groupItem = groupItem.parentGroup;\n }\n return expanded;\n }\n toggleRow(groupItem) {\n const parentGroup = getGroupRowArgs(groupItem.parentGroup);\n const expand = !this.isExpanded({ group: groupItem.data, groupIndex: groupItem.index, parentGroup });\n this.changes.next({ group: groupItem.data, expand, groupIndex: groupItem.index, parentGroup });\n // if usercallback is given, the rowState should be ignored\n if (this.userCallback) {\n return;\n }\n if (expand) {\n this.rowState.delete(groupItem.index);\n }\n else {\n this.rowState.add(groupItem.index);\n }\n }\n expandChildren(parentIndex) {\n this.rowState.forEach(index => isChildIndex(index, parentIndex) && this.rowState.delete(index));\n }\n}\nGroupsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nGroupsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `detailCollapse` event.\n */\nclass DetailCollapseEvent extends PreventableEvent {\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `detailExpand` event.\n */\nclass DetailExpandEvent extends PreventableEvent {\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * @hidden\n */\nclass DetailsService {\n constructor() {\n this.changes = new Subject();\n this.rowState = new Set();\n }\n ngOnDestroy() {\n this.rowState.clear();\n }\n isExpanded(index, dataItem) {\n if (this.userCallback) {\n return this.userCallback({ index, dataItem });\n }\n return this.rowState.has(index);\n }\n toggleRow(index, dataItem) {\n if (this.isExpanded(index, dataItem)) {\n this.collapseRow(index, dataItem);\n }\n else {\n this.expandRow(index, dataItem);\n }\n }\n expandRow(index, dataItem) {\n const prevented = this.emitEvent({ dataItem, index, expand: true });\n if (!prevented && !this.userCallback) {\n this.rowState.add(index);\n }\n }\n collapseRow(index, dataItem) {\n const prevented = this.emitEvent({ dataItem, index, expand: false });\n if (!prevented && !this.userCallback) {\n this.rowState.delete(index);\n }\n }\n emitEvent(args) {\n const eventArg = new (args.expand ? DetailExpandEvent : DetailCollapseEvent)(args);\n this.changes.next(eventArg);\n return eventArg.isDefaultPrevented();\n }\n}\nDetailsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDetailsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailsService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst FOCUS_ROOT_ACTIVE = new InjectionToken('focus-root-initial-active-state');\n/**\n * @hidden\n */\nclass FocusRoot {\n constructor(active = false) {\n this.active = active;\n this.groups = new Set();\n }\n registerGroup(group) {\n if (this.active) {\n this.groups.add(group);\n }\n }\n unregisterGroup(group) {\n if (this.active) {\n this.groups.delete(group);\n }\n }\n activate() {\n if (this.active) {\n this.groups.forEach(f => f.activate());\n }\n }\n deactivate() {\n if (this.active) {\n this.groups.forEach(f => f.deactivate());\n }\n }\n}\nFocusRoot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusRoot, deps: [{ token: FOCUS_ROOT_ACTIVE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusRoot.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusRoot });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusRoot, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_ROOT_ACTIVE]\n }] }]; } });\n\n/**\n * Arguments for the `cellClose` event.\n */\nclass CellCloseEvent extends PreventableEvent {\n constructor(options) {\n super();\n /**\n * @hidden\n */\n this.action = 'cellClose';\n Object.assign(this, options);\n }\n}\n\n/**\n * @hidden\n */\nconst isEqual = (index) => (item) => item.index === index;\n/**\n * @hidden\n */\nconst isNotEqual = (index) => (item) => item.index !== index;\n/**\n * @hidden\n */\nconst isNewRow = (index) => index === -1 || index === undefined;\n/**\n * @hidden\n */\nclass EditService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new EventEmitter();\n this.editedIndices = [];\n this.keepEditCell = false;\n this.closingCell = false;\n this.changedSource = new Subject();\n this.changed = this.changedSource.asObservable().pipe(switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1))));\n }\n editRow(index, group = undefined) {\n this.editedIndices.push({ index, group });\n this.onChanged();\n }\n addRow(group) {\n this.newItemGroup = { group };\n this.onChanged();\n }\n editCell(rowIndex, column, group) {\n if (isNewRow(rowIndex) || column.editable === false || !(column.editTemplate || column.field)) {\n return;\n }\n this.preventCellClose();\n if (!this.closeCell()) {\n this.editRow(rowIndex, group);\n this.column = column;\n this.onChanged();\n }\n }\n isEditing() {\n return this.editedIndices.length > 0;\n }\n isEditingCell() {\n return this.isEditing() && this.column !== undefined;\n }\n get hasNewItem() {\n return isPresent(this.newItemGroup);\n }\n get newDataItem() {\n if (this.hasNewItem) {\n return this.newItemGroup.group.value;\n }\n return {};\n }\n close(index) {\n if (isNewRow(index)) {\n this.newItemGroup = undefined;\n return;\n }\n this.editedIndices = this.editedIndices.filter(isNotEqual(index));\n delete this.column;\n this.onChanged();\n }\n closeCell(originalEvent) {\n if (this.column && !this.closingCell) {\n return this.ngZone.run(() => {\n const { index, group } = this.editedIndices[0];\n const args = new CellCloseEvent({\n column: this.column,\n formGroup: group,\n originalEvent: originalEvent,\n rowIndex: index\n });\n this.closingCell = true;\n this.changes.emit(args);\n this.closingCell = false;\n if (!args.isDefaultPrevented()) {\n this.cancelCell();\n }\n return args.isDefaultPrevented();\n });\n }\n }\n cancelCell() {\n if (this.column) {\n this.editedIndices = [];\n delete this.column;\n this.onChanged();\n }\n }\n shouldCloseCell() {\n return this.column && !this.keepEditCell;\n }\n preventCellClose() {\n this.ngZone.runOutsideAngular(() => {\n window.clearTimeout(this.keepCellTimeout);\n this.keepEditCell = true;\n this.keepCellTimeout = window.setTimeout(() => {\n this.keepEditCell = false;\n }, 0);\n });\n }\n context(index) {\n if (isNewRow(index)) {\n return this.newItemGroup;\n }\n return this.findByIndex(index);\n }\n columnContext(index, column) {\n if (isNewRow(index)) {\n return this.newItemGroup;\n }\n if (!this.column || column === this.column) {\n return this.findByIndex(index);\n }\n }\n isEdited(index) {\n if (isNewRow(index) && isPresent(this.newItemGroup)) {\n return true;\n }\n return !this.column && isPresent(this.findByIndex(index));\n }\n hasEdited(index) {\n return isPresent(this.context(index));\n }\n isEditedColumn(index, column) {\n if (this.column && this.column === column) {\n return isPresent(this.findByIndex(index));\n }\n return false;\n }\n beginEdit(rowIndex) {\n this.changes.emit({ action: 'edit', rowIndex });\n }\n beginAdd() {\n this.changes.emit({ action: 'add' });\n }\n endEdit(rowIndex) {\n const { group: formGroup } = this.context(rowIndex);\n this.changes.emit({ action: 'cancel', rowIndex, formGroup, isNew: isNewRow(rowIndex) });\n }\n save(rowIndex) {\n const { group: formGroup } = this.context(rowIndex);\n this.changes.emit({ action: 'save', rowIndex, formGroup, isNew: isNewRow(rowIndex) });\n }\n remove(rowIndex) {\n this.changes.emit({ action: 'remove', rowIndex });\n }\n findByIndex(index) {\n return this.editedIndices.find(isEqual(index));\n }\n onChanged() {\n this.ngZone.runOutsideAngular(() => {\n this.changedSource.next();\n });\n }\n}\nEditService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nEditService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nconst isButton = matchesNodeName('button');\nconst isInputTag = matchesNodeName('input');\nconst navigableRegex = /(button|checkbox|color|file|radio|reset|submit)/i;\nconst isNavigableInput = element => isInputTag(element) && navigableRegex.test(element.type);\nconst isNavigable = element => !element.disabled && (isButton(element) || isNavigableInput(element));\n/**\n * @hidden\n */\nclass DefaultFocusableElement {\n constructor(host, renderer) {\n this.renderer = renderer;\n this.element = host.nativeElement;\n this.focusable = findFocusable(this.element, false) || this.element;\n }\n get enabled() {\n return this.focusable && !this.focusable.disabled;\n }\n get visible() {\n return this.focusable && isVisible(this.focusable);\n }\n isNavigable() {\n return this.canFocus() && isNavigable(this.element);\n }\n toggle(active) {\n this.renderer.setAttribute(this.focusable, 'tabIndex', active ? '0' : '-1');\n }\n focus() {\n if (this.focusable) {\n this.focusable.focus();\n }\n }\n canFocus() {\n return this.visible && this.enabled;\n }\n hasFocus() {\n return document.activeElement !== this.element && closest(document.activeElement, e => e === this.element);\n }\n}\n\n/**\n * @hidden\n */\nconst CELL_CONTEXT = new InjectionToken('grid-cell-context');\n/**\n * @hidden\n */\nconst EMPTY_CELL_CONTEXT = {};\n\n/**\n * A directive that controls the way focusable elements receive\n * [focus in a navigable Grid]({% slug keyboard_navigation_grid %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public readonly data: any = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }];\n * }\n * ```\n */\nclass FocusableDirective {\n constructor(cellContext, hostElement, renderer) {\n this.cellContext = cellContext;\n this.hostElement = hostElement;\n this.renderer = renderer;\n this.active = true;\n this._enabled = true;\n if (this.cellContext) {\n this.group = this.cellContext.focusGroup;\n }\n if (this.group) {\n this.group.registerElement(this);\n }\n }\n /**\n * @hidden\n */\n set enabled(value) {\n if (value === '') {\n value = true;\n }\n else {\n value = Boolean(value);\n }\n if (value !== this.enabled) {\n this._enabled = value;\n if (this.element) {\n this.element.toggle(this.active && value);\n }\n }\n }\n get enabled() {\n return this._enabled;\n }\n ngAfterViewInit() {\n if (!this.element) {\n this.element = new DefaultFocusableElement(this.hostElement, this.renderer);\n }\n if (this.group && this.element) {\n this.toggle(this.group.isActive);\n }\n }\n ngOnDestroy() {\n if (this.group) {\n this.group.unregisterElement(this);\n }\n }\n /**\n * @hidden\n */\n toggle(active) {\n if (this.element && active !== this.active) {\n this.element.toggle(this.enabled && active);\n this.active = active;\n }\n }\n /**\n * @hidden\n */\n canFocus() {\n return this.enabled && this.element && this.element.canFocus();\n }\n /**\n * @hidden\n */\n isNavigable() {\n return this.enabled && this.element && this.element.isNavigable();\n }\n /**\n * @hidden\n */\n focus() {\n if (this.enabled && this.element) {\n this.element.focus();\n }\n }\n /**\n * @hidden\n */\n hasFocus() {\n return this.enabled && this.element && this.element.hasFocus();\n }\n /**\n * @hidden\n */\n registerElement(element) {\n this.element = element;\n }\n}\nFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, deps: [{ token: CELL_CONTEXT, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: { enabled: [\"kendoGridFocusable\", \"enabled\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFocusable]' + `,\n [kendoGridEditCommand],\n [kendoGridRemoveCommand],\n [kendoGridSaveCommand],\n [kendoGridCancelCommand],\n [kendoGridSelectionCheckbox]\n `\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }, {\n type: SkipSelf\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { enabled: [{\n type: Input,\n args: ['kendoGridFocusable']\n }] } });\n\nconst isInSameGrid = (element, gridElement) => closest(element, matchesNodeName('kendo-grid')) === gridElement;\nconst matchHeaderCell = matchesNodeName('th');\nconst matchDataCell = matchesNodeName('td');\nconst matchFooterCell = matchesNodeName('.k-grid-footer td');\nconst matchCell = (element) => matchDataCell(element) || matchHeaderCell(element) || matchFooterCell(element);\nconst gridCell = (element, gridElement) => {\n let target = closest(element, matchCell);\n while (target && !isInSameGrid(target, gridElement)) {\n target = closest(target.parentElement, matchCell);\n }\n return target;\n};\nconst targetCell = (target, gridElement) => {\n const cell = gridCell(target, gridElement);\n const row = closest(cell, matchesNodeName('tr'));\n if (cell && row) {\n let rowIndex = row.getAttribute('aria-rowindex');\n rowIndex = rowIndex ? parseInt(rowIndex, 10) - 1 : null;\n let colIndex = cell.getAttribute('aria-colindex');\n colIndex = colIndex ? parseInt(colIndex, 10) - 1 : null;\n if (rowIndex !== null && colIndex !== null) {\n return { colIndex, rowIndex, element: cell };\n }\n }\n};\nconst isArrowKey = keyCode => keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight ||\n keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown;\nconst isNavigationKey = keyCode => isArrowKey(keyCode) ||\n keyCode === Keys.PageUp || keyCode === Keys.PageDown ||\n keyCode === Keys.Home || keyCode === Keys.End;\nconst isInput = matchesNodeName('input');\nconst isTextInput = element => element && isInput(element) && element.type.toLowerCase() === 'text';\nconst isPrintableCharacter = (str) => str.length === 1 && str.match(/\\S/);\n/**\n * @hidden\n */\nclass NavigationViewport {\n constructor(firstItemIndex, lastItemIndex) {\n this.firstItemIndex = firstItemIndex;\n this.lastItemIndex = lastItemIndex;\n }\n containsRow(dataRowIndex) {\n const headerRow = dataRowIndex < 0;\n return headerRow || (dataRowIndex >= this.firstItemIndex && dataRowIndex <= this.lastItemIndex);\n }\n intersects(start, end) {\n return (start <= this.firstItemIndex && this.lastItemIndex <= end) ||\n (this.firstItemIndex <= start && start <= this.lastItemIndex) ||\n (this.firstItemIndex <= end && end <= this.lastItemIndex);\n }\n}\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(zone, domEvents, pagerContextService, scrollRequestService, groupsService, detailsService, focusRoot, editService, cd, localization, focusableParent) {\n this.zone = zone;\n this.domEvents = domEvents;\n this.pagerContextService = pagerContextService;\n this.scrollRequestService = scrollRequestService;\n this.groupsService = groupsService;\n this.detailsService = detailsService;\n this.focusRoot = focusRoot;\n this.editService = editService;\n this.cd = cd;\n this.localization = localization;\n this.focusableParent = focusableParent;\n this.cellKeydown = new EventEmitter();\n this.activeRowIndex = 0;\n this.alive = false;\n this.active = true;\n this.mode = 0 /* Standby */;\n this.model = new NavigationModel();\n this.cursor = new NavigationCursor(this.model);\n this.changes = this.cursor.changes;\n }\n set metadata(value) {\n this.meta = value;\n this.cursor.metadata = value;\n }\n get metadata() {\n return this.meta;\n }\n get enabled() {\n return this.alive;\n }\n get activeCell() {\n if (this.mode !== 0 /* Standby */) {\n return this.cursor.cell;\n }\n }\n get activeRow() {\n if (this.mode !== 0 /* Standby */) {\n return Object.assign({}, this.cursor.row, {\n cells: this.cursor.row.cells.toArray()\n });\n }\n }\n get activeDataRow() {\n return Math.max(0, this.activeRowIndex - this.meta.headerRows);\n }\n init(meta) {\n this.alive = true;\n this.focusRoot.active = true;\n this.metadata = meta;\n const onStableSubscriber = (...operators) => (args) => this.zone.isStable ?\n from([true]).pipe(map(() => args)) :\n this.zone.onStable.pipe(take(1), map(() => args), ...operators);\n const onStable = onStableSubscriber();\n this.subs = new Subscription();\n this.subs.add(this.cursor.changes\n .subscribe(args => this.onCursorChanges(args)));\n this.subs.add(this.domEvents.focus.pipe(switchMap(onStable))\n .subscribe((args) => this.navigateTo(args.target)));\n this.subs.add(this.domEvents.focusOut.pipe(filter(() => this.mode !== 0 /* Standby */), switchMap(onStableSubscriber(takeUntil(this.domEvents.focus))))\n .subscribe(args => this.onFocusOut(args)));\n this.subs.add(this.domEvents.windowBlur.pipe(filter(() => this.mode !== 0 /* Standby */))\n .subscribe(() => this.onWindowBlur()));\n this.subs.add(\n // Closing the editor will not always trigger focusout in Firefox.\n // To get around this, we ensure that the cell is closed after editing.\n this.editService.changes.pipe(filter(e => e.action !== 'edit' && this.mode === 2 /* Content */), filter((e) => e.action === 'cellClose' && !e.prevented), switchMap(onStable))\n .subscribe(() => this.leaveCell()));\n this.subs.add(this.pagerContextService.pageChange\n .subscribe(() => this.cursor.reset(0, 0)));\n this.subs.add(this.domEvents.keydown\n .subscribe(args => this.onKeydown(args)));\n this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(\n // Timeout if focusOut doesn't fire very soon\n interval(0).pipe(take(1))))))\n .subscribe(() => this.onTabout()));\n if (this.focusableParent) {\n const element = new GridFocusableElement(this);\n this.focusableParent.registerElement(element);\n }\n this.deactivateElements();\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n this.alive = false;\n }\n registerCell(cell) {\n if (cell.logicalRowIndex !== this.pendingRowIndex) {\n const modelCell = this.model.registerCell(cell);\n if (this.virtualCell && this.cursor.activateVirtualCell(modelCell)) {\n this.virtualCell = false;\n }\n }\n }\n registerCellOnCurrentRow(cell) {\n if (cell.logicalRowIndex === this.pendingRowIndex) {\n this.model.registerCell(cell);\n }\n }\n unregisterCell(index, rowIndex, cell) {\n this.model.unregisterCell(index, rowIndex, cell);\n }\n registerRow(row) {\n this.model.registerRow(row);\n this.pendingRowIndex = row.logicalRowIndex;\n }\n updateRow(row) {\n this.model.updateRow(row);\n }\n unregisterRow(index, row) {\n this.model.unregisterRow(index, row);\n const lastRow = this.model.lastRow;\n if (lastRow && this.mode === 0 /* Standby */) {\n const maxIndex = (this.needsViewport() && this.viewport) ? this.viewport.lastItemIndex : lastRow.index;\n if (this.activeRowIndex > maxIndex) {\n this.cursor.reset(0, 0);\n }\n }\n }\n isCellFocusable(cell) {\n return this.alive &&\n this.active &&\n this.mode !== 2 /* Content */ &&\n this.cursor.isActive(cell.logicalRowIndex, cell.logicalColIndex);\n }\n isCellFocused(cell) {\n return this.mode === 1 /* Cursor */ && this.isCellFocusable(cell);\n }\n navigateTo(el) {\n if (!this.alive) {\n return;\n }\n const cell = targetCell(el, this.meta.gridElement.nativeElement);\n if (!cell) {\n return;\n }\n const oldMode = this.mode;\n const focusInCell = contains$2(cell.element, document.activeElement);\n const focusInActiveRowContent = this.mode === 2 /* Content */ &&\n this.activeRowIndex === cell.rowIndex &&\n el !== cell.element;\n if (focusInCell) {\n this.mode = 2 /* Content */;\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n this.activateRow();\n }\n else if (!focusInActiveRowContent) {\n this.mode = 1 /* Cursor */;\n this.deactivateElements();\n const alreadyActive = this.cursor.isActive(cell.rowIndex, cell.colIndex);\n const isCursor = oldMode === 1 /* Cursor */ && alreadyActive;\n if (!isCursor) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n }\n }\n }\n tryFocus(el) {\n this.activateElements();\n const focusable = findFocusableChild(el);\n if (focusable) {\n const cell = targetCell(focusable, this.meta.gridElement.nativeElement);\n if (cell) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n this.deactivateElements();\n this.enterCell();\n }\n focusable.focus();\n }\n else {\n this.deactivateElements();\n }\n return !!focusable;\n }\n needsViewport() {\n return this.meta && this.meta.isVirtual;\n }\n setViewport(firstItemIndex, lastItemIndex) {\n this.viewport = new NavigationViewport(firstItemIndex, lastItemIndex);\n if (this.meta && this.meta.isVirtual && this.activeDataRow > -1) {\n const dataRowIndex = this.activeDataRow;\n const ahead = firstItemIndex - dataRowIndex;\n const behind = dataRowIndex - lastItemIndex;\n if (ahead > 0) {\n this.cursor.reset(firstItemIndex + this.meta.headerRows);\n }\n else if (behind > 0) {\n this.cursor.reset(lastItemIndex - this.meta.headerRows);\n }\n }\n }\n setColumnViewport(firstItemIndex, lastItemIndex) {\n this.columnViewport = new NavigationViewport(firstItemIndex, lastItemIndex);\n }\n focusCell(rowIndex = undefined, colIndex = undefined) {\n this.mode = 1 /* Cursor */;\n this.cursor.reset(rowIndex, colIndex);\n return this.activeCell;\n }\n focusCellByElement(el) {\n const cell = targetCell(el, this.meta.gridElement.nativeElement);\n if (cell) {\n return this.focusCell(cell.rowIndex, cell.colIndex);\n }\n }\n focusNextCell(wrap = true) {\n return this.focusAdjacentCell(true, wrap);\n }\n focusPrevCell(wrap = true) {\n return this.focusAdjacentCell(false, wrap);\n }\n toggle(active) {\n this.active = active;\n this.cursor.announce();\n }\n hasFocus() {\n return this.mode === 1 /* Cursor */ || this.mode === 2 /* Content */;\n }\n autoFocusCell(start, end) {\n return !this.meta.virtualColumns || end < this.meta.columns.lockedLeafColumns.length || this.columnViewport.intersects(start, end);\n }\n focusAdjacentCell(fwd, wrap) {\n this.focusCell();\n let success = fwd ? this.moveCursorFwd() : this.moveCursorBwd();\n if (wrap && !success) {\n success = fwd ? this.cursor.moveDown(1) : this.cursor.moveUp(1);\n if (success) {\n const row = this.cursor.row;\n const colIdx = fwd ? 0 : this.cursor.lastCellIndex(row);\n this.cursor.reset(row.index, colIdx);\n }\n }\n if (success) {\n return this.activeCell;\n }\n else {\n this.mode = 0 /* Standby */;\n this.cursor.announce();\n }\n return null;\n }\n enterCell() {\n const cell = this.cursor.cell;\n if (!cell) {\n return;\n }\n const group = cell.focusGroup;\n const focusable = group && group.canFocus();\n this.mode = focusable ? 2 /* Content */ : 1 /* Cursor */;\n this.cursor.announce();\n if (focusable) {\n this.activateRow();\n group.focus();\n }\n }\n leaveCell() {\n const cell = this.cursor.cell;\n if (!cell) {\n return;\n }\n const group = cell.focusGroup;\n const focusable = group && group.canFocus();\n if (!focusable) {\n this.deactivateElements();\n }\n this.mode = 1 /* Cursor */;\n this.cursor.announce();\n }\n activateElements() {\n this.focusRoot.activate();\n }\n deactivateElements() {\n this.focusRoot.deactivate();\n }\n activateRow() {\n this.cursor.row.cells\n .forEach(cell => cell.focusGroup && cell.focusGroup.activate());\n }\n moveCursorFwd() {\n return this.localization.rtl ? this.cursor.moveLeft() : this.cursor.moveRight();\n }\n moveCursorBwd() {\n return this.localization.rtl ? this.cursor.moveRight() : this.cursor.moveLeft();\n }\n onCursorKeydown(args) {\n let preventDefault = false;\n const modifier = args.ctrlKey || args.metaKey;\n const step = modifier ? 5 : 1;\n if (!this.onCellKeydown(args)) {\n return;\n }\n const row = this.cursor.row;\n switch (args.keyCode) {\n case Keys.ArrowDown:\n preventDefault = this.cursor.moveDown(step);\n break;\n case Keys.ArrowUp:\n preventDefault = this.cursor.moveUp(step);\n break;\n case Keys.ArrowRight:\n preventDefault = this.moveCursorFwd();\n break;\n case Keys.ArrowLeft:\n preventDefault = this.moveCursorBwd();\n break;\n case Keys.PageDown:\n if (this.metadata.isVirtual && this.viewport) {\n let nextItemIndex = this.meta.headerRows + this.viewport.lastItemIndex + 1;\n if (this.metadata.hasDetailTemplate) {\n nextItemIndex++;\n }\n nextItemIndex = Math.min(this.meta.maxLogicalRowIndex, nextItemIndex);\n this.cursor.reset(nextItemIndex);\n preventDefault = true;\n }\n else if (this.metadata.hasPager) {\n this.zone.run(() => this.pagerContextService.nextPage());\n preventDefault = true;\n }\n break;\n case Keys.PageUp:\n if (this.metadata.isVirtual && this.viewport) {\n let viewportSize = this.viewport.lastItemIndex - this.viewport.firstItemIndex;\n let firstItemIndex = this.viewport.firstItemIndex;\n let nextItemIndex = Math.max(this.meta.headerRows, firstItemIndex - viewportSize - 1);\n this.cursor.reset(nextItemIndex);\n preventDefault = true;\n }\n else if (this.metadata.hasPager) {\n this.zone.run(() => this.pagerContextService.prevPage());\n preventDefault = true;\n }\n break;\n case Keys.Home:\n if (modifier) {\n if (this.meta.isVirtual) {\n this.cursor.reset(this.meta.headerRows, 0, false);\n }\n else {\n this.cursor.reset(this.model.firstRow.index, 0, false);\n }\n }\n else {\n this.cursor.reset(row.index, 0, false);\n }\n preventDefault = true;\n break;\n case Keys.End:\n if (modifier) {\n if (this.meta.isVirtual) {\n let lastRowIndex = this.meta.maxLogicalRowIndex;\n if (this.meta.hasDetailTemplate) {\n lastRowIndex--;\n }\n this.cursor.reset(lastRowIndex, this.cursor.lastCellIndex(), false);\n }\n else {\n this.cursor.reset(this.model.lastRow.index, this.cursor.lastCellIndex(this.model.lastRow), false);\n }\n }\n else {\n const lastIndex = this.cursor.lastCellIndex(row);\n const cell = this.model.findCell(lastIndex, row);\n if (cell) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n }\n else {\n this.cursor.reset(row.index, lastIndex);\n }\n }\n preventDefault = true;\n break;\n case Keys.Enter:\n case Keys.F2:\n const groupItem = row.groupItem;\n if (groupItem) {\n this.zone.run(() => this.groupsService.toggleRow(groupItem));\n }\n else if (this.cursor.cell.detailExpandCell) {\n this.zone.run(() => this.detailsService.toggleRow(row.dataRowIndex, row.dataItem));\n }\n else {\n this.enterCell();\n if (!this.cursor.cell.focusGroup.isNavigable()) {\n preventDefault = true;\n }\n }\n break;\n default:\n if (!args.ctrlKey && !args.altKey && isPrintableCharacter(args.key)) {\n this.enterCell();\n }\n }\n if (preventDefault) {\n args.preventDefault();\n }\n }\n onContentKeydown(args) {\n if (!this.onCellKeydown(args)) {\n return;\n }\n const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.srcElement);\n if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {\n this.leaveCell();\n this.cursor.reset();\n args.stopPropagation();\n }\n else if (isNavigationKey(args.keyCode) && this.cursor.cell.focusGroup.isNavigable()) {\n this.onCursorKeydown(args);\n if (args.defaultPrevented) {\n this.leaveCell();\n }\n }\n }\n onCellKeydown(args) {\n if (this.editService.isEditingCell()) {\n const confirm = args.keyCode === Keys.Enter;\n const cancel = args.keyCode === Keys.Escape;\n const navigate = isNavigationKey(args.keyCode);\n if (confirm) {\n this.editService.closeCell(args);\n }\n else if (cancel) {\n this.editService.closeCell(args);\n this.cd.detectChanges();\n }\n else if (navigate) {\n return false;\n }\n }\n this.cellKeydown.emit(args);\n return true;\n }\n onCursorChanges(args) {\n this.activeRowIndex = args.rowIndex;\n const dataRowIndex = this.activeDataRow;\n if (this.meta && (this.meta.isVirtual &&\n args.rowIndex >= this.meta.headerRows &&\n this.viewport &&\n !this.viewport.containsRow(dataRowIndex) && dataRowIndex > -1)) {\n this.scrollRequestService.scrollTo({ row: dataRowIndex });\n }\n if (this.meta.virtualColumns && args.colIndex >= this.meta.columns.lockedLeafColumns.length) {\n const cell = this.activeCell;\n const { start, end } = this.model.cellRange(cell);\n if (!cell) {\n this.virtualCell = true;\n }\n if ((!cell && this.mode !== 0 /* Standby */) || (cell && !this.columnViewport.intersects(start, end))) {\n this.scrollRequestService.scrollTo({ column: args.colIndex - (this.metadata.hasDetailTemplate ? 1 : 0) });\n }\n }\n }\n onFocusOut(args) {\n if (isVisible(args.target)) {\n this.mode = 0 /* Standby */;\n }\n else {\n // Focused target is no longer visible,\n // reset to cursor mode and recapture focus.\n this.mode = 1 /* Cursor */;\n }\n this.deactivateElements();\n this.cursor.announce();\n }\n onWindowBlur() {\n this.mode = 0 /* Standby */;\n this.deactivateElements();\n this.cursor.announce();\n }\n onKeydown(args) {\n if (this.mode === 1 /* Cursor */) {\n this.onCursorKeydown(args);\n }\n else if (this.mode === 2 /* Content */) {\n this.onContentKeydown(args);\n }\n }\n onTabout() {\n // Tabbed out of the last focusable content element\n // reset to cursor mode and recapture focus.\n if (this.cursor.cell.focusGroup.isNavigable()) {\n // Unless the cell has a single focusable element,\n // otherwise we'd return to Content mode and enter an endless loop\n return;\n }\n this.leaveCell();\n this.cursor.reset();\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: DomEventsService }, { token: PagerContextService }, { token: ScrollRequestService }, { token: GroupsService }, { token: DetailsService }, { token: FocusRoot }, { token: EditService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: FocusableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: DomEventsService }, { type: PagerContextService }, { type: ScrollRequestService }, { type: GroupsService }, { type: DetailsService }, { type: FocusRoot }, { type: EditService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: FocusableDirective, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor(domEvents, localDataChangesService, navigationService) {\n this.domEvents = domEvents;\n this.localDataChangesService = localDataChangesService;\n this.navigationService = navigationService;\n this.changes = new EventEmitter();\n this.lastSelectionStartIndex = 0;\n this.currentSelection = [];\n this.selectAllChecked = false;\n this.active = false;\n this.dragging = false;\n this.addSubscriptions();\n }\n get enableMarquee() {\n const checkboxOnly = this.settings && typeof this.settings === 'object' && this.settings.checkboxOnly;\n if (!this.settings || checkboxOnly) {\n return false;\n }\n const selectableSettings = this.settings.selectable;\n const dragAndMultiple = typeof (selectableSettings) === 'object' &&\n isPresent(selectableSettings) &&\n selectableSettings.mode === 'multiple' &&\n selectableSettings.enabled !== false &&\n !selectableSettings.checkboxOnly &&\n selectableSettings.drag;\n return this.active && dragAndMultiple;\n }\n init(settings) {\n this.settings = settings;\n this.currentSelection = [];\n if (settings.selectable && settings.selectable.enabled !== false) {\n const iterator = this.getIterator();\n this._selectAllState = true;\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\") {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n if (settings.rowSelected(rowArgs)) {\n this.currentSelection[item.value.index] = rowArgs;\n }\n else {\n this._selectAllState = undefined;\n }\n }\n item = iterator.next();\n }\n if (this.currentSelection.length === 0) {\n this._selectAllState = false;\n }\n }\n }\n isSelected(index) {\n if (this.settings && this.active) {\n return this.options.enabled && isPresent(this.currentSelection[index]);\n }\n }\n handleClick(item, event) {\n if (this.dragging) {\n this.dragging = false;\n return;\n }\n let ev;\n const ctrlKey = event.ctrlKey || event.metaKey;\n if (this.options.mode === \"single\" && ctrlKey && this.isSelected(item.index)) {\n ev = this.toggle(item);\n }\n else if (this.options.mode === \"multiple\") {\n if (ctrlKey && !event.shiftKey) {\n ev = this.toggle(item);\n }\n else if (event.shiftKey) {\n ev = this.addAllTo(item, ctrlKey);\n }\n }\n if (!isPresent(ev)) {\n ev = this.select(item);\n this.currentSelection[item.index] = {\n dataItem: item.data,\n index: item.index\n };\n }\n if (!ev.selectedRows.length && !ev.deselectedRows.length) {\n return;\n }\n ev.ctrlKey = ctrlKey;\n ev.shiftKey = event.shiftKey;\n this.changes.emit(ev);\n }\n toggle(item) {\n let selectedRows = [];\n let deselectedRows = [];\n this.lastSelectionStartIndex = item.index;\n const rowArgs = { dataItem: item.data, index: item.index };\n if (this.isSelected(item.index)) {\n deselectedRows.push(rowArgs);\n }\n else {\n selectedRows.push(rowArgs);\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n toggleByIndex(index) {\n const iterator = this.getIterator();\n if (this.selectAllChecked && this.isSelected(index)) {\n this.selectAllChecked = false;\n }\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.index === index) {\n const itemToToggle = {\n data: item.value.data,\n index: item.value.index\n };\n if (this.isSelected(index) || this.options.mode === \"multiple\") {\n return this.toggle(itemToToggle);\n }\n else {\n return this.select(itemToToggle);\n }\n }\n item = iterator.next();\n }\n }\n select(item) {\n let deselectedRows = [];\n let selectedRows = [];\n this.lastSelectionStartIndex = item.index;\n if (!this.isSelected(item.index)) {\n selectedRows.push({ dataItem: item.data, index: item.index });\n }\n this.currentSelection.forEach((row) => {\n if (row.index !== item.index) {\n deselectedRows.push(row);\n }\n });\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n //Used to manually deselect removed items\n deselect(removedItem) {\n const iterator = this.getIterator();\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.data === removedItem) {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n if (this.isSelected(rowArgs.index)) {\n let ev = {\n ctrlKey: false,\n deselectedRows: [rowArgs],\n selectedRows: []\n };\n this.changes.emit(ev);\n }\n }\n item = iterator.next();\n }\n }\n addAllTo(item, ctrlKey) {\n let selectedRows = [];\n let deselectedRows = [];\n const start = Math.min(this.lastSelectionStartIndex, item.index);\n const end = Math.max(this.lastSelectionStartIndex, item.index);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = { dataItem: next.value.data, index: idx };\n if ((idx < start || idx > end) && this.isSelected(idx) && !ctrlKey) {\n deselectedRows.push(rowArgs);\n }\n if ((idx >= start && idx <= end) && !this.isSelected(idx)) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n updateAll(selectAllChecked) {\n this.selectAllChecked = selectAllChecked;\n let selectedRows = [];\n let deselectedRows = [];\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = { dataItem: next.value.data, index: idx };\n if (this.isSelected(idx) && !selectAllChecked) {\n deselectedRows.push(rowArgs);\n }\n if (!this.isSelected(idx) && selectAllChecked) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n if (!selectedRows.length && !deselectedRows.length) {\n return;\n }\n let ev = {\n ctrlKey: true,\n deselectedRows: deselectedRows,\n selectedRows: selectedRows,\n shiftKey: true\n };\n this.changes.emit(ev);\n }\n selectRange(startIndex, endIndex) {\n let selectedRows = [];\n let deselectedRows = [];\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = { dataItem: next.value.data, index: idx };\n if ((idx < start || idx > end) && this.isSelected(idx)) {\n deselectedRows.push(rowArgs);\n }\n if ((idx >= start && idx <= end) && !this.isSelected(idx)) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n get selectAllState() {\n return this._selectAllState;\n }\n get selected() {\n return this.currentSelection.map((item) => {\n return item.index;\n }).filter((n) => typeof n === \"number\");\n }\n get options() {\n const defaultOptions = {\n checkboxOnly: false,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.settings)) {\n return defaultOptions;\n }\n if (typeof this.settings.selectable === 'boolean') {\n return {\n checkboxOnly: false,\n enabled: this.settings.selectable,\n mode: \"multiple\"\n };\n }\n else {\n return Object.assign(defaultOptions, this.settings.selectable);\n }\n }\n ngOnDestroy() {\n this.removeSubscriptions();\n }\n targetArgs() {\n return {\n index: this.mouseDownEventArgs.rowIndex,\n dataItem: this.mouseDownEventArgs.dataItem\n };\n }\n addSubscriptions() {\n if (!this.cellClickSubscription) {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe((args) => {\n if (this.options.enabled && !this.options.checkboxOnly && args.type !== 'contextmenu') {\n if (this.active) {\n this.handleClick({ index: args.rowIndex, data: args.dataItem }, args.originalEvent);\n }\n }\n });\n }\n if (!this.mousedownSubscription) {\n this.mousedownSubscription = this.domEvents.cellMousedown.subscribe((args) => {\n this.mouseDownEventArgs = args;\n if ((this.options.enabled && (!this.options.mode || this.options.mode === \"multiple\") &&\n !this.options.checkboxOnly && args.originalEvent.shiftKey)) {\n if (this.active) {\n args.originalEvent.preventDefault();\n this.navigationService.focusCellByElement(args.originalEvent.target);\n }\n }\n });\n }\n if (this.localDataChangesService && !this.dataChangedSubscription) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe((args) => {\n if (this.active) {\n if (isPresent(args.action) && args.action === 'remove') {\n this.deselect(args.item);\n }\n }\n });\n }\n }\n getIterator() {\n const accessor = this.settings.view.accessor();\n if (!accessor) {\n return;\n }\n return accessor[iterator]();\n }\n removeSubscriptions() {\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n this.cellClickSubscription = null;\n }\n if (this.mousedownSubscription) {\n this.mousedownSubscription.unsubscribe();\n this.mousedownSubscription = null;\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n this.dataChangedSubscription = null;\n }\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [{ token: DomEventsService }, { token: LocalDataChangesService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; } });\n\n/**\n * @hidden\n */\nclass CellSelectionService {\n constructor(domEvents, localDataChangesService, navigationService) {\n this.domEvents = domEvents;\n this.localDataChangesService = localDataChangesService;\n this.navigationService = navigationService;\n this.changes = new EventEmitter();\n this.mouseUpEvent = new EventEmitter();\n this.currentSelection = [];\n this.active = false;\n this.dragging = false;\n this.dragSelectDeselect = false;\n this.lastSelectionItem = { itemKey: 0, columnKey: 0 };\n this.lastSelectionItemRowIndex = 0;\n this.lastSelectionItemColIndex = 0;\n this.addSubscriptions();\n }\n get enableMarquee() {\n const checkboxOnly = this.settings && typeof this.settings === 'object' && this.settings.checkboxOnly;\n if (!this.settings || checkboxOnly) {\n return false;\n }\n const selectableSettings = this.settings.selectable;\n const dragAndMultiple = typeof (selectableSettings) === 'object' &&\n isPresent(selectableSettings) &&\n selectableSettings.mode === 'multiple' &&\n selectableSettings.cell &&\n selectableSettings.enabled !== false &&\n selectableSettings.drag;\n return this.active && dragAndMultiple;\n }\n init(settings) {\n this.settings = settings;\n this.currentSelection = [];\n if (settings.selectable && settings.selectable.enabled !== false) {\n const iterator = this.getIterator();\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\") {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n settings.columns.forEach(col => {\n const selectedCellArgs = settings.cellSelected(rowArgs, col, col.leafIndex);\n if (selectedCellArgs.selected) {\n this.currentSelection.push(selectedCellArgs.item);\n }\n });\n }\n item = iterator.next();\n }\n }\n }\n isCellSelected(item, col) {\n if (this.settings && this.active) {\n const selectedCellArgs = this.settings.cellSelected({ dataItem: item.data, index: item.index }, col, col.leafIndex);\n return this.options.enabled && selectedCellArgs.selected;\n }\n return false;\n }\n handleClick(item, event) {\n if (this.dragging) {\n this.dragging = false;\n return;\n }\n let ev;\n const ctrlKey = event.ctrlKey || event.metaKey;\n if (this.options.mode === \"single\" && ctrlKey && this.isCellSelected(item, item.column)) {\n ev = this.toggle(item);\n }\n else if (this.options.mode === \"multiple\") {\n if (ctrlKey && !event.shiftKey) {\n ev = this.toggle(item);\n }\n else if (event.shiftKey) {\n const startRowIndex = Math.min(this.lastSelectionItemRowIndex, item.index);\n const startColIndex = Math.min(this.lastSelectionItemColIndex, item.column.leafIndex);\n const endRowIndex = Math.max(this.lastSelectionItemRowIndex, item.index);\n const endColIndex = Math.max(this.lastSelectionItemColIndex, item.column.leafIndex);\n ev = this.selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex);\n }\n }\n if (!isPresent(ev)) {\n ev = this.select(item);\n this.currentSelection = [this.lastSelectionItem];\n }\n if (!ev.selectedCells.length && !ev.deselectedCells.length) {\n return;\n }\n ev.ctrlKey = ctrlKey;\n ev.shiftKey = event.shiftKey;\n this.changes.emit(ev);\n }\n toggle(item) {\n let selectedCells = [];\n let deselectedCells = [];\n this.lastSelectionItem =\n this.settings.cellSelected({ dataItem: item.data, index: item.index }, item.column, item.column.leafIndex).item;\n this.lastSelectionItemRowIndex = item.index;\n this.lastSelectionItemColIndex = item.column.leafIndex;\n if (this.isCellSelected(item, item.column)) {\n deselectedCells.push(this.lastSelectionItem);\n }\n else {\n selectedCells.push(this.lastSelectionItem);\n }\n return {\n deselectedCells,\n selectedCells\n };\n }\n select(item) {\n const selectedCells = [];\n const deselectedCells = [];\n this.lastSelectionItem =\n this.settings.cellSelected({ dataItem: item.data, index: item.index }, item.column, item.column.leafIndex).item;\n this.lastSelectionItemRowIndex = item.index;\n this.lastSelectionItemColIndex = item.column.leafIndex;\n if (!this.isCellSelected(item, item.column)) {\n selectedCells.push(this.lastSelectionItem);\n }\n this.currentSelection.forEach((selectedItem) => {\n if (selectedItem.itemKey !== this.lastSelectionItem.itemKey || selectedItem.columnKey !== this.lastSelectionItem.columnKey) {\n deselectedCells.push(selectedItem);\n }\n });\n return {\n deselectedCells,\n selectedCells\n };\n }\n //Used to manually deselect removed items\n deselect(removedItem) {\n const iterator = this.getIterator();\n let item = iterator.next();\n let rowArgs;\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.data === removedItem) {\n rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n break;\n }\n item = iterator.next();\n }\n if (rowArgs) {\n const cellsToRemove = this.currentSelection.filter(selectedItem => {\n const contender = this.settings.cellSelected(rowArgs, null, null).item;\n return selectedItem.itemKey === contender.itemKey;\n });\n if (cellsToRemove.length) {\n let ev = {\n ctrlKey: false,\n deselectedCells: cellsToRemove,\n selectedCells: []\n };\n this.changes.emit(ev);\n }\n }\n }\n selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex) {\n const selectedCells = [];\n const deselectedCells = [];\n const selectionStartRow = Math.min(startRowIndex, endRowIndex);\n const selectionStartCol = Math.min(startColIndex, endColIndex);\n const selectionEndRow = Math.max(startRowIndex, endRowIndex);\n const selectionEndCol = Math.max(startColIndex, endColIndex);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const data = next.value.data;\n const rowArgs = {\n dataItem: data,\n index: idx\n };\n this.settings.columns.forEach(col => {\n const { item } = this.settings.cellSelected(rowArgs, col, col.leafIndex);\n const selected = this.isCellSelected(next.value, col);\n const isInRowRange = selectionStartRow <= idx && idx <= selectionEndRow;\n const isInColRange = selectionStartCol <= col.leafIndex && col.leafIndex <= selectionEndCol;\n const isInSelectionRect = isInRowRange && isInColRange;\n if (!isInSelectionRect && selected) {\n deselectedCells.push(item);\n }\n if (isInSelectionRect && !selected) {\n selectedCells.push(item);\n }\n });\n }\n next = iterator.next();\n }\n return {\n deselectedCells,\n selectedCells\n };\n }\n get options() {\n const defaultOptions = {\n checkboxOnly: false,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.settings)) {\n return defaultOptions;\n }\n if (typeof this.settings.selectable === 'boolean') {\n return {\n checkboxOnly: false,\n enabled: this.settings.selectable,\n mode: \"multiple\"\n };\n }\n else {\n return Object.assign(defaultOptions, this.settings.selectable);\n }\n }\n ngOnDestroy() {\n this.removeSubscriptions();\n }\n addSubscriptions() {\n if (!this.cellClickSubscription) {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe((args) => {\n if (this.options.enabled && !this.options.checkboxOnly && args.type !== 'contextmenu') {\n if (this.active) {\n this.handleClick({ index: args.rowIndex, data: args.dataItem, column: args.column }, args.originalEvent);\n }\n }\n });\n }\n if (!this.mousedownSubscription) {\n this.mousedownSubscription = this.domEvents.cellMousedown.subscribe((args) => {\n this.mouseDownEventArgs = args;\n if (this.options.enabled && (!this.options.mode || this.options.mode === \"multiple\") &&\n !this.options.checkboxOnly && args.originalEvent.shiftKey) {\n if (this.active) {\n args.originalEvent.preventDefault();\n this.navigationService.focusCellByElement(args.originalEvent.target);\n }\n }\n });\n }\n if (this.localDataChangesService && !this.dataChangedSubscription) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe((args) => {\n if (this.active) {\n if (isPresent(args.action) && args.action === 'remove') {\n this.deselect(args.item);\n }\n }\n });\n }\n }\n getIterator() {\n const accessor = this.settings.view.accessor();\n if (!accessor) {\n return;\n }\n return accessor[iterator]();\n }\n removeSubscriptions() {\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n this.cellClickSubscription = null;\n }\n if (this.mousedownSubscription) {\n this.mousedownSubscription.unsubscribe();\n this.mousedownSubscription = null;\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n this.dataChangedSubscription = null;\n }\n }\n}\nCellSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellSelectionService, deps: [{ token: DomEventsService }, { token: LocalDataChangesService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Injectable });\nCellSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellSelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellSelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DomEventsService }, { type: LocalDataChangesService }, { type: NavigationService }]; } });\n\nconst createElement$1 = () => {\n const marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n const marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n return marquee;\n};\nconst POINTER_OFFSET = 2;\nconst MINIMAL_DRAG_DISTANCE = 5;\nconst offsets = {\n topLeft: { x: POINTER_OFFSET, y: POINTER_OFFSET },\n topRight: { x: -POINTER_OFFSET, y: POINTER_OFFSET },\n bottomLeft: { x: POINTER_OFFSET, y: -POINTER_OFFSET },\n bottomRight: { x: -POINTER_OFFSET, y: -POINTER_OFFSET }\n};\n/**\n * @hidden\n */\nclass GridMarqueeDirective {\n constructor(draggable, selection, cellSelection, domEvents) {\n this.draggable = draggable;\n this.selection = selection;\n this.cellSelection = cellSelection;\n this.domEvents = domEvents;\n this.selectionStarted = false;\n }\n get webkitUserSelection() {\n return (this.cellSelection.enableMarquee || this.selection.enableMarquee) ? 'none' : null;\n }\n get userSelection() {\n return (this.cellSelection.enableMarquee || this.selection.enableMarquee);\n }\n ngOnInit() {\n this.subscriptions = (this.draggable.kendoPress.subscribe(this.start.bind(this)));\n this.subscriptions.add(this.draggable.kendoDrag.subscribe(this.moveMarquee.bind(this)));\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.clean();\n }\n start(args) {\n if (args.originalEvent.target.classList.contains('k-checkbox')) {\n this.pressArgs = null;\n return;\n }\n this.pressArgs = args;\n this.pressTarget = null;\n }\n moveMarquee(args) {\n if (!this.pressTarget) {\n this.pressTarget = this.cellSelection.active ? this.cellSelection.mouseDownEventArgs : this.selection.mouseDownEventArgs;\n }\n const press = this.pressArgs;\n if (!press) {\n return;\n }\n if (!this.selectionStarted) {\n const distance = Math.sqrt(Math.pow((args.pageX - press.pageX), 2) + Math.pow((args.pageY - press.pageY), 2));\n if (distance > MINIMAL_DRAG_DISTANCE) {\n this.selectionStarted = true;\n this.dragEndSubscription = merge(this.domEvents.cellMouseup.pipe(take(1)), this.draggable.kendoRelease.pipe(delay(1), take(1)))\n .subscribe(this.endSelection.bind(this));\n }\n else {\n return;\n }\n }\n this.initMarquee();\n const element = this.marqueeElement;\n const marqueeQuadrant = this.getMarqueeQuadrant(args.pageX, args.pageY, press.pageX, press.pageY);\n let left = Math.min(args.pageX, press.pageX);\n let top = Math.min(args.pageY, press.pageY);\n const width = Math.abs(args.pageX - press.pageX);\n const height = Math.abs(args.pageY - press.pageY);\n if (marqueeQuadrant) {\n left += offsets[marqueeQuadrant].x;\n top += offsets[marqueeQuadrant].y;\n }\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n }\n endSelection(args) {\n if (args.type === 'mouseup' || args.type === 'touchend') {\n if (this.cellSelection.active) {\n this.cellSelection.dragging = true;\n this.cellSelection.changes.emit(this.cellSelection.selectRange(this.pressTarget.rowIndex, this.pressTarget.column.leafIndex, args.rowIndex, args.column.leafIndex));\n }\n else if (this.selection.active) {\n this.selection.dragging = true;\n this.selection.changes.emit(this.selection.selectRange(this.pressTarget.rowIndex, args.rowIndex));\n }\n }\n this.clean();\n }\n clean() {\n if (this.marqueeElement) {\n document.body.removeChild(this.marqueeElement);\n this.marqueeElement = null;\n }\n if (this.dragEndSubscription) {\n this.dragEndSubscription.unsubscribe();\n }\n this.dragEndSubscription = null;\n this.pressTarget = null;\n this.pressArgs = null;\n this.selectionStarted = false;\n // eslint-disable-next-line no-unused-expressions\n this.cellSelection.active ? this.cellSelection.dragging = false : this.selection.dragging = false;\n }\n initMarquee() {\n if (!this.marqueeElement) {\n this.marqueeElement = createElement$1();\n document.body.appendChild(this.marqueeElement);\n }\n }\n getMarqueeQuadrant(pointerX, pointerY, startX, startY) {\n const leftHalf = pointerX < startX;\n const rightHalf = pointerX > startX;\n const topHalf = pointerY < startY;\n const bottomHalf = pointerY > startY;\n if (leftHalf && topHalf) {\n return 'topLeft';\n }\n if (leftHalf && bottomHalf) {\n return 'bottomLeft';\n }\n if (rightHalf && topHalf) {\n return 'topRight';\n }\n if (rightHalf && bottomHalf) {\n return 'bottomRight';\n }\n return null;\n }\n}\nGridMarqueeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMarqueeDirective, deps: [{ token: i1$1.DraggableDirective }, { token: SelectionService }, { token: CellSelectionService }, { token: DomEventsService }], target: i0.ɵɵFactoryTarget.Directive });\nGridMarqueeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridMarqueeDirective, selector: \"[kendoGridSelectionMarquee]\", host: { properties: { \"style.-webkit-user-select\": \"this.webkitUserSelection\", \"class.user-select-none\": \"this.userSelection\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMarqueeDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectionMarquee]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective }, { type: SelectionService }, { type: CellSelectionService }, { type: DomEventsService }]; }, propDecorators: { webkitUserSelection: [{\n type: HostBinding,\n args: ['style.-webkit-user-select']\n }], userSelection: [{\n type: HostBinding,\n args: ['class.user-select-none']\n }] } });\n\n/**\n * @hidden\n */\nclass ZoneAwareEventEmitter extends EventEmitter {\n constructor(ngZone, isAsync = false) {\n super(isAsync);\n this.ngZone = ngZone;\n }\n subscribe(generatorOrNext, error, complete) {\n let schedulerFn;\n let errorFn = (_) => null;\n let completeFn = () => null;\n if (generatorOrNext && typeof generatorOrNext === 'object') {\n schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext.next(value)); };\n if (generatorOrNext.error) {\n errorFn = (err) => { this.ngZone.run(() => generatorOrNext.error(err)); };\n }\n if (generatorOrNext.complete) {\n completeFn = () => { this.ngZone.run(() => generatorOrNext.complete()); };\n }\n }\n else {\n schedulerFn = (value) => { this.ngZone.run(() => generatorOrNext(value)); };\n if (error) {\n errorFn = (err) => { this.ngZone.run(() => error(err)); };\n }\n if (complete) {\n completeFn = () => { this.ngZone.run(() => complete()); };\n }\n }\n return super.subscribe(schedulerFn, errorFn, completeFn);\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-grid',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652253736,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the column cell template of the Grid ([more information and example]({% slug templates_columns_grid %}#toc-cell-template)).\n * Helps to customize the content of the cells. To define the cell template, nest an `` tag\n * with the `kendoGridCellTemplate` directive inside a `` tag.\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `columnIndex`—The current column index. Use it as an alias for a template variable by utilizing the `let-columnIndex=\"columnIndex\"` syntax.\n * - `rowIndex`—The current data row index. Use it as an alias for a template variable by utilizing the `let-rowIndex=\"rowIndex\"` syntax.\n * - `dataItem`—The current data item. Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax—for example, `let-dataItem`.\n * - `column`—The current column instance. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Data Row #: {{rowIndex}} /\n * {{dataItem.ProductName}}\n * ({{dataItem.Discontinued ? \"discontinued\" : \"active\"}})\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellTemplateDirective, selector: \"[kendoGridCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group-header cell template of the Grid which helps to customize the content of the group header item.\n * To define the group header template, nest an `` tag with the `kendoGridGroupHeaderTemplate`\n * directive inside ``.\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `group`—The current group item.\n * - `field`—The name of the field by which data is grouped.\n * - `value`—The current group value.\n * - `aggregates`—All aggregate values for the current group.\n * - `index`—The index of the current group.\n * - `expanded`—A boolean value indicating if the group is currently expanded.\n * ([see example]({% slug groupable_grid_with_aggregates %})).\n *\n * @example\n * ```ts\n * import { process } from '@progress/kendo-data-query';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * {{field}}: {{value}}\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public groups = [{ field: \"ProductName\" }];\n *\n * public gridData = process([{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ], {\n * group: this.groups\n * });\n * }\n *\n * ```\n */\nclass GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderTemplateDirective, selector: \"[kendoGridGroupHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the group-header column template of the Grid which helps to customize the content of the group headers.\n * To define the group header template, nest an `` tag with the `kendoGridGroupHeaderColumnTemplate`\n * directive inside ``. ([See example]({% slug groupable_grid_with_aggregates %})).\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `group`—The current group item.\n * - `field`—The name of the field by which data is grouped.\n * - `value`—The current group value.\n * - `aggregates`—All aggregate values for the current group.\n *\n * @example\n * ```ts\n * \n * \n * \n * Count: {{ aggregates.Discontinued.count }}\n * \n * \n * \n * ```\n */\nclass GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupHeaderColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupHeaderColumnTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderColumnTemplateDirective, selector: \"[kendoGridGroupHeaderColumnTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderColumnTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupHeaderColumnTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column edit-cell template of the Grid ([see example]({% slug editing_template_forms_grid %})).\n * Helps to customize the content of the edited cells. To define the cell template, nest an ``\n * tag with the `kendoGridEditTemplate` directive inside a `` tag.\n *\n * The template context is set to the current form group and the following additional fields are passed:\n * - `formGroup`—The current [FormGroup]({{ site.data.urls.angular['formgroupapi'] }}).\n * Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax—for example, `let-formGroup`.\n * If you use the Grid inside [Template-Driven Forms]({{ site.data.urls.angular['forms'] }}), it will be `undefined`.\n * - `rowIndex`—The current data row index. If inside a new item row, `rowIndex` is `-1`. Use it as an alias for a template variable by utilizing the `let-rowIndex=\"rowIndex\"` syntax.\n * - `dataItem`—The current data item. Use it as an alias for a template variable by utilizing the `let-dataItem=\"dataItem\"` syntax.\n * - `column`—The current column instance. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n * - `isNew`—The state of the current item. Use it as an alias for a template variable by utilizing the `let-isNew=\"isNew\"` syntax.\n */\nclass EditTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nEditTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nEditTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditTemplateDirective, selector: \"[kendoGridEditTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column group footer cell template of the Grid which helps to customize the group footer cell for the column.\n * To define the group footer template, nest an `` tag with the `kendoGridGroupFooterTemplate` directive\n * inside ``.\n *\n * The template context is set to the current aggregates and the following additional fields are passed:\n * - `column`—Defines an instance of the `ColumnComponent` option.\n * - `field`—The current column field name.\n * - `group`—The current group data item.\n * - `aggregates`—All aggregate values for the current group.\n *\n * @example\n * ```ts-preview\n * import { process } from '@progress/kendo-data-query';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Count: {{aggregates[field].count}}\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public groups = [{ field: \"ProductName\", aggregates: [{ field: \"ProductName\", aggregate: \"count\" }] }];\n *\n * public gridData = process([{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ], {\n * group: this.groups\n * });\n * }\n * ```\n */\nclass GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nGroupFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupFooterTemplateDirective, selector: \"[kendoGridGroupFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupFooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridGroupFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column header cell template of the Grid\n * ([more information and example]({% slug templates_columns_grid %}#toc-header-template)).\n * Helps to customize the table header cell for the column.\n * To define a header template, nest an `` tag with the\n * [kendoGridHeaderTemplate]({% slug api_grid_headertemplatedirective %}) directive inside the `` tag.\n *\n * The template context is set to the current column and then the following additional fields are passed:\n * * `column`—Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.\n * * `columnIndex`—Defines the current column index.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTemplateDirective, selector: \"[kendoGridHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the column footer cell template of the Grid\n * ([more information and example]({% slug templates_columns_grid %}#toc-footer-template)).\n * Helps to customize the table footer cell for the column.\n * To define a footer template, nest an `` tag with the\n * [kendoGridFooterTemplate]({% slug api_grid_footertemplatedirective %}) directive inside the `` tag.\n *\n * The template context is set to the current column and the following additional fields are passed:\n * * `column`—Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.\n * * `columnIndex`—Defines the current column index.\n *\n * For more information on how to display aggregates in the footer of the Grid,\n * refer to the article on [aggregates]({% slug groupable_grid_with_aggregates %}).\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterTemplateDirective, selector: \"[kendoGridFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the column menu in the Grid. Provides an option for\n * customizing the content of the column menu for all or for specific columns.\n * To define the content template, nest an `` tag with the\n * `kendoGridColumnMenuTemplate` directive inside the `kendo-grid` or the `` component.\n *\n * The template context is passes through the following fields:\n * - `service`—Represents the [ColumnMenuService]({% slug api_grid_columnmenuservice %}).\n * - `column`—Represents the Grid column.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }, { Field1: 'Foo1', Field2: 'Bar1' }];\n * }\n *\n * ```\n */\nclass ColumnMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnMenuTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nColumnMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuTemplateDirective, selector: \"[kendoGridColumnMenuTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnMenuTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n// Incremented each time the service is instantiated.\nlet sequence = 0;\n/**\n * @hidden\n */\nclass IdService {\n constructor() {\n this.prefix = `k-grid${sequence++}`;\n }\n gridId() {\n return this.prefix;\n }\n cellId(rowIndex, colIndex) {\n return `${this.prefix}-r${rowIndex}c${colIndex}`;\n }\n selectionCheckboxId(itemIndex) {\n return `${this.prefix}-checkbox${itemIndex}`;\n }\n selectAllCheckboxId() {\n return `${this.prefix}-select-all`;\n }\n}\nIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IdService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IdService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * @hidden\n */\nconst isSpanColumn = column => column.isSpanColumn;\n/**\n * @hidden\n */\nconst isCheckboxColumn = column => column.isCheckboxColumn;\nconst isColumnContainer = column => column.isColumnGroup || isSpanColumn(column);\n/**\n * The base class for the column components of the Grid.\n */\nclass ColumnBase {\n /**\n * @hidden\n */\n constructor(parent, idService) {\n this.parent = parent;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n /**\n * The column index after reordering.\n *\n * > `orderIndex` is a read-only property. Setting this field does not affect column order.\n */\n this.orderIndex = 0;\n /**\n * @hidden\n */\n this.isColumnGroup = false;\n /**\n * @hidden\n */\n this.isSpanColumn = false;\n /**\n * Indicates whether the column is resizable.\n * @default true\n */\n this.resizable = true;\n /**\n * Indicates whether the column is reorderable.\n * @default true\n */\n this.reorderable = true;\n /**\n * The width (in pixels) below which the user is not able to resize the column by using the UI.\n */\n this.minResizableWidth = 10;\n this._locked = false;\n /**\n * Determines whether the column will be always visible when scrolling the Grid horizontally.\n *\n * @default false\n */\n this.sticky = false;\n /**\n * Specifies if the column can be locked or unlocked from the column menu or by reordering the columns.\n */\n this.lockable = true;\n /**\n * Specifies if the column can be stuck or unstuck from the column menu.\n */\n this.stickable = true;\n /**\n * Specifies if the column menu will be shown for the column.\n */\n this.columnMenu = true;\n /**\n * Specifies if the column will be included in the column-chooser list.\n */\n this.includeInChooser = true;\n /**\n * @hidden\n */\n this.headerTemplates = new QueryList();\n /**\n * @hidden\n */\n this.columnMenuTemplates = new QueryList();\n this.idService = idService;\n if (parent && idService && parent.idService.gridId() === idService.gridId() && !isColumnContainer(parent)) {\n throw new Error('Columns can be nested only inside ColumnGroupComponent');\n }\n }\n /**\n * @hidden\n */\n set leafIndex(value) {\n this._leafIndex = value;\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this._leafIndex;\n }\n /**\n * The width of the column (in pixels).\n */\n set width(value) {\n if (typeof value === 'string') {\n const parsedValue = this._width = parseInt(value, 10);\n if (isDevMode()) {\n console.warn(`Expected numeric value for column width, but got a string \"${value}\". Treating as ${parsedValue}px.`);\n }\n }\n else {\n this._width = value;\n }\n }\n get width() { return this._width; }\n /**\n * Toggles the locked (frozen) state of the columns ([more information and example]({% slug locked_columns_grid %})).\n *\n * @default false\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\n set locked(value) {\n this._locked = value;\n }\n get locked() {\n return this._locked;\n }\n /**\n * @hidden\n */\n get level() {\n if (this.parent && isSpanColumn(this.parent)) {\n return this.parent.level;\n }\n return this.parent ? this.parent.level + 1 : 0;\n }\n /**\n * @hidden\n */\n get isLocked() {\n return this.parent ? this.parent.isLocked : this.locked;\n }\n /**\n * @hidden\n */\n get colspan() {\n return 1;\n }\n /**\n * @hidden\n */\n rowspan(totalColumnLevels) {\n return this.level < totalColumnLevels ? (totalColumnLevels - this.level) + 1 : 1;\n }\n /**\n * @hidden\n */\n get headerTemplateRef() {\n const template = this.headerTemplates.first;\n return template ? template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get footerTemplateRef() {\n return this.footerTemplate ? this.footerTemplate.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get columnMenuTemplateRef() {\n const template = this.columnMenuTemplates.first;\n return template ? template.templateRef : null;\n }\n /**\n * @hidden\n */\n get displayTitle() {\n return this.title;\n }\n /**\n * @hidden\n */\n get isVisible() {\n return !this.hidden && this.matchesMedia;\n }\n}\nColumnBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, deps: [{ token: ColumnBase }, { token: IdService }], target: i0.ɵɵFactoryTarget.Component });\nColumnBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnBase, selector: \"kendo-grid-column-base\", inputs: { resizable: \"resizable\", reorderable: \"reorderable\", minResizableWidth: \"minResizableWidth\", title: \"title\", width: \"width\", autoSize: \"autoSize\", locked: \"locked\", sticky: \"sticky\", hidden: \"hidden\", media: \"media\", lockable: \"lockable\", stickable: \"stickable\", columnMenu: \"columnMenu\", includeInChooser: \"includeInChooser\", style: \"style\", headerStyle: \"headerStyle\", filterStyle: \"filterStyle\", footerStyle: \"footerStyle\", cssClass: [\"class\", \"cssClass\"], headerClass: \"headerClass\", filterClass: \"filterClass\", footerClass: \"footerClass\" }, queries: [{ propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"headerTemplates\", predicate: HeaderTemplateDirective }, { propertyName: \"columnMenuTemplates\", predicate: ColumnMenuTemplateDirective }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-column-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase }, { type: IdService }]; }, propDecorators: { resizable: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], minResizableWidth: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], autoSize: [{\n type: Input\n }], locked: [{\n type: Input\n }], sticky: [{\n type: Input\n }], hidden: [{\n type: Input\n }], media: [{\n type: Input\n }], lockable: [{\n type: Input\n }], stickable: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], includeInChooser: [{\n type: Input\n }], style: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], filterStyle: [{\n type: Input\n }], footerStyle: [{\n type: Input\n }], cssClass: [{\n type: Input,\n args: ['class']\n }], headerClass: [{\n type: Input\n }], filterClass: [{\n type: Input\n }], footerClass: [{\n type: Input\n }], headerTemplates: [{\n type: ContentChildren,\n args: [HeaderTemplateDirective, { descendants: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], columnMenuTemplates: [{\n type: ContentChildren,\n args: [ColumnMenuTemplateDirective]\n }] } });\n\n/**\n * Represents the filter-cell template ([see example]({% slug builtinfiltertemplate_grid %}#toc-customizing-filter-rows)).\n */\nclass FilterCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFilterCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFilterCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellTemplateDirective, selector: \"[kendoGridFilterCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the filter-menu template\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-customizing-filter-menus)).\n */\nclass FilterMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFilterMenuTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFilterMenuTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuTemplateDirective, selector: \"[kendoGridFilterMenuTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterMenuTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nfunction isColumnComponent(column) {\n return isPresent(column.field);\n}\n/**\n * Represents the columns of the [Angular Data Grid]({% slug overview_grid %}).\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass ColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n /**\n * Allows the column headers to be clicked and the `sortChange` event emitted.\n * You have to handle the `sortChange` event yourself and sort the data.\n */\n this.sortable = true;\n /**\n * Determines if the column can be dragged to the group panel. The default value is `true`.\n * If set to `false`, you can group the columns by the column field by using the API of the Grid.\n */\n this.groupable = true;\n /**\n * Defines the editor type ([see example]({% slug editing_reactive_forms_grid %}#toc-setup)).\n * Used when the column enters the edit mode. The default value is `text`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.editor = 'text';\n /**\n * Defines the filter type that is displayed inside the filter row. The default value is `text`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.filter = 'text';\n /**\n * Defines if a filter UI will be displayed for this column. The default value is `true`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.filterable = true;\n /**\n * Defines whether the column is editable. The default value is `true`.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\n this.editable = true;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n get groupHeaderTemplateRef() {\n return this.groupHeaderTemplate ? this.groupHeaderTemplate.templateRef : undefined;\n }\n get groupHeaderColumnTemplateRef() {\n return this.groupHeaderColumnTemplate ? this.groupHeaderColumnTemplate.templateRef : undefined;\n }\n get groupFooterTemplateRef() {\n return this.groupFooterTemplate ? this.groupFooterTemplate.templateRef : undefined;\n }\n get editTemplateRef() {\n return this.editTemplate ? this.editTemplate.templateRef : undefined;\n }\n get filterCellTemplateRef() {\n return this.filterCellTemplate ? this.filterCellTemplate.templateRef : undefined;\n }\n get filterMenuTemplateRef() {\n return this.filterMenuTemplate ? this.filterMenuTemplate.templateRef : undefined;\n }\n get displayTitle() {\n return this.title === undefined ? this.field : this.title;\n }\n}\nColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnComponent, selector: \"kendo-grid-column\", inputs: { field: \"field\", format: \"format\", sortable: \"sortable\", groupable: \"groupable\", editor: \"editor\", filter: \"filter\", filterable: \"filterable\", editable: \"editable\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"groupHeaderTemplate\", first: true, predicate: GroupHeaderTemplateDirective, descendants: true }, { propertyName: \"groupHeaderColumnTemplate\", first: true, predicate: GroupHeaderColumnTemplateDirective, descendants: true }, { propertyName: \"groupFooterTemplate\", first: true, predicate: GroupFooterTemplateDirective, descendants: true }, { propertyName: \"editTemplate\", first: true, predicate: EditTemplateDirective, descendants: true }, { propertyName: \"filterCellTemplate\", first: true, predicate: FilterCellTemplateDirective, descendants: true }, { propertyName: \"filterMenuTemplate\", first: true, predicate: FilterMenuTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }\n ],\n selector: 'kendo-grid-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { field: [{\n type: Input\n }], format: [{\n type: Input\n }], sortable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], editor: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterable: [{\n type: Input\n }], editable: [{\n type: Input\n }], template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], groupHeaderTemplate: [{\n type: ContentChild,\n args: [GroupHeaderTemplateDirective, { static: false }]\n }], groupHeaderColumnTemplate: [{\n type: ContentChild,\n args: [GroupHeaderColumnTemplateDirective, { static: false }]\n }], groupFooterTemplate: [{\n type: ContentChild,\n args: [GroupFooterTemplateDirective, { static: false }]\n }], editTemplate: [{\n type: ContentChild,\n args: [EditTemplateDirective, { static: false }]\n }], filterCellTemplate: [{\n type: ContentChild,\n args: [FilterCellTemplateDirective, { static: false }]\n }], filterMenuTemplate: [{\n type: ContentChild,\n args: [FilterMenuTemplateDirective, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nfunction isSpanColumnComponent(column) {\n return column.isSpanColumn;\n}\n/**\n * Represents a column which can be spanned over multiple data cells while the individual\n * header and footer cells are retained ([see example]({% slug spanned_columns_grid %})).\n * Enables you to achieve more flexible layout while keeping the built-in UI element for\n * [sorting]({% slug sorting_grid %}), [filtering]({% slug filtering_grid %}), and\n * [grouping]({% slug groupingbasics_grid %}). Wrap the columns that will be\n * merged inside the `` tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * }\n *\n * ```\n *\n * By default, the data cell displays the data for the specified fields. To further customize\n * the span-column functionality, use a [cell template]({% slug api_grid_celltemplatedirective %}).\n *\n * ```html-no-run\n * \n * \n * \n * \n *
{{ dataItem.field1 }}
\n *

{{ dataItem.field2 }}

\n *
\n *
\n * ```\n */\nclass SpanColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n /*\n * @hidden\n */\n this.isSpanColumn = true;\n this.template = new QueryList();\n this.editTemplate = new QueryList();\n /**\n * @hidden\n */\n this.childColumns = new QueryList();\n /**\n * @hidden\n */\n this.includeInChooser = false;\n this._editable = true;\n if (parent && parent.isSpanColumn) {\n throw new Error('SpanColumn cannot be nested inside another SpanColumn');\n }\n }\n /**\n * Defines whether the edit template of the column will be rendered. The default value is `false`.\n *\n * > To enable the editing functionality for a spanned column, set an edit template for it.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * .....\n * \n * \n * \n * ```\n */\n set editable(value) {\n this._editable = value;\n }\n get editable() {\n return isPresent(this.editTemplateRef) && this._editable;\n }\n /**\n * @hidden\n * added for backwards compitability\n */\n set width(_value) {\n }\n get width() {\n return this.childColumns.reduce((total, column) => total + column.width, 0);\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this.childColumns.first.leafIndex;\n }\n /**\n * @hidden\n */\n get templateRef() {\n const template = this.template.first;\n return template ? template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get editTemplateRef() {\n const editTemplate = this.editTemplate.first;\n return editTemplate ? editTemplate.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get colspan() {\n return this.childColumns.filter(c => c.isVisible).length;\n }\n /**\n * Toggles the locked (frozen) state of the columns. Locked columns are visible\n * at all times during the horizontal scrolling of the Grid.\n *\n * For the option to work properly, make sure that:\n * - Scrolling is enabled.\n * - The `height` option of the Grid is set.\n * - The widths of all Grid columns are explicitly set in pixels. In this way,\n * the Grid adjusts the layout of the locked and unlocked columns.\n *\n * @default false\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\n set locked(value) {\n this._locked = value;\n }\n get locked() {\n return this._locked || this.childColumns.some(c => c.locked);\n }\n get childrenArray() {\n return this.childColumns.toArray();\n }\n get hasChildren() {\n return this.childColumns.length > 0;\n }\n}\nSpanColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SpanColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nSpanColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SpanColumnComponent, selector: \"kendo-grid-span-column\", inputs: { editable: \"editable\", locked: \"locked\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => SpanColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", predicate: CellTemplateDirective }, { propertyName: \"editTemplate\", predicate: EditTemplateDirective }, { propertyName: \"childColumns\", predicate: ColumnComponent }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SpanColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => SpanColumnComponent)\n }\n ],\n selector: 'kendo-grid-span-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { template: [{\n type: ContentChildren,\n args: [CellTemplateDirective, { descendants: false }]\n }], editTemplate: [{\n type: ContentChildren,\n args: [EditTemplateDirective, { descendants: false }]\n }], childColumns: [{\n type: ContentChildren,\n args: [ColumnComponent]\n }], editable: [{\n type: Input\n }], locked: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst expandColumns = (columns) => (columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ? column.childrenArray : [column]), []));\n/**\n * @hidden\n */\nconst expandColumnsWithSpan = (columns) => (columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ?\n [column].concat(column.childrenArray) :\n [column]), []));\n/**\n * @hidden\n */\nconst columnsToRender = (columns) => (expandColumns(columns).filter(x => x.isVisible));\nconst sumProp = (prop) => (array) => (array || []).reduce((prev, curr) => prev + (curr[prop] || 0), 0);\n/**\n * @hidden\n */\nconst sumColumnWidths = sumProp('width');\n/**\n * @hidden\n */\nconst columnsSpan = sumProp('colspan');\nconst validField = new RegExp(`^[$A-Z\\_a-z][$A-Z\\_a-z0-9\\\\.]*$`);\n/**\n * @hidden\n */\nconst isValidFieldName = (fieldName) => !isNullOrEmptyString(fieldName) && validField.test(fieldName) &&\n fieldName[0] !== \".\" && fieldName[fieldName.length - 1] !== \".\";\n/**\n * @hidden\n */\nconst children = column => column.children.filter(child => child !== column);\n/**\n * @hidden\n */\nconst leafColumns = columns => {\n return columns.reduce((acc, column) => {\n if (column.isColumnGroup) {\n acc = acc.concat(leafColumns(children(column)));\n }\n else if (column.isSpanColumn) {\n acc = acc.concat(column.childrenArray);\n }\n else {\n acc.push(column);\n }\n return acc;\n }, []).filter(x => x.isVisible);\n};\n/**\n * @hidden\n */\nconst someLeafColumn = (callback, ...columns) => leafColumns(columns).some(callback);\n/**\n * @hidden\n */\nconst resizableColumns = columns => columns.filter(column => isTruthy(column.resizable) && column.isVisible);\n/**\n * @hidden\n */\nconst sortColumns = (columns) => orderBy(columns, [{ field: 'orderIndex', dir: 'asc' }]);\n/**\n * @hidden\n */\nconst isInSpanColumn$1 = (column) => isTruthy(column.parent) && isSpanColumnComponent(column.parent);\n\n/**\n * @hidden\n */\nfunction isColumnGroupComponent(column) {\n return column.isColumnGroup;\n}\n/**\n * Represents the column group header of the Grid\n * ([more information and examples]({% slug multicolumnheaders_columns_grid %})).\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Column index: {{columnIndex}} / column title: {{column.title}}\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass ColumnGroupComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n /**\n * @hidden\n */\n this.includeInChooser = false;\n /**\n * @hidden\n */\n this.isColumnGroup = true;\n /**\n * @hidden\n */\n this.minResizableWidth = 10;\n if (parent && parent.isSpanColumn) {\n throw new Error('ColumnGroupComponent cannot be nested inside SpanColumnComponent');\n }\n }\n /**\n * @hidden\n */\n rowspan() {\n return 1;\n }\n /**\n * @hidden\n */\n get colspan() {\n if (!this.children || this.children.length === 1) {\n return 1;\n }\n return columnsSpan(this.children\n .filter(child => child !== this && child.isVisible));\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this.children ? (this.firstChild || {}).leafIndex : -1;\n }\n get childrenArray() {\n return this.children.filter(c => c !== this);\n }\n get hasChildren() {\n return Boolean(this.firstChild);\n }\n get firstChild() {\n return this.children.find(column => column !== this);\n }\n}\nColumnGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnGroupComponent, selector: \"kendo-grid-column-group\", providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ], queries: [{ propertyName: \"children\", predicate: ColumnBase }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnGroupComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }\n ],\n selector: 'kendo-grid-column-group',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [ColumnBase]\n }] } });\n\n/**\n * Represents the detail template of the Grid ([more information and examples]({% slug detailrowtemplate_grid %})).\n * To define the detail template, nest an `` tag with the `kendoGridDetailTemplate` directive inside a `` tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n *
\n *
{{dataItem.Category?.CategoryName}}
\n * {{dataItem.Category?.Description}}\n *
\n *
\n *
\n * `\n * })\n *\n * class AppComponent {\n * public data = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 3,\n * \"ProductName\": \"Aniseed Syrup\",\n * \"UnitPrice\": 10.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 2,\n * \"CategoryName\": \"Condiments\",\n * \"Description\": \"Sweet and savory sauces, relishes, spreads, and seasonings\"\n * }\n * }];\n *\n * }\n *\n * ```\n *\n */\nclass DetailTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._condition = () => true;\n }\n /**\n * Defines the function that indicates if a given detail row and the associated **Expand** or **Collapse** button will be displayed.\n */\n set showIf(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`showIf must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._condition = fn;\n }\n get showIf() {\n return this._condition;\n }\n}\nDetailTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDetailTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DetailTemplateDirective, selector: \"[kendoGridDetailTemplate]\", inputs: { showIf: [\"kendoGridDetailTemplateShowIf\", \"showIf\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DetailTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridDetailTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { showIf: [{\n type: Input,\n args: [\"kendoGridDetailTemplateShowIf\"]\n }] } });\n\nconst canCreateElement = () => isDocumentAvailable() && document.createElement;\nlet cachedScrollbarWidth = null;\nlet cachedPixelRatio;\nlet cachedRtlScrollLeft = null;\nfunction scrollbarWidth() {\n if (cachedScrollbarWidth === null && canCreateElement()) {\n cachedPixelRatio = window.devicePixelRatio || 1;\n const div = document.createElement(\"div\");\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n cachedScrollbarWidth = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return cachedScrollbarWidth;\n}\nfunction rtlScrollLeft() {\n if (cachedRtlScrollLeft === null && canCreateElement()) {\n const div = document.createElement(\"div\");\n div.style.cssText = \"overflow:scroll;zoom:1;clear:both;display:block;width:100px;visibility:hidden;position:absolute;left:-10000px;direction:rtl;\";\n div.innerHTML = \"
\";\n document.body.appendChild(div);\n const initial = div.scrollLeft;\n div.scrollLeft = -1;\n cachedRtlScrollLeft = div.scrollLeft < 0 ? div.scrollLeft : initial;\n document.body.removeChild(div);\n }\n return cachedRtlScrollLeft;\n}\n/**\n * @hidden\n * move to kendo-common\n */\nclass BrowserSupportService {\n constructor(zone, changeDetector) {\n this.zone = zone;\n this.changeDetector = changeDetector;\n this.changes = new EventEmitter();\n if (typeof window === 'undefined') {\n return;\n }\n this.zone.runOutsideAngular(() => {\n this.subscriptions = fromEvent(window, 'resize').pipe(auditTime(100)).subscribe(() => {\n if (cachedPixelRatio !== window.devicePixelRatio) {\n zone.run(() => {\n cachedScrollbarWidth = null;\n this.changes.emit();\n this.changeDetector.markForCheck();\n });\n }\n });\n });\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n this.subscriptions = null;\n }\n }\n get scrollbarWidth() {\n return scrollbarWidth();\n }\n get rtlScrollLeft() {\n return rtlScrollLeft();\n }\n}\nBrowserSupportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BrowserSupportService, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserSupportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BrowserSupportService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BrowserSupportService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; } });\n\nconst isGroupItem = (source) => {\n return source.items !== undefined &&\n source.field !== undefined;\n};\nconst isVirtualGroupItem = (source) => {\n return source.offset !== undefined &&\n source.skipHeader !== undefined;\n};\nconst flattenGroups = (groups) => (groups.reduce((acc, curr) => {\n if (isGroupItem(curr)) {\n return acc.concat(flattenGroups(curr.items));\n }\n return acc.concat([curr]);\n}, []));\n/**\n * @hidden\n */\nconst itemAt = (data, index) => {\n const first = data[0];\n if (isPresent(first) && isGroupItem(first)) {\n return flattenGroups(data)[index];\n }\n return data[index];\n};\n/**\n * @hidden\n */\nconst getIterator = (data, { footers, level, dataIndex, parentGroupIndex, groupIndex, parentGroup }) => {\n const first = data[0];\n if (isPresent(first) && isGroupItem(first)) {\n if (isVirtualGroupItem(first)) {\n groupIndex = isPresent(first.offset) ? first.offset : groupIndex;\n }\n return new GroupIterator(data, footers, level, dataIndex, parentGroupIndex, groupIndex, parentGroup);\n }\n return new ItemIterator(data, dataIndex, parentGroupIndex, parentGroup);\n};\nclass ArrayIterator {\n constructor(arr, idx = 0) {\n this.arr = arr;\n this.idx = idx;\n this.arr = arr || [];\n }\n [iterator]() {\n return this;\n }\n next() {\n return this.idx < this.arr.length ? {\n done: false,\n value: this.arr[this.idx++]\n } : { done: true, value: undefined };\n }\n}\n/**\n * @hidden\n */\nclass Iterator {\n constructor(arr, dataIndex = 0, resultMap = (x) => x) {\n this.dataIndex = dataIndex;\n this.resultMap = resultMap;\n const iter = arr[iterator];\n this._innerIterator = iter ? arr[iterator]() : new ArrayIterator(arr);\n }\n [iterator]() {\n return this;\n }\n next() {\n return this.resultMap(this._innerIterator.next(), this.dataIndex++);\n }\n}\n/**\n * @hidden\n */\nclass ItemIterator extends Iterator {\n constructor(arr, dataIndex, groupIndex, group) {\n super(arr, dataIndex, (x, idx) => ({\n done: x.done,\n value: {\n data: x.value,\n groupIndex: groupIndex,\n index: idx,\n type: 'data',\n group\n }\n }));\n }\n /**\n * The index of the next record.\n * @readonly\n * @type {number}\n */\n get index() {\n return this.dataIndex;\n }\n}\nconst prefix = (s, n) => {\n const p = s ? s + \"_\" : s;\n return `${p}${n}`;\n};\n/**\n * @hidden\n */\nclass GroupIterator {\n constructor(arr, outputFooters = false, level = 0, dataIndex = 0, parentIndex = \"\", groupIndex = 0, parentGroup = undefined) {\n this.arr = arr;\n this.outputFooters = outputFooters;\n this.level = level;\n this.dataIndex = dataIndex;\n this.parentIndex = parentIndex;\n this.groupIndex = groupIndex;\n this.parentGroup = parentGroup;\n this.currentGroupIndex = \"\";\n this.arr = arr || [];\n this._iterator = new Iterator(this.arr, this.dataIndex);\n }\n [iterator]() {\n return this;\n }\n nextGroupItem() {\n this.current = this._iterator.next().value;\n this._innerIterator = null;\n if (this.current) {\n this.currentGroupIndex = prefix(this.parentIndex, this.groupIndex++);\n return {\n done: false,\n value: {\n data: this.current,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n };\n }\n else {\n this.current = null;\n return { done: true, value: undefined };\n }\n }\n footerItem() {\n if (this.current) {\n const group = this.current;\n this.current = null;\n return {\n done: false,\n value: {\n data: group,\n groupIndex: this.currentGroupIndex,\n level: this.level,\n type: 'footer',\n group: {\n data: group,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n }\n };\n }\n else {\n this.current = null;\n return { done: true, value: undefined };\n }\n }\n innerIterator(group) {\n if (!this._innerIterator) {\n this._innerIterator = getIterator(group.items, {\n dataIndex: this.dataIndex,\n footers: this.outputFooters,\n level: this.level + 1,\n parentGroupIndex: this.currentGroupIndex,\n parentGroup: {\n data: this.current,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n });\n }\n return this._innerIterator;\n }\n nextDataItem(group) {\n const iterator = this.innerIterator(group);\n const result = iterator.next();\n if (isPresent(result.value) && !result.done && result.value.type === \"data\") {\n this.dataIndex = result.value.index + 1;\n }\n return !result.done ? result : undefined;\n }\n next() {\n if (!isPresent(this.current)) {\n return this.nextGroupItem();\n }\n const item = this.nextDataItem(this.current);\n return item ? item : (this.outputFooters ? this.footerItem() : this.nextGroupItem());\n }\n /**\n * The index of the last iterated data record.\n * @readonly\n * @type {number}\n */\n get index() {\n return this.dataIndex + 1;\n }\n}\n\n/**\n * @hidden\n */\nclass DataResultIterator {\n constructor(source, skip = 0, groupFooters = false) {\n this.source = source;\n this.skip = skip;\n this.groupFooters = groupFooters;\n this.source = this.source ? this.source : [];\n this.isObject = this.isGridDataResult(this.source);\n }\n isGridDataResult(source) {\n return source.total !== undefined && source.data !== undefined;\n }\n get total() {\n return this.isObject ? this.source.total : this.source.length;\n }\n get data() {\n return this.isObject ? this.source.data : this.source;\n }\n map(fn) {\n return this.data.map(fn);\n }\n filter(fn) {\n return this.data.filter(fn);\n }\n reduce(fn, init) {\n return this.data.reduce(fn, init);\n }\n forEach(fn) {\n this.data.forEach(fn);\n }\n some(fn) {\n return this.data.some(fn);\n }\n [iterator]() {\n return getIterator(this.data, {\n dataIndex: this.skip,\n footers: this.groupFooters,\n groupIndex: this.skip\n });\n }\n toString() { return this.data.toString(); }\n}\n/**\n * @hidden\n */\nclass DataCollection {\n constructor(accessor) {\n this.accessor = accessor;\n }\n get total() { return this.accessor().total; }\n get length() { return this.accessor().data.length; }\n get first() { return this.accessor().data[0]; }\n get last() { return this.accessor().data[this.length - 1]; }\n at(index) {\n return itemAt(this.accessor().data, index);\n }\n map(fn) { return this.accessor().map(fn); }\n filter(fn) {\n return this.accessor().filter(fn);\n }\n reduce(fn, init) {\n return this.accessor().reduce(fn, init);\n }\n forEach(fn) {\n this.accessor().forEach(fn);\n }\n some(fn) {\n return this.accessor().some(fn);\n }\n [iterator]() {\n return this.accessor()[iterator]();\n }\n toString() { return this.accessor().toString(); }\n}\n\n/**\n * @hidden\n *\n * Quick look-up structure for combinations of keys.\n * Similar to the native JS Set, however, working with a couple of keys instead of with a single key.\n * Supports both primitive keys and object keys (compared by reference).\n */\nclass PairSet {\n constructor(items, keyXField, keyYField) {\n /**\n * Holds a set of Y keys for each defined X key.\n * Each X key creates a map which holds a set of Y keys.\n *\n * Map { 1 => Set { 1, 2, 3 } } // pairs: [1, 1], [1, 2], [1, 3]\n */\n this.keysX = new Map();\n /**\n * Count the each added or deleted key manually to avoid iterating over all items when calling `this.size`.\n */\n this.totalKeysCount = 0;\n if (items && keyXField && keyYField) {\n items.forEach(item => this.add(item[keyXField], item[keyYField]));\n }\n }\n /**\n * Gets the total number of X/Y key pairs.\n */\n get size() {\n return this.totalKeysCount;\n }\n /**\n * Adds a couple of items identified as a combination.\n */\n add(keyX, keyY) {\n if (!this.keysX.has(keyX)) {\n this.keysX.set(keyX, new Set());\n }\n if (!this.has(keyX, keyY)) {\n this.keysX.get(keyX).add(keyY);\n this.totalKeysCount += 1;\n }\n }\n /**\n * Adds a combination of a couple of items identified together.\n */\n delete(keyX, keyY) {\n if (this.has(keyX, keyY)) {\n this.keysX.get(keyX).delete(keyY);\n this.totalKeysCount -= 1;\n }\n }\n /**\n * Checks whether the defined combination is stored.\n */\n has(keyX, keyY) {\n return this.keysX.has(keyX) && this.keysX.get(keyX).has(keyY);\n }\n /**\n * Clears all key combinations.\n */\n clear() {\n this.keysX.clear();\n this.totalKeysCount = 0;\n }\n /**\n * Converts the persisted data structure to an array of objects,\n * using the provided field names for the object props.\n */\n toArray(keyXField, keyYField) {\n return Array.from(this.keysX).reduce((pairs, pair) => {\n // Array.from(mapInstance) returns an array of arrays [[itemKey1, columnKeysSet1], [itemKey2, columnKeysSet2]]\n const [keyX, keysY] = pair;\n Array.from(keysY).forEach(keyY => pairs.push({ [keyXField]: keyX, [keyYField]: keyY }));\n return pairs;\n }, []);\n }\n}\n\n/**\n * @hidden\n *\n * The Context service is used to provide common\n * services and DI tokens for a Grid instance.\n *\n * This keeps the constructor parameters stable\n * and a avoids dependency cycles between components.\n */\nclass ContextService {\n}\nContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContextService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass Selection {\n constructor(ctx, cd) {\n this.ctx = ctx;\n this.cd = cd;\n /**\n * Defines the collection that will store the selected item keys.\n */\n this.selectedKeys = [];\n /**\n * Fires when the `selectedKeys` collection has been updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.rowSelectionState = new Set();\n this.cellSelectionState = new PairSet();\n this.init();\n }\n get isCellSelectionMode() {\n return isPresent(this.ctx.grid.selectable) && this.ctx.grid.selectable['cell'];\n }\n ngOnChanges(changes) {\n // skip reinitialization if the user data is the same as the last state change\n if (isPresent(changes.selectedKeys) && this.lastSelectionState !== this.selectedKeys) {\n this.setState(this.selectedKeys);\n }\n }\n init() {\n if (!isPresent(this.ctx.grid.rowSelected)) {\n this.ctx.grid.rowSelected = (row) => this.rowSelectionState.has(this.getItemKey(row));\n }\n if (!isPresent(this.ctx.grid.cellSelected)) {\n this.ctx.grid.cellSelected = (row, column, colIndex) => {\n const contender = this.getSelectionItem(row, column, colIndex);\n return {\n selected: this.cellSelectionState.has(contender.itemKey, contender.columnKey),\n item: contender\n };\n };\n }\n this.selectionChangeSubscription = this.ctx.grid\n .selectionChange\n .subscribe(this.onSelectionChange.bind(this));\n }\n /**\n * @hidden\n */\n destroy() {\n this.selectionChangeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n reset() {\n this.rowSelectionState.clear();\n this.cellSelectionState.clear();\n }\n getItemKey(row) {\n if (this.selectionKey) {\n if (typeof this.selectionKey === \"string\") {\n return row.dataItem[this.selectionKey];\n }\n if (typeof this.selectionKey === \"function\") {\n return this.selectionKey(row);\n }\n }\n return row.index;\n }\n getSelectionItem(row, col, colIndex) {\n const itemIdentifiers = {};\n itemIdentifiers.itemKey = this.getItemKey(row);\n if (!isPresent(col) && !isPresent(colIndex)) {\n return itemIdentifiers;\n }\n if (this.columnKey) {\n if (typeof this.columnKey === \"string\") {\n itemIdentifiers.columnKey = row.dataItem[this.columnKey];\n }\n if (typeof this.columnKey === \"function\") {\n itemIdentifiers.columnKey = this.columnKey(col, colIndex);\n }\n }\n return {\n itemKey: itemIdentifiers.itemKey,\n columnKey: itemIdentifiers.columnKey ? itemIdentifiers.columnKey : colIndex\n };\n }\n onSelectionChange(selection) {\n if (selection.selectedRows) {\n selection.deselectedRows.forEach((item) => {\n const itemKey = this.getItemKey(item);\n this.rowSelectionState.delete(itemKey);\n });\n if (this.ctx.grid.selectableSettings.mode === \"single\" && this.rowSelectionState.size > 0) {\n this.reset();\n }\n selection.selectedRows.forEach((item) => {\n const itemKey = this.getItemKey(item);\n this.rowSelectionState.add(itemKey);\n });\n }\n else {\n selection.deselectedCells.forEach(({ itemKey, columnKey }) => {\n this.cellSelectionState.delete(itemKey, columnKey);\n });\n if (this.ctx.grid.selectableSettings.mode === \"single\" && this.cellSelectionState.size > 0) {\n this.reset();\n }\n selection.selectedCells.forEach(({ itemKey, columnKey }) => {\n this.cellSelectionState.add(itemKey, columnKey);\n });\n }\n this.cd.markForCheck();\n this.notifyChange();\n }\n notifyChange() {\n this.lastSelectionState = this.stateToArray();\n this.selectedKeysChange.emit(this.lastSelectionState);\n }\n setState(selectedKeys) {\n this.reset();\n if (this.isCellSelectionMode) {\n this.cellSelectionState = new PairSet(selectedKeys, 'itemKey', 'columnKey');\n }\n else {\n this.rowSelectionState = new Set(selectedKeys);\n }\n }\n stateToArray() {\n return this.isCellSelectionMode ?\n this.cellSelectionState.toArray('itemKey', 'columnKey') :\n Array.from(this.rowSelectionState);\n }\n}\nSelection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Selection, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nSelection.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Selection, selector: \"kendo-grid-selection-base\", inputs: { selectedKeys: \"selectedKeys\", selectionKey: [\"kendoGridSelectBy\", \"selectionKey\"], columnKey: \"columnKey\" }, outputs: { selectedKeysChange: \"selectedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Selection, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-grid-selection-base'\n }]\n }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedKeys: [{\n type: Input\n }], selectionKey: [{\n type: Input,\n args: [\"kendoGridSelectBy\"]\n }], columnKey: [{\n type: Input\n }], selectedKeysChange: [{\n type: Output\n }] } });\n\nconst reset = (...lists) => {\n let diff = false;\n for (let idx = 0; idx < lists.length; idx++) {\n const [list, columns] = lists[idx];\n diff = diff || list.length !== columns.length;\n list.reset(columns);\n }\n return diff;\n};\n/**\n * @hidden\n */\nclass ColumnsContainer {\n constructor(columns) {\n this.columns = columns;\n this.allColumns = new QueryList();\n this.leafColumns = new QueryList();\n this.lockedColumns = new QueryList();\n this.nonLockedColumns = new QueryList();\n this.lockedLeafColumns = new QueryList();\n this.nonLockedLeafColumns = new QueryList();\n this.totalLevels = 0;\n this.changes = new EventEmitter();\n this.leafColumnsToRender = [];\n this.lockedColumnsToRender = [];\n this.nonLockedColumnsToRender = [];\n this.hasGroupHeaderColumn = false;\n this.hasGroupFooter = false;\n this.hasFooter = false;\n this.unlockedWidth = 0;\n }\n refresh() {\n const currentLevels = this.totalLevels;\n const leafColumns = new Array();\n const lockedLeafColumns = new Array();\n const nonLockedLeafColumns = new Array();\n const lockedColumns = new Array();\n const nonLockedColumns = new Array();\n const allColumns = new Array();\n const leafColumnsToRender = new Array();\n const lockedColumnsToRender = new Array();\n const nonLockedColumnsToRender = new Array();\n let hasGroupHeaderColumn = false;\n let hasGroupFooter = false;\n let hasFooter = false;\n let unlockedWidth = 0;\n let leafIndex = 0;\n this.totalLevels = 0;\n this.columns().forEach(column => {\n const containerLeafColumns = column.isLocked === true ? lockedLeafColumns : nonLockedLeafColumns;\n const containerColumns = column.isLocked === true ? lockedColumns : nonLockedColumns;\n const toRenderContainer = column.isLocked === true ? lockedColumnsToRender : nonLockedColumnsToRender;\n if (!isColumnGroupComponent(column)) {\n containerLeafColumns.push(column);\n leafColumns.push(column);\n leafColumnsToRender.push.apply(leafColumnsToRender, columnsToRender([column]));\n toRenderContainer.push.apply(toRenderContainer, columnsToRender([column]));\n hasGroupHeaderColumn = hasGroupHeaderColumn || someLeafColumn(leaf => Boolean(leaf.groupHeaderColumnTemplateRef), column);\n hasGroupFooter = hasGroupFooter || someLeafColumn(leaf => Boolean(leaf.groupFooterTemplateRef), column);\n hasFooter = hasFooter || someLeafColumn(leaf => Boolean(leaf.footerTemplateRef), column);\n if (!column.isLocked) {\n unlockedWidth += column.width || 0;\n }\n if (column.isSpanColumn) {\n column.childColumns.forEach(c => {\n c.leafIndex = leafIndex++;\n });\n }\n else {\n column.leafIndex = leafIndex++;\n }\n }\n containerColumns.push(column);\n allColumns.push(column);\n this.totalLevels = column.level > this.totalLevels ? column.level : this.totalLevels;\n });\n this.hasGroupHeaderColumn = hasGroupHeaderColumn;\n this.hasGroupFooter = hasGroupFooter;\n this.hasFooter = hasFooter;\n this.leafColumnsToRender = leafColumnsToRender;\n this.lockedColumnsToRender = lockedColumnsToRender;\n this.nonLockedColumnsToRender = nonLockedColumnsToRender;\n this.unlockedWidth = unlockedWidth;\n const changes = reset([this.leafColumns, leafColumns], [this.lockedLeafColumns, lockedLeafColumns], [this.nonLockedLeafColumns, nonLockedLeafColumns], [this.lockedColumns, lockedColumns], [this.allColumns, allColumns], [this.nonLockedColumns, nonLockedColumns]) || currentLevels !== this.totalLevels;\n if (changes) {\n this.changes.emit();\n }\n return changes;\n }\n}\n\nconst forEachColumn = (list, callback) => {\n list.forEach((column) => {\n callback(column);\n if (column.isColumnGroup && column.hasChildren) {\n forEachColumn(column.childrenArray, callback);\n }\n });\n};\nconst forEachLevel = (list, callback) => {\n sortColumns(list)\n .forEach((column) => {\n callback(column);\n if (column.isColumnGroup && column.hasChildren) {\n forEachLevel(column.childrenArray, callback);\n }\n });\n};\nconst filterHierarchy = (list, predicate) => {\n const result = [];\n sortColumns(list)\n .forEach((column) => {\n if (predicate(column)) {\n if (column.isColumnGroup) {\n const children = filterHierarchy(column.childrenArray, predicate);\n if (children.length) {\n result.push(column, ...children);\n }\n }\n else if (!column.isSpanColumn || filterHierarchy(column.childrenArray, predicate).length) {\n result.push(column);\n }\n }\n });\n return result;\n};\n/**\n * @hidden\n */\nclass ColumnList {\n constructor(columns) {\n this.columns = columns;\n }\n static empty() {\n return new ColumnList(new QueryList());\n }\n forEach(callback) {\n forEachColumn(this.columns, callback);\n }\n filter(callback) {\n const result = [];\n forEachColumn(this.columns, (column) => {\n if (callback(column)) {\n result.push(column);\n }\n });\n return result;\n }\n filterHierarchy(predicate) {\n return filterHierarchy(this.columns.toArray(), predicate);\n }\n filterSort(callback) {\n const result = [];\n forEachLevel(this.columns.toArray(), (column) => {\n if (callback(column)) {\n result.push(column);\n }\n });\n return result;\n }\n toArray() {\n const result = [];\n forEachColumn(this.columns, (column) => {\n result.push(column);\n });\n return result;\n }\n rootColumns() {\n return this.columns.toArray();\n }\n totalColumnLevels() {\n let totalLevels = 0;\n this.forEach(column => {\n totalLevels = Math.max(column.level, totalLevels);\n });\n return totalLevels;\n }\n}\n\n/**\n * @hidden\n */\nclass GroupInfoService {\n constructor() {\n this._columnList = ColumnList.empty;\n }\n get columns() {\n return expandColumns(this._columnList().toArray()).filter(isColumnComponent);\n }\n registerColumnsContainer(columns) {\n this._columnList = columns;\n }\n formatForGroup(item) {\n const column = this.columnForGroup(item);\n return column ? column.format : \"\";\n }\n isGroupable(groupField) {\n const [column] = this.columns.filter(x => x.field === groupField);\n return column ? column.groupable : true;\n }\n groupTitle(item) {\n const column = this.columnForGroup(item);\n return column ? (column.title || column.field) : this.groupField(item);\n }\n groupHeaderTemplate(item) {\n const column = this.columnForGroup(item);\n return column ? column.groupHeaderTemplateRef || column.groupHeaderColumnTemplateRef : undefined;\n }\n groupField(group) {\n return group.data ? group.data.field : group.field;\n }\n columnForGroup(group) {\n const field = this.groupField(group);\n const [column] = this.columns.filter(x => x.field === field);\n return column;\n }\n}\n\n/**\n * @hidden\n */\nclass ChangeNotificationService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new EventEmitter();\n }\n notify() {\n if (!this.subscription || this.subscription.closed) {\n this.subscription = this.ngZone.onStable\n .asObservable().pipe(take(1))\n .subscribe(() => this.changes.emit());\n }\n }\n}\nChangeNotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChangeNotificationService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nChangeNotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChangeNotificationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChangeNotificationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Represents the no-records template of the Grid. Provides an option to customize the\n * appearance of the item that is displayed when no data is present. To define the no-records template,\n * nest an `` tag with the `kendoGridNoRecordsTemplate` directive inside ``.\n *\n * > When the locked columns of the Grid are in use, the template is displayed in the non-locked part of the content.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * There are not products. Click here to refresh.\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data = [];\n * public refresh() {\n * this.data = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 1,\n * \"CategoryName\": \"Beverages\",\n * \"Description\": \"Soft drinks, coffees, teas, beers, and ales\"\n * }\n * }, {\n * \"ProductID\": 3,\n * \"ProductName\": \"Aniseed Syrup\",\n * \"UnitPrice\": 10.0000,\n * \"Discontinued\": false,\n * \"Category\": {\n * \"CategoryID\": 2,\n * \"CategoryName\": \"Condiments\",\n * \"Description\": \"Sweet and savory sauces, relishes, spreads, and seasonings\"\n * }\n * }];\n *\n * }\n * }\n *\n * ```\n */\nclass NoRecordsTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNoRecordsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoRecordsTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNoRecordsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NoRecordsTemplateDirective, selector: \"[kendoGridNoRecordsTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoRecordsTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridNoRecordsTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst set = value => pair => pair.forEach(x => x.style.height = value);\nconst clearHeight = pairs => pairs\n .filter(([left, right]) => left.style.height || right.style.height)\n .forEach(set(\"\"));\nconst zip = (arr1, arr2) => {\n const result = [];\n for (let idx = 0, len = arr1.length; idx < len; idx++) {\n if (!arr2[idx]) {\n break;\n }\n result.push([arr1[idx], arr2[idx]]);\n }\n return result;\n};\nconst setHeight$1 = heights => (row, idx) => set(`${heights[idx] + 1}px`)(row);\nconst getHeights = rows => rows.map(([left, right]) => {\n const height = left.offsetHeight;\n const offsetHeight2 = right.offsetHeight;\n if (height < offsetHeight2) {\n return offsetHeight2;\n }\n return height;\n});\n/**\n * @hidden\n */\nconst syncRowsHeight = (table1, table2) => {\n const activeElement = document.activeElement;\n const rows = zip(table1.rows, table2.rows);\n clearHeight(rows);\n const heights = getHeights(rows);\n [table1, table2].forEach(x => x.style.display = 'none');\n rows.forEach(setHeight$1(heights));\n [table1, table2].forEach(x => x.style.display = '');\n if (document.activeElement !== activeElement &&\n (table1.contains(activeElement) || table2.contains(activeElement))) {\n activeElement.focus();\n }\n};\n\n/**\n * @hidden\n */\nclass MenuTabbingService {\n constructor() {\n this.isColumnMenu = false;\n this.isPopupOpen = false;\n }\n}\nMenuTabbingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuTabbingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMenuTabbingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuTabbingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MenuTabbingService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Represents a service to set the filter descriptor\n * ([see example]({% slug reusablecustomfilters_grid %})).\n */\nclass FilterService {\n /**\n * @hidden\n */\n constructor(menuTabbingService) {\n /**\n * Fires when the filter descriptors is set.\n */\n this.changes = new Subject();\n this.menuTabbingService = menuTabbingService;\n }\n /**\n * Sets the filter descriptor.\n *\n * @param {CompositeFilterDescriptor} value - The filter descriptor that will be set.\n */\n filter(value) {\n this.changes.next(value);\n }\n}\nFilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterService, deps: [{ token: MenuTabbingService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: MenuTabbingService, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the pager template which helps to customize the pager appearance in the Grid. To define a pager\n * template, nest an `` tag with the `kendoPagerTemplate` directive inside ``.\n *\n * The template context provides the following fields:\n * * `currentPage`—The index of the displayed page.\n * * `pageSize`—The value of the current `pageSize`.\n * * `skip`—The current skip value.\n * * `total`—The total number of records.\n * * `totalPages`—The total number of available pages.\n * * Needs to be provided as an input to inner pager components used within the template when the Grid is navigable.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * Current page: {{currentPage}}\n * \n *\n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass PagerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPagerTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPagerTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerTemplateDirective, selector: \"[kendoPagerTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPagerTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PDFService {\n constructor() {\n this.savePDF = new EventEmitter();\n this.drawPDF = new EventEmitter();\n this.exportClick = new EventEmitter();\n this.dataChanged = new EventEmitter();\n }\n save(component) {\n this.emitEvent(this.savePDF, component);\n }\n draw(component, promise) {\n this.emitEvent(this.drawPDF, { component, promise });\n }\n /**\n * @hidden\n */\n emitEvent(emitter, args) {\n if (emitter.observers.length === 0) {\n if (isDevMode()) {\n throw new Error('Creating PDF requires including the PDFModule and adding the component.');\n }\n }\n else {\n emitter.emit(args);\n }\n }\n}\nPDFService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPDFService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Arguments for the `pdfExport` event.\n */\nclass PDFExportEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor() {\n super();\n }\n}\n\n/**\n * @hidden\n */\nclass SuspendService {\n constructor() {\n this.scroll = false;\n }\n}\nSuspendService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SuspendService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nSuspendService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SuspendService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SuspendService, decorators: [{\n type: Injectable\n }] });\n\nconst bootstrapToMedia = (media) => (({\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n})[media] || media);\nconst browserMatchMedia = (media) => window.matchMedia(media).matches;\n/**\n * @hidden\n */\nclass ResponsiveService {\n constructor() {\n /**\n * @hidden\n */\n this.matchMedia = browserMatchMedia;\n }\n /**\n * @hidden\n */\n matchesMedia(media) {\n return !media || this.matchMedia(bootstrapToMedia(media));\n }\n}\nResponsiveService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResponsiveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nResponsiveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResponsiveService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResponsiveService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass ExcelService {\n constructor() {\n this.saveToExcel = new EventEmitter();\n this.exportClick = new EventEmitter();\n }\n save(component) {\n if (this.saveToExcel.observers.length === 0) {\n if (isDevMode()) {\n throw new Error('Saving excel requires including the ExcelModule and adding the component.');\n }\n }\n else {\n this.saveToExcel.emit(component);\n }\n }\n}\nExcelService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExcelService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Represents the toolbar template of the Grid.\n *\n * The template context has the following field:\n * - `position`—The position at which the toolbar template is rendered. The possible values are \"top\" and \"bottom\".\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
\n * \n *
\n * \n *
\n * \n *
\n *
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public position: 'top' | 'bottom' | 'both' = 'top';\n *\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n *\n * public onClick(): void {\n * console.log(\"button was clicked\");\n * }\n *\n * public positionChange({ target }): void {\n * this.position = target.value;\n * }\n * }\n *\n * ```\n */\nclass ToolbarTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._position = \"top\";\n }\n /**\n * The position of the toolbar ([see example]({% slug toolbartemplate_grid %})).\n *\n * The possible values are:\n * - `top`—Positions the toolbar above the group panel or header.\n * - `bottom`—Positions the toolbar below the pager.\n * - `both`—Displays two toolbar instances. Positions the first one above\n * the group panel or header and the second one below the pager.\n */\n set position(position) {\n this._position = position;\n }\n get position() {\n return this._position;\n }\n}\nToolbarTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nToolbarTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarTemplateDirective, selector: \"[kendoGridToolbarTemplate]\", inputs: { position: \"position\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridToolbarTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { position: [{\n type: Input,\n args: [\"position\"]\n }] } });\n\n/**\n * @hidden\n */\nclass ScrollSyncService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new Subject();\n this.elements = [];\n this.subscriptions = new Subscription();\n this.headerSubscription = new Subscription();\n this.bodySubscription = new Subscription();\n this.subscriptions.add(this.changes.subscribe(args => this.scrollLeft(args)));\n }\n registerEmitter(el, sourceType) {\n this.unregister(sourceType);\n this.elements.push({ element: el, sourceType });\n if (sourceType === \"body\" || sourceType === \"header\") {\n this.ngZone.runOutsideAngular(() => {\n const obs = fromEvent(el, \"scroll\").pipe(map(({ target: { scrollLeft } }) => ({\n scrollLeft,\n sourceType\n })));\n const subscription = obs.pipe(distinctUntilChanged((x, y) => (x.scrollLeft === y.scrollLeft)), filter(x => !this.source || this.source === x.sourceType), tap(x => this.source = x.sourceType))\n .subscribe((x) => this.changes.next(x));\n subscription.add(obs.pipe(filter(x => this.source && this.source !== x.sourceType))\n .subscribe(() => this.source = undefined));\n if (sourceType === \"body\") {\n this.bodySubscription.add(subscription);\n }\n else {\n this.headerSubscription.add(subscription);\n }\n });\n }\n }\n /**\n * destroy\n */\n destroy() {\n this.subscriptions.unsubscribe();\n this.headerSubscription.unsubscribe();\n this.bodySubscription.unsubscribe();\n }\n scrollLeft({ scrollLeft, sourceType }) {\n this.ngZone.runOutsideAngular(() => {\n this.elements\n .filter(x => sourceType !== x.sourceType)\n .forEach(({ element }) => element.scrollLeft = scrollLeft);\n });\n }\n unregister(sourceType) {\n const index = this.elements.findIndex(x => x.sourceType === sourceType);\n if (index > -1) {\n if (sourceType === \"header\") {\n this.headerSubscription.unsubscribe();\n this.headerSubscription = new Subscription();\n }\n else if (sourceType === \"body\") {\n this.bodySubscription.unsubscribe();\n this.bodySubscription = new Subscription();\n }\n this.elements.splice(index, 1);\n }\n }\n}\nScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass ResizeService {\n constructor() {\n this.resizeSubscription = new Subscription(() => { });\n this.dispatcher = new Subject();\n this.changes = this.dispatcher.asObservable().pipe(throttleTime(100));\n }\n connect(resizes) {\n this.resizeSubscription.add(resizes.subscribe(this.dispatcher));\n }\n destroy() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n}\nResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst isLocked = column => column.parent ? isLocked(column.parent) : !!column.locked;\n/**\n * @hidden\n */\nconst resizeArgs = (column, extra) => Object.assign({\n columns: leafColumns([column]),\n locked: isLocked(column)\n}, extra);\n/**\n * @hidden\n */\nclass ColumnResizingService {\n constructor() {\n this.changes = new EventEmitter();\n this.tables = [];\n this.batch = null;\n }\n start(column) {\n this.trackColumns(column);\n const columns = (this.column.isColumnGroup ? [column] : [])\n .concat(leafColumns([column]));\n this.changes.emit({\n columns: columns,\n locked: isLocked(this.column),\n type: 'start'\n });\n }\n resizeColumns(deltaPercent) {\n const action = resizeArgs(this.column, {\n deltaPercent,\n type: 'resizeColumn'\n });\n this.changes.emit(action);\n }\n resizeTable(column, delta) {\n const action = resizeArgs(column, {\n delta,\n type: 'resizeTable'\n });\n this.changes.emit(action);\n }\n resizedColumn(state) {\n this.resizedColumns.push(state);\n }\n end() {\n this.changes.emit({\n columns: [],\n resizedColumns: this.resizedColumns,\n type: 'end'\n });\n }\n registerTable(tableMetadata) {\n this.tables.push(tableMetadata);\n const unregisterTable = () => {\n this.tables.splice(this.tables.indexOf(tableMetadata), 1);\n };\n return unregisterTable;\n }\n measureColumns(info) {\n if (this.batch !== null) {\n this.batch.push(...info);\n }\n else {\n this.autoFitBatch(info, () => this.end());\n }\n }\n autoFit(...columns) {\n const nonLockedColumns = columns.filter(column => !column.isLocked);\n this.autoFitStart(nonLockedColumns);\n this.autoFitBatch(this.batch, () => {\n if (nonLockedColumns.length < columns.length) {\n const lockedColumns = columns.filter(column => column.isLocked);\n this.autoFitStart(lockedColumns);\n this.autoFitBatch(this.batch, () => this.end());\n }\n else {\n this.end();\n }\n });\n }\n trackColumns(column) {\n this.resizedColumns = [];\n this.column = column;\n }\n autoFitStart(columns) {\n this.batch = [];\n this.resizedColumns = [];\n if (columns.length === 0) {\n return;\n }\n const locked = columns[0].isLocked;\n this.changes.emit({\n type: 'start',\n columns,\n locked\n });\n this.changes.emit({\n type: 'triggerAutoFit',\n columns,\n locked\n });\n }\n autoFitBatch(info, onComplete) {\n const locked = info.length > 0 ? info[0].column.isLocked : false;\n const observables = this.tables\n .filter(table => table.locked === locked)\n .map(table => table.autoFit(info));\n zip$1(...observables)\n .pipe(take(1))\n .subscribe(widths => {\n this.changes.emit({\n columns: info.map(i => i.column),\n type: 'autoFitComplete',\n widths,\n locked\n });\n if (onComplete) {\n onComplete();\n }\n });\n this.batch = null;\n }\n}\nColumnResizingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnResizingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColumnResizingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnResizingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnResizingService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst isFilterable = (settings) => settings !== false;\n/**\n * @hidden\n */\nconst hasFilterMenu = (settings) => typeof settings === 'string' && settings.indexOf('menu') > -1;\n/**\n * @hidden\n */\nconst hasFilterRow = (settings) => settings === true || (typeof settings === 'string' && settings.indexOf('row') > -1);\n\nconst contains$1 = (node, predicate) => {\n while (node) {\n if (predicate(node)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n};\n/**\n * Arguments for the `close` event of the filter and column-menu popup.\n */\nclass PopupCloseEvent extends PreventableEvent {\n constructor(e) {\n super();\n this.originalEvent = e;\n }\n}\nconst DEFAULT_POPUP_CLASS = 'k-grid-filter-popup';\n/**\n * The service that is used for the popups of the filter and column menus\n * ([see example]({% slug reusablecustomfilters_grid %}#toc-filter-menu-with-popup)).\n */\nclass SinglePopupService {\n constructor(popupService, renderer, ngZone, scrollSyncService, localization) {\n this.popupService = popupService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.localization = localization;\n /**\n * Fires when the filter or column menus are about to close because the user clicked outside their popups.\n * Used to prevent the popup from closing.\n */\n this.onClose = new Subject();\n this.scrollSubscription = scrollSyncService.changes.subscribe(() => this.destroy());\n }\n /**\n * @hidden\n */\n open(anchor, template, popupRef, popupClass = DEFAULT_POPUP_CLASS) {\n const toggle = isPresent(popupRef) && this.popupRef === popupRef;\n this.destroy();\n if (!toggle) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n popupAlign: { vertical: 'top', horizontal: direction },\n anchor: anchor,\n popupClass: popupClass,\n content: template,\n positionMode: \"absolute\"\n });\n this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.localization.rtl ? 'rtl' : 'ltr');\n this.attachClose(anchor);\n }\n return this.popupRef;\n }\n /**\n * @hidden\n */\n destroy() {\n if (this.popupRef) {\n this.detachClose();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n ngOnDestroy() {\n this.destroy();\n this.scrollSubscription.unsubscribe();\n }\n detachClose() {\n if (this.removeClick) {\n this.removeClick();\n }\n }\n attachClose(skipElement) {\n this.detachClose();\n this.ngZone.runOutsideAngular(() => this.removeClick = this.renderer.listen(\"document\", \"click\", (e) => {\n if (!contains$1(e.target, x => this.popupRef.popupElement === x || x === skipElement)) {\n const args = new PopupCloseEvent(e);\n this.onClose.next(args);\n if (!args.isDefaultPrevented()) {\n this.destroy();\n }\n }\n }));\n }\n}\nSinglePopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SinglePopupService, deps: [{ token: i1$2.PopupService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nSinglePopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SinglePopupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SinglePopupService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$2.PopupService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: i1.LocalizationService }]; } });\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst append = (element) => {\n let appended = false;\n return () => {\n if (!appended) {\n document.body.appendChild(element);\n appended = true;\n }\n return element;\n };\n};\n/**\n * @hidden\n */\nconst getDocument = element => element.ownerDocument.documentElement;\n/**\n * @hidden\n */\nconst getWindow = element => element.ownerDocument.defaultView;\n/**\n * @hidden\n */\nconst offset = element => {\n const { clientTop, clientLeft } = getDocument(element);\n const { pageYOffset, pageXOffset } = getWindow(element);\n const { top, left } = element.getBoundingClientRect();\n return {\n top: top + pageYOffset - clientTop,\n left: left + pageXOffset - clientLeft\n };\n};\n/**\n * @hidden\n * If the target is before the draggable element, returns `true`.\n *\n * DOCUMENT_POSITION_FOLLOWING = 4\n */\nconst isTargetBefore = (draggable, target) => (target.compareDocumentPosition(draggable) & 4) !== 0;\n/**\n * @hidden\n * If the container and the element are the same\n * or if the container holds (contains) the element, returns `true`.\n *\n * DOCUMENT_POSITION_CONTAINED_BY = 16\n */\nconst contains = (element, container) => element === container ||\n (container.compareDocumentPosition(element) & 16) !== 0;\n/**\n * @hidden\n */\nconst position = (target, before) => {\n const targetRect = offset(target);\n const { offsetWidth, offsetHeight } = target;\n const left = targetRect.left + (before ? 0 : offsetWidth);\n const top = targetRect.top;\n const height = offsetHeight;\n return { left, top, height };\n};\n\n/**\n * @hidden\n */\nclass DragAndDropService {\n constructor() {\n this.changes = new EventEmitter();\n this.register = [];\n this.lastTarget = null;\n }\n add(target) {\n this.register.push(target);\n }\n remove(target) {\n this.register = this.register.filter(current => current !== target);\n }\n notifyDrag(draggable, element, mouseEvent) {\n const target = this.targetFor(element);\n if (this.lastTarget === target) {\n return;\n }\n this.changes.next({\n draggable,\n mouseEvent,\n target: this.lastTarget,\n type: 'leave'\n });\n if (target) {\n this.changes.next({\n draggable,\n mouseEvent,\n target,\n type: 'enter'\n });\n }\n this.lastTarget = target;\n }\n notifyDrop(draggable, mouseEvent) {\n this.changes.next({\n draggable,\n mouseEvent,\n target: this.lastTarget,\n type: 'drop'\n });\n this.lastTarget = null;\n }\n targetFor(element) {\n const comparer = contains.bind(null, element);\n return this.register.find(({ element: { nativeElement } }) => comparer(nativeElement));\n }\n}\nDragAndDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDragAndDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropService, decorators: [{\n type: Injectable\n }] });\n\nconst updateClass = (element, valid) => {\n const icon = element.querySelector('.k-icon');\n icon.className = icon.className\n .replace(/(plus|cancel)/, valid ? 'plus' : 'cancel');\n};\nconst updateLock = (element, locked = null) => {\n const icon = element.querySelectorAll('.k-icon')[1];\n const value = locked === null ? '' : (locked ? 'k-i-lock' : 'k-i-unlock');\n icon.className = icon.className\n .replace(/(k-i-unlock|k-i-lock)/, '') + ` ${value}`;\n};\nconst decorate = (element) => {\n element.className = 'k-header k-drag-clue';\n element.style.position = 'absolute';\n element.style.zIndex = '20000';\n};\n/**\n * @hidden\n */\nclass DragHintService {\n constructor(santizer) {\n this.santizer = santizer;\n }\n create(title) {\n this.dom = document.createElement(\"div\");\n decorate(this.dom);\n const safeTitle = this.santizer.sanitize(SecurityContext.HTML, title);\n this.dom.innerHTML = `\n \n \n \n ${safeTitle}\n `;\n }\n attach() {\n return append(this.dom);\n }\n remove() {\n if (this.dom && this.dom.parentNode) {\n (function (el) {\n setTimeout(() => document.body.removeChild(el));\n })(this.dom); // hack for IE + pointer events!\n this.dom = null;\n }\n }\n show() {\n this.dom.style.display = \"\";\n }\n hide() {\n this.dom.style.display = \"none\";\n }\n enable() {\n updateClass(this.dom, true);\n }\n disable() {\n updateClass(this.dom, false);\n }\n removeLock() {\n updateLock(this.dom);\n }\n toggleLock(locked) {\n updateLock(this.dom, locked);\n }\n move(move) {\n this.dom.style.top = move.pageY + 'px';\n this.dom.style.left = move.pageX + 'px';\n }\n}\nDragHintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragHintService, deps: [{ token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });\nDragHintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragHintService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragHintService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$3.DomSanitizer }]; } });\n\n/**\n * @hidden\n */\nclass DropCueService {\n create() {\n this.dom = document.createElement(\"div\");\n this.dom.className = 'k-grouping-dropclue';\n this.hide();\n }\n attach() {\n return append(this.dom);\n }\n remove() {\n if (this.dom && this.dom.parentElement) {\n document.body.removeChild(this.dom);\n this.dom = null;\n }\n }\n hide() {\n this.dom.style.display = \"none\";\n }\n position({ left, top, height }) {\n this.dom.style.display = 'block';\n this.dom.style.height = height + 'px';\n this.dom.style.top = top + 'px';\n const width = this.dom.offsetWidth / 2;\n this.dom.style.left = left - width + 'px';\n }\n}\nDropCueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropCueService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDropCueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropCueService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropCueService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass ColumnReorderService {\n constructor() {\n this.changes = new EventEmitter();\n }\n reorder(e) {\n this.changes.emit(e);\n }\n}\nColumnReorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnReorderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColumnReorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnReorderService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnReorderService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Arguments for the `columnReorder` event.\n */\nclass ColumnReorderEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor({ column, newIndex, oldIndex }) {\n super();\n this.column = column;\n this.newIndex = newIndex;\n this.oldIndex = oldIndex;\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationMetadata {\n constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns) {\n this.dataRows = dataRows;\n this.headerRows = headerRows;\n this.isVirtual = isVirtual;\n this.hasPager = hasPager;\n this.hasDetailTemplate = hasDetailTemplate;\n this.gridElement = gridElement;\n this.virtualColumns = virtualColumns;\n this.columns = columns;\n }\n get maxLogicalRowIndex() {\n const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;\n return this.headerRows + dataRows - 1;\n }\n}\n\nconst NO_STICKY = { left: '0px', right: '0px' };\n/**\n * @hidden\n */\nclass ColumnInfoService {\n constructor() {\n this.visibilityChange = new EventEmitter();\n this.lockedChange = new EventEmitter();\n this.stickyChange = new EventEmitter();\n this.columnRangeChange = new EventEmitter();\n this.columnsContainer = new ColumnsContainer(() => []);\n }\n get lockedLeafColumns() {\n return this.columnsContainer.lockedLeafColumns;\n }\n get nonLockedLeafColumns() {\n return this.columnsContainer.nonLockedLeafColumns;\n }\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n get totalLevels() {\n return this.columnsContainer.totalLevels;\n }\n get hiddenColumns() {\n if (!this.list) {\n return [];\n }\n return this.list().filter(column => !column.isVisible);\n }\n get leafNamedColumns() {\n const columns = expandColumns(this.list().filterSort(column => !column.isColumnGroup))\n .filter(column => column.matchesMedia && column.displayTitle);\n return orderBy(columns, [{ field: 'locked', dir: 'desc' }]);\n }\n get unlockedRootCount() {\n return this.list().rootColumns().filter(column => !column.locked && column.isVisible).length;\n }\n stickyColumnsStyles(column) {\n if (!this.stickyColumns) {\n this.stickyColumns = this.list().rootColumns().filter(column => column.sticky && !column.locked && column.isVisible);\n }\n if (this.stickyColumns.length === 0) {\n return NO_STICKY;\n }\n const result = this.stickyColumns.reduce((acc, curr) => {\n if (curr.leafIndex < column.leafIndex) {\n acc.left += curr.width;\n }\n else if (curr.leafIndex > column.leafIndex) {\n acc.right += curr.width;\n }\n return acc;\n }, { left: 0, right: 0 });\n return {\n left: `${result.left}px`,\n right: `${result.right}px`\n };\n }\n init(columns, list) {\n this.columnsContainer = columns;\n this.list = list;\n this.stickyColumns = null;\n }\n changeVisibility(columns) {\n this.stickyColumns = null;\n this.visibilityChange.emit(columns);\n }\n changeLocked(columns) {\n this.stickyColumns = null;\n this.lockedChange.emit(columns);\n }\n changeStuck(columns) {\n this.stickyColumns = null;\n this.stickyChange.emit(columns);\n }\n}\nColumnInfoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnInfoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColumnInfoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnInfoService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnInfoService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass SortService {\n constructor() {\n this.changes = new Subject();\n }\n sort(value) {\n this.changes.next(value);\n }\n}\n\n/**\n * Arguments for the `columnVisibilityChange` event.\n */\nclass ColumnVisibilityChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * Arguments for the `columnLockedChange` event.\n */\nclass ColumnLockedChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * @hidden\n */\nconst GROUP_CELL_WIDTH = 32; // this should be the value of group-cell inside the theme!\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_MEDIUM = 600;\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_LARGE = 768;\n\n/**\n * @hidden\n */\nfunction defaultTrackBy(index, item) {\n if (item.type === 'data' && item.isEditing) {\n return item.data;\n }\n return index;\n}\n\n/**\n * Arguments for the `columnStickyChange` event.\n */\nclass ColumnStickyChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * Represents the virtual scrolling cell template of the Grid while loading new data. Provides an option to customize the\n * appearance of the indicator that is displayed while new data is loading. To define the loading cell template,\n * nest an `` tag with the `kendoGridCellLoadingTemplate` directive inside `` ([see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton)).\n *\n * The template context is set to the current column, and utilizes the `let-x` syntax—for example, `let-column`.\n *\n * @example\n * ```ts-no-run\n * \n * \n * ...\n * \n * \n * ```\n */\nclass CellLoadingTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCellLoadingTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellLoadingTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCellLoadingTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellLoadingTemplateDirective, selector: \"[kendoGridCellLoadingTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellLoadingTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridCellLoadingTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Creates a loading template that overrides the default loading indicator of the Grid Component.\n * To define a loading template, nest an `` tag with the `kendoGridLoadingTemplate` directive inside the `` tag\n * [see example]({% slug databinding_grid %}#toc-loading-template).\n */\nclass LoadingTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nLoadingTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nLoadingTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingTemplateDirective, selector: \"[kendoGridLoadingTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridLoadingTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass ToolbarComponent {\n constructor(ctx) {\n this.ctx = ctx;\n this.context = {};\n }\n set position(value) {\n this.context.position = value;\n }\n get toolbarTemplateRef() {\n return this.ctx.grid.toolbarTemplate ? this.ctx.grid.toolbarTemplate.templateRef : undefined;\n }\n}\nToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarComponent, deps: [{ token: ContextService }], target: i0.ɵɵFactoryTarget.Component });\nToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarComponent, selector: \"kendo-grid-toolbar\", inputs: { position: \"position\" }, ngImport: i0, template: `\n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-toolbar',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ContextService }]; }, propDecorators: { position: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst normalizeSettings = ({ buttonCount = 10, info = true, type = 'numeric', pageSizes = false, previousNext = true, responsive = true, position = 'bottom' }) => ({\n buttonCount,\n info,\n pageSizes: pageSizes === true ? [5, 10, 20] : pageSizes,\n previousNext,\n type,\n responsive,\n position\n});\n/**\n * @hidden\n */\nconst normalize$1 = (settings) => normalizeSettings(settings === true ? {} : settings);\n\n/**\n * @hidden\n */\nclass FocusGroup {\n constructor(root) {\n this.root = root;\n this.active = true;\n this.children = [];\n this.root.registerGroup(this);\n }\n get focusableChildren() {\n return this.children.filter(el => el.canFocus());\n }\n get isActive() {\n return this.active;\n }\n ngOnDestroy() {\n this.root.unregisterGroup(this);\n }\n registerElement(element) {\n this.unregisterElement(element);\n this.children.push(element);\n }\n unregisterElement(element) {\n this.children = this.children.filter(f => f !== element);\n }\n /**\n * Returns a Boolean value which indicates if the group will receive focus when the cell is focused.\n * Requires a single \"simple\" focusable element such as a button or a checkbox.\n */\n isNavigable() {\n const focusable = this.focusableChildren;\n return focusable.length === 1 && focusable[0].isNavigable();\n }\n canFocus() {\n return this.focusableChildren.length > 0;\n }\n focus() {\n if (this.canFocus() && !this.hasFocus()) {\n this.focusableChildren[0].focus();\n }\n }\n activate() {\n this.toggleState(true);\n }\n deactivate() {\n this.toggleState(false);\n }\n hasFocus() {\n return this.children.reduce((focused, element) => focused || element.hasFocus(), false);\n }\n toggleState(active) {\n if (this.active !== active) {\n this.active = active;\n this.children.forEach(f => f.toggle(active));\n }\n }\n}\nFocusGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusGroup, deps: [{ token: FocusRoot }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusGroup.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusGroup });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusGroup, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: FocusRoot }]; } });\n\n/**\n * @hidden\n */\nclass PagerElementComponent {\n constructor(localization, pagerContext, cd) {\n this.localization = localization;\n this.pagerContext = pagerContext;\n this.cd = cd;\n this.total = this.pagerContext.total;\n this.skip = this.pagerContext.skip;\n this.pageSize = this.pagerContext.pageSize;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n /**\n * @hidden\n *\n * @param {string} key\n * @returns {string}\n *\n * @memberOf PagerElementComponent\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n *\n * @param {number} page\n *\n * @memberOf PagerElementComponent\n */\n changePage(page) {\n this.pagerContext.changePage(page);\n return false;\n }\n /**\n * @hidden\n *\n * @memberOf PagerElementComponent\n */\n ngOnInit() {\n this.subscriptions = this.pagerContext.changes.subscribe(this.onChanges.bind(this));\n this.subscriptions.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n}\nPagerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerElementComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPagerElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerElementComponent, selector: \"kendo-pager-element-base\", ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerElementComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pager-element-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Displays buttons for navigating to the first and to the previous page ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nclass PagerPrevButtonsComponent extends PagerElementComponent {\n constructor(localization, pagerContext, cd, navigationService) {\n super(localization, pagerContext, cd);\n this.navigationService = navigationService;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerPrevButtonsComponent\n */\n get disabled() {\n return this.currentPage === 1 || !this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerPrevButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nPagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerPrevButtonsComponent, selector: \"kendo-pager-prev-buttons\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-prev-buttons',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });\n\n/**\n * Displays numeric buttons to enable navigation between the pages.\n */\nclass PagerNumericButtonsComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.numbersWrapClass = true;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number[]}\n * @memberOf PagerNumericButtonsComponent\n */\n get buttons() {\n let result = [];\n for (let idx = this.start; idx <= this.end; idx++) {\n result.push(idx);\n }\n return result;\n }\n /**\n * @hidden\n */\n get end() {\n return Math.min((this.start + this.buttonCount) - 1, this.totalPages);\n }\n /**\n * @hidden\n */\n get start() {\n const page = this.currentPage;\n const buttonCount = this.buttonCount;\n if (page > buttonCount) {\n const reminder = (page % buttonCount);\n return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n }\n return 1;\n }\n /**\n * @hidden\n */\n pageLabel(num) {\n const pageText = this.textFor('pagerPage');\n if (pageText) {\n return pageText + ' ' + num;\n }\n return num.toString();\n }\n /**\n * @hidden\n */\n onSelectChange(e) {\n const target = e.target;\n const valueAsNumber = Number(target.value);\n if (!Number.isNaN(valueAsNumber)) {\n this.changePage(valueAsNumber - 1);\n }\n else {\n if (target.value === 'previousButtons') {\n this.changePage(this.start - 2);\n }\n else {\n this.changePage(this.end);\n }\n }\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerNumericButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });\nPagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerNumericButtonsComponent, selector: \"kendo-pager-numeric-buttons\", inputs: { buttonCount: \"buttonCount\" }, host: { properties: { \"class.k-pager-numbers-wrap\": \"this.numbersWrapClass\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n
    \n
  • 1\">\n ...\n
  • \n
  • \n \n {{num}}\n \n
  • \n
  • \n ...\n
  • \n
\n `, isInline: true, directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-numeric-buttons',\n template: `\n \n \n \n \n \n \n
    \n
  • 1\">\n ...\n
  • \n
  • \n \n {{num}}\n \n
  • \n
  • \n ...\n
  • \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { numbersWrapClass: [{\n type: HostBinding,\n args: ['class.k-pager-numbers-wrap']\n }], buttonCount: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PagerInputDirective {\n constructor(host, renderer) {\n this.host = host;\n this.renderer = renderer;\n }\n ngAfterViewInit() {\n const inputElement = this.host.numericInput.nativeElement;\n this.renderer.addClass(inputElement, 'k-pager-nav');\n }\n}\nPagerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputDirective, deps: [{ token: i4$1.NumericTextBoxComponent }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nPagerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInputDirective, selector: \"[kendoGridPagerInput]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridPagerInput]' }]\n }], ctorParameters: function () { return [{ type: i4$1.NumericTextBoxComponent }, { type: i0.Renderer2 }]; } });\n\n/**\n * Displays an input element which allows the typing and rendering of page numbers.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n *\n *
\n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": false\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": true\n * }\n * ];\n * }\n *\n * ```\n */\nclass PagerInputComponent extends PagerElementComponent {\n constructor(localization, pagerContext, zone, navigationService, cd) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.zone = zone;\n this.navigationService = navigationService;\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleKeyDown = (event) => {\n let incomingValue = this.numericInput.value || this.current;\n if (event.keyCode === Keys.Enter) {\n event.preventDefault();\n if (incomingValue !== this.current) {\n this.zone.run(() => {\n this.changePage(incomingValue - 1);\n });\n }\n }\n };\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleBlur = () => {\n const inputValue = this.numericInput.value;\n if (!inputValue) {\n this.numericInput.writeValue(this.current);\n return;\n }\n if (inputValue !== this.current) {\n this.zone.run(() => {\n this.changePage(inputValue - 1);\n });\n }\n };\n }\n /**\n * @hidden\n */\n get current() {\n return this.hasPages ? this.currentPage : 0;\n }\n get hasPages() {\n return this.totalPages !== 0;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.NgZone }, { token: NavigationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInputComponent, selector: \"kendo-pager-input\", viewQueries: [{ propertyName: \"numericInput\", first: true, predicate: NumericTextBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{textFor('pagerPage')}}\n \n \n {{textFor('pagerOf')}} {{totalPages}}\n \n `, isInline: true, components: [{ type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: PagerInputDirective, selector: \"[kendoGridPagerInput]\" }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i1$1.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pager-input',\n template: `\n \n {{textFor('pagerPage')}}\n \n \n {{textFor('pagerOf')}} {{totalPages}}\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.NgZone }, { type: NavigationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { numericInput: [{\n type: ViewChild,\n args: [NumericTextBoxComponent, { static: false }]\n }] } });\n\n/**\n * Displays buttons for navigating to the next and to the last page ([see example]({% slug paging_grid %}#toc-pager-template)).\n */\nclass PagerNextButtonsComponent extends PagerElementComponent {\n constructor(localization, pagerContext, cd, navigationService) {\n super(localization, pagerContext, cd);\n this.navigationService = navigationService;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerNextButtonsComponent\n */\n get disabled() {\n return this.currentPage === this.totalPages || !this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerNextButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nPagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerNextButtonsComponent, selector: \"kendo-pager-next-buttons\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-next-buttons',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }, { type: NavigationService }]; } });\n\n// eslint-disable no-access-missing-member\n/**\n * Displays information about the current page and the total number of records ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nclass PagerInfoComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get maxItems() {\n return Math.min(this.currentPage * this.pageSize, this.total);\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get currentPageText() {\n return this.total ?\n (this.currentPage - 1) * this.pageSize + 1 :\n 0;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerInfoComponent\n */\n get classes() {\n return true;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInfoComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });\nPagerInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInfoComponent, selector: \"kendo-pager-info\", host: { properties: { \"class.k-pager-info\": \"this.classes\", \"class.k-label\": \"this.classes\" } }, usesInheritance: true, ngImport: i0, template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInfoComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-info',\n template: `{{currentPageText}} - {{maxItems}} {{textFor('pagerOf')}} {{total}} {{textFor('pagerItems')}}`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{\n type: HostBinding,\n args: [\"class.k-pager-info\"]\n }, {\n type: HostBinding,\n args: [\"class.k-label\"]\n }] } });\n\n/**\n * @hidden\n */\nclass PagerDropDownListDirective {\n constructor(host) {\n this.host = host;\n this.keydownHandler = (e) => {\n if (e.keyCode === Keys.Escape && this.host.isOpen) {\n e.stopPropagation();\n this.host.toggle(false);\n }\n };\n }\n ngAfterViewInit() {\n const wrapperElement = this.host.wrapper.nativeElement;\n wrapperElement.addEventListener('keydown', this.keydownHandler, true);\n }\n ngOnDestroy() {\n this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);\n }\n}\nPagerDropDownListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerDropDownListDirective, deps: [{ token: i1$4.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });\nPagerDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerDropDownListDirective, selector: \"[kendoGridPagerDropDown]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerDropDownListDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridPagerDropDown]' }]\n }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; } });\n\n/**\n * Displays a drop-down list for the page size selection ([see example]({% slug paging_grid %}#toc-pager-templates)).\n */\nclass PagerPageSizesComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext, navigationService) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.navigationService = navigationService;\n this._pageSizes = [];\n }\n /**\n * The page sizes collection. Can be an Array of numbers and/or PageSizeItem objects.\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * public pageSize = 2;\n * public pagesizes = [{text: 'One', value: 1}, {text: 'Two', value: 2}, {text: 'All', value : 'all'}];\n * }\n *\n * const products = [{\n * 'ProductID' : 1,\n * 'ProductName' : \"Chai\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 1,\n * 'QuantityPerUnit' : \"10 boxes x 20 bags\",\n * 'UnitPrice' : 18.0000,\n * 'UnitsInStock' : 39,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 10,\n * 'Discontinued' : false\n *\n * }, {\n * 'ProductID' : 2,\n * 'ProductName' : \"Chang\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 1,\n * 'QuantityPerUnit' : \"24 - 12 oz bottles\",\n * 'UnitPrice' : 19.0000,\n * 'UnitsInStock' : 17,\n * 'UnitsOnOrder' : 40,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 3,\n * 'ProductName' : \"Aniseed Syrup\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"12 - 550 ml bottles\",\n * 'UnitPrice' : 10.0000,\n * 'UnitsInStock' : 13,\n * 'UnitsOnOrder' : 70,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 4,\n * 'ProductName' : \"Chef Anton\\'s Cajun Seasoning\",\n * 'SupplierID' : 2,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"48 - 6 oz jars\",\n * 'UnitPrice' : 22.0000,\n * 'UnitsInStock' : 53,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 0,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 5,\n * 'ProductName' : \"Chef Anton\\'s Gumbo Mix\",\n * 'SupplierID' : 2,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"36 boxes\",\n * 'UnitPrice' : 21.3500,\n * 'UnitsInStock' : 0,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 0,\n * 'Discontinued' : true\n * }, {\n * 'ProductID' : 6,\n * 'ProductName' : \"Grandma\\'s Boysenberry Spread\",\n * 'SupplierID' : 3,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"12 - 8 oz jars\",\n * 'UnitPrice' : 25.0000,\n * 'UnitsInStock' : 120,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }];\n * ```\n */\n set pageSizes(pageSizes) {\n let normalizedItems = [];\n pageSizes.forEach(item => {\n if (typeof item === 'number') {\n normalizedItems.push({\n text: item.toString(),\n value: item\n });\n }\n else {\n normalizedItems.push(item);\n }\n });\n if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {\n normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];\n }\n this._pageSizes = normalizedItems;\n }\n get pageSizes() {\n return this._pageSizes;\n }\n /**\n * @hidden\n *\n * @readonly\n */\n get classes() {\n return true;\n }\n /**\n * @hidden\n *\n * @readonly\n */\n get showInitialPageSize() {\n return this.pageSizes\n .filter(item => {\n if (typeof item.value === 'number') {\n return item.value === Number(this.pageSize);\n }\n return this.total === Number(this.pageSize);\n })\n .length === 0;\n }\n /**\n * @hidden\n */\n pageSizeChange(value) {\n this.pageSize = typeof value === 'number' ? value : this.total;\n this.pagerContext.changePageSize(this.pageSize);\n }\n /**\n * @hidden\n */\n getValue(page) {\n return typeof page.value === 'number' ? page.value : this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;\n this.cd.markForCheck();\n }\n}\nPagerPageSizesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nPagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerPageSizesComponent, selector: \"kendo-pager-page-sizes\", inputs: { pageSizes: \"pageSizes\" }, host: { properties: { \"class.k-pager-sizes\": \"this.classes\", \"class.k-label\": \"this.classes\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }, { type: i5.LabelComponent, selector: \"kendo-label\", inputs: [\"text\", \"for\", \"optional\"], exportAs: [\"kendoLabel\"] }], directives: [{ type: PagerDropDownListDirective, selector: \"[kendoGridPagerDropDown]\" }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPageSizesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-pager-page-sizes',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: NavigationService }]; }, propDecorators: { pageSizes: [{\n type: Input\n }], classes: [{\n type: HostBinding,\n args: ['class.k-pager-sizes']\n }, {\n type: HostBinding,\n args: ['class.k-label']\n }] } });\n\n/**\n * @hidden\n */\nclass PagerComponent {\n constructor(pagerContext, navigationService, element, renderer, zone, localizationService, cellContext, focusRoot, focusGroup) {\n this.pagerContext = pagerContext;\n this.navigationService = navigationService;\n this.element = element;\n this.renderer = renderer;\n this.zone = zone;\n this.localizationService = localizationService;\n this.cellContext = cellContext;\n this.focusRoot = focusRoot;\n this.focusGroup = focusGroup;\n this.total = 0;\n this.skip = 1;\n this.pageChange = new EventEmitter();\n this.pagerWrapClass = true;\n this.gridPagerClass = true;\n this.settings = normalize$1({});\n this.subscriptions = new Subscription();\n this._templateContext = {};\n this._isFocused = false;\n this.resizeHandler = () => {\n const element = this.element.nativeElement;\n if (this.template || !element) {\n return;\n }\n const width = element.offsetWidth;\n if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n this.renderer.removeClass(element, 'k-pager-md');\n this.renderer.addClass(element, 'k-pager-sm');\n }\n else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {\n this.renderer.addClass(element, 'k-pager-md');\n this.renderer.removeClass(element, 'k-pager-sm');\n }\n else {\n this.clearResponsiveClasses();\n }\n };\n }\n set options(value) {\n this.settings = normalize$1(value);\n }\n get isFocused() {\n return this._isFocused;\n }\n get pagerAriaLabel() {\n return this.navigationService.enabled ? this.pagerLabel : undefined;\n }\n /**\n * @hidden\n */\n get pagerLabel() {\n const localizationMsg = this.localizationService.get('pagerLabel') || '';\n return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());\n }\n get focusTrapTabIndex() {\n return this.focusGroup.isActive ? '0' : '-1';\n }\n onFocusIn(event) {\n if (this.navigationService.enabled) {\n const shouldFocusPager = event.target === this.element.nativeElement;\n if (shouldFocusPager) {\n this._isFocused = true;\n this.focusRoot.deactivate();\n }\n else {\n this.focusRoot.activate();\n }\n }\n }\n onFocusOut() {\n if (this.navigationService.enabled) {\n this._isFocused = false;\n }\n }\n onEscape() {\n if (this.navigationService.enabled) {\n this.focusRoot.deactivate();\n this.element.nativeElement.focus();\n }\n }\n onEnter(event) {\n if (this.navigationService.enabled && event.target === this.element.nativeElement) {\n this.focusRoot.activate();\n this.focusFirstElement();\n }\n }\n navigateToPreviousPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {\n this.pagerContext.prevPage();\n }\n }\n navigateToNextPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {\n this.pagerContext.nextPage();\n }\n }\n navigateToFirstPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {\n this.pagerContext.changePage(0);\n }\n }\n navigateToLastPage(e) {\n if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {\n this.pagerContext.changePage(this.totalPages - 1);\n }\n }\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n get templateContext() {\n const context = this._templateContext;\n context.totalPages = this.totalPages;\n context.total = this.total;\n context.skip = this.skip;\n context.pageSize = this.pageSize;\n context.currentPage = this.currentPage;\n return context;\n }\n ngOnInit() {\n this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));\n if (this.navigationService.enabled) {\n this.focusRoot.deactivate();\n }\n }\n ngDoCheck() {\n this.updateCellContext();\n }\n ngOnChanges(changes) {\n if (anyChanged(['pageSize', 'skip', 'total'], changes, false)) {\n this.pagerContext.notifyChanges({\n pageSize: this.pageSize,\n skip: this.skip,\n total: this.total\n });\n }\n if (changes.template) {\n // eslint-disable-next-line no-unused-expressions\n changes.template.currentValue ? this.clearResponsiveClasses() : this.resizeHandler();\n }\n if (changes.options) {\n // eslint-disable-next-line no-unused-expressions\n this.settings.responsive ? this.resizeHandler() : this.clearResponsiveClasses();\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n changePage(event) {\n this.pageChange.emit(event);\n }\n onInnerFocusIn(event, position) {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (position === 'start') {\n if (event.relatedTarget === this.element.nativeElement) {\n this.focusFirstElement();\n }\n else {\n this.focusLastElement();\n }\n }\n else {\n this.focusFirstElement();\n }\n });\n }\n clearResponsiveClasses() {\n const element = this.element.nativeElement;\n this.renderer.removeClass(element, 'k-pager-sm');\n this.renderer.removeClass(element, 'k-pager-md');\n }\n shouldTriggerPageChange(target, condition) {\n return this.navigationService.enabled &&\n target === this.element.nativeElement &&\n condition;\n }\n focusFirstElement() {\n const first = findFocusableChild(this.element.nativeElement, true);\n if (first) {\n first.focus();\n }\n }\n focusLastElement() {\n const last = findLastFocusableChild(this.element.nativeElement, true);\n if (last) {\n last.focus();\n }\n }\n updateCellContext() {\n if (this.cellContext) {\n this.cellContext.focusGroup = this.focusGroup;\n }\n }\n}\nPagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerComponent, deps: [{ token: PagerContextService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: CELL_CONTEXT, optional: true }, { token: FocusRoot }, { token: FocusGroup }], target: i0.ɵɵFactoryTarget.Component });\nPagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerComponent, selector: \"kendo-pager\", inputs: { total: \"total\", skip: \"skip\", pageSize: \"pageSize\", options: \"options\", template: \"template\" }, outputs: { pageChange: \"pageChange\" }, host: { listeners: { \"focusin\": \"onFocusIn($event)\", \"focusout\": \"onFocusOut()\", \"keydown.escape\": \"onEscape()\", \"keydown.enter\": \"onEnter($event)\", \"keydown.arrowleft\": \"navigateToPreviousPage($event)\", \"keydown.pageup\": \"navigateToPreviousPage($event)\", \"keydown.arrowright\": \"navigateToNextPage($event)\", \"keydown.pagedown\": \"navigateToNextPage($event)\", \"keydown.home\": \"navigateToFirstPage($event)\", \"keydown.end\": \"navigateToLastPage($event)\" }, properties: { \"class.k-pager-wrap\": \"this.pagerWrapClass\", \"class.k-grid-pager\": \"this.gridPagerClass\", \"class.k-state-focused\": \"this.isFocused\", \"attr.aria-label\": \"this.pagerAriaLabel\" } }, providers: [{\n provide: FOCUS_ROOT_ACTIVE,\n useValue: true\n }, {\n provide: FocusRoot,\n deps: [FOCUS_ROOT_ACTIVE],\n useClass: FocusRoot\n }, {\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }], usesOnChanges: true, ngImport: i0, template: `\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: PagerPrevButtonsComponent, selector: \"kendo-pager-prev-buttons\" }, { type: PagerNumericButtonsComponent, selector: \"kendo-pager-numeric-buttons\", inputs: [\"buttonCount\"] }, { type: PagerInputComponent, selector: \"kendo-pager-input\" }, { type: PagerNextButtonsComponent, selector: \"kendo-pager-next-buttons\" }, { type: PagerInfoComponent, selector: \"kendo-pager-info\" }, { type: PagerPageSizesComponent, selector: \"kendo-pager-page-sizes\", inputs: [\"pageSizes\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pager',\n providers: [{\n provide: FOCUS_ROOT_ACTIVE,\n useValue: true\n }, {\n provide: FocusRoot,\n deps: [FOCUS_ROOT_ACTIVE],\n useClass: FocusRoot\n }, {\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }],\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: PagerContextService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: FocusRoot }, { type: FocusGroup }]; }, propDecorators: { total: [{\n type: Input\n }], skip: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], options: [{\n type: Input\n }], template: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], pagerWrapClass: [{\n type: HostBinding,\n args: ['class.k-pager-wrap']\n }], gridPagerClass: [{\n type: HostBinding,\n args: ['class.k-grid-pager']\n }], isFocused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], pagerAriaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], onFocusIn: [{\n type: HostListener,\n args: ['focusin', ['$event']]\n }], onFocusOut: [{\n type: HostListener,\n args: ['focusout']\n }], onEscape: [{\n type: HostListener,\n args: ['keydown.escape']\n }], onEnter: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }], navigateToPreviousPage: [{\n type: HostListener,\n args: ['keydown.arrowleft', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.pageup', ['$event']]\n }], navigateToNextPage: [{\n type: HostListener,\n args: ['keydown.arrowright', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.pagedown', ['$event']]\n }], navigateToFirstPage: [{\n type: HostListener,\n args: ['keydown.home', ['$event']]\n }], navigateToLastPage: [{\n type: HostListener,\n args: ['keydown.end', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass DropTargetDirective {\n constructor(element, service) {\n this.element = element;\n this.service = service;\n this.context = {};\n this.enter = new EventEmitter();\n this.leave = new EventEmitter();\n this.drop = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.service.add(this);\n const changes = this.service.changes.pipe(filter(({ target }) => target === this));\n this.subscriptions.add(changes.pipe(filter(({ type }) => type === 'leave'))\n .subscribe(e => {\n this.leave.next(this.eventArgs(e));\n }));\n this.subscriptions.add(changes.pipe(filter(({ type }) => type === 'enter'))\n .subscribe(e => {\n this.enter.next(this.eventArgs(e));\n }));\n this.subscriptions.add(changes.pipe(filter(({ type }) => type === 'drop'))\n .subscribe(e => {\n this.drop.next(this.eventArgs(e));\n }));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n eventArgs(e) {\n return {\n target: this,\n mouseEvent: e.mouseEvent,\n draggable: e.draggable\n };\n }\n}\nDropTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropTargetDirective, deps: [{ token: i0.ElementRef }, { token: DragAndDropService }], target: i0.ɵɵFactoryTarget.Directive });\nDropTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropTargetDirective, selector: \"[kendoDropTarget]\", inputs: { context: \"context\" }, outputs: { enter: \"enter\", leave: \"leave\", drop: \"drop\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropTargetDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropTarget]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragAndDropService }]; }, propDecorators: { context: [{\n type: Input\n }], enter: [{\n type: Output\n }], leave: [{\n type: Output\n }], drop: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass GroupIndicatorComponent {\n constructor() {\n this.directionChange = new EventEmitter();\n this.remove = new EventEmitter();\n }\n get groupIndicatorClass() {\n return true;\n }\n get dir() {\n return this.group.dir ? this.group.dir : \"asc\";\n }\n toggleDirection() {\n this.directionChange.emit({\n dir: this.dir === \"asc\" ? \"desc\" : \"asc\",\n field: this.group.field\n });\n return false;\n }\n removeDescriptor() {\n this.remove.emit({\n dir: this.group.dir,\n field: this.group.field\n });\n return false;\n }\n}\nGroupIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGroupIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupIndicatorComponent, selector: \"[kendoGroupIndicator]\", inputs: { group: \"group\", groupTitle: \"groupTitle\" }, outputs: { directionChange: \"directionChange\", remove: \"remove\" }, host: { properties: { \"class.k-group-indicator\": \"this.groupIndicatorClass\" } }, ngImport: i0, template: `\n \n \n {{groupTitle}}\n \n \n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupIndicatorComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[kendoGroupIndicator]',\n template: `\n \n \n {{groupTitle}}\n \n \n \n `\n }]\n }], propDecorators: { directionChange: [{\n type: Output\n }], remove: [{\n type: Output\n }], group: [{\n type: Input\n }], groupTitle: [{\n type: Input\n }], groupIndicatorClass: [{\n type: HostBinding,\n args: [\"class.k-group-indicator\"]\n }] } });\n\n/**\n * @hidden\n */\nconst preventOnDblClick$1 = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\nconst hasClass = className => el => new RegExp(`(^| )${className}( |$)`).test(el.className);\nconst isDeleteButton = or(hasClass('k-i-group-delete'), hasClass('k-icon-button'));\nconst isSortIcon = or(hasClass('k-i-sort-asc-sm'), hasClass('k-i-sort-desc-sm'));\nconst skipButtons = and(not(isDeleteButton), not(isSortIcon), not(isFocusableWithTabKey), not(matchesNodeName('label')));\nconst elementUnderCursor = ({ clientX, clientY }) => document.elementFromPoint(clientX, clientY);\nconst hideThenShow = (element, cont) => {\n element.style.display = 'none';\n const result = cont();\n element.style.display = 'block';\n return result;\n};\n/**\n * @hidden\n */\nclass DraggableColumnDirective {\n constructor(draggable, element, zone, service, hint, cue, nav, renderer) {\n this.draggable = draggable;\n this.element = element;\n this.zone = zone;\n this.service = service;\n this.hint = hint;\n this.cue = cue;\n this.nav = nav;\n this.renderer = renderer;\n this.context = {};\n this.drag = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n set enableDrag(enabled) {\n this.enabled = enabled;\n this.updateTouchAction();\n }\n get hostClass() {\n return this.enabled;\n }\n ngOnInit() {\n this.subscriptions.add(this.zone.runOutsideAngular(() => this.draggable.kendoPress.pipe(filter(_ => this.enabled), filter(({ originalEvent: { target } }) => target === this.element.nativeElement || skipButtons(target)), tap((e) => {\n const originalEvent = e.originalEvent;\n if (!e.isTouch) {\n originalEvent.preventDefault();\n }\n this.nav.navigateTo(originalEvent.target);\n }), switchMap(preventOnDblClick$1(this.draggable.kendoRelease)), tap((_) => {\n this.hint.create(this.context.hint);\n this.cue.create();\n }), switchMap(down => this.draggable.kendoDrag.pipe(tap((e) => {\n if (e.isTouch) {\n e.originalEvent.preventDefault();\n }\n }), tap(this.hint.attach()), tap(this.cue.attach()), \n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(this.draggable.kendoRelease), map(move => ({ move, down })))), tap(this.performDrag.bind(this)), switchMapTo(this.draggable.kendoRelease)).subscribe(this.drop.bind(this))));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n drop(upEvent) {\n this.hint.remove();\n this.cue.remove();\n this.service.notifyDrop(this, upEvent);\n }\n performDrag({ move }) {\n this.hint.move(move);\n const cursorElement = this.elementUnderCursor(move);\n if (cursorElement) {\n this.service.notifyDrag(this, cursorElement, move);\n }\n this.drag.emit({\n draggable: this,\n mouseEvent: move\n });\n }\n elementUnderCursor(mouseEvent) {\n this.hint.hide();\n let target = elementUnderCursor(mouseEvent);\n if (target && /k-grouping-dropclue/.test(target.className)) {\n target = hideThenShow(target, elementUnderCursor.bind(this, mouseEvent));\n }\n this.hint.show();\n return target;\n }\n updateTouchAction() {\n if (!this.element) {\n return;\n }\n // eslint-disable-next-line no-unused-expressions\n this.enabled ? this.renderer.addClass(this.element.nativeElement, 'k-touch-action-none') :\n this.renderer.removeClass(this.element.nativeElement, 'k-touch-action-none');\n }\n}\nDraggableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableColumnDirective, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: DragAndDropService }, { token: DragHintService }, { token: DropCueService }, { token: NavigationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nDraggableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DraggableColumnDirective, selector: \"[kendoDraggableColumn]\", inputs: { context: \"context\", enableDrag: \"enableDrag\" }, outputs: { drag: \"drag\" }, host: { properties: { \"class.k-grid-draggable-header\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableColumnDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDraggableColumn]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: DragAndDropService }, { type: DragHintService }, { type: DropCueService }, { type: NavigationService }, { type: i0.Renderer2 }]; }, propDecorators: { context: [{\n type: Input\n }], enableDrag: [{\n type: Input\n }], drag: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-grid-draggable-header']\n }] } });\n\nconst withoutField = ({ field }) => isNullOrEmptyString(field);\nconst alreadyGrouped = ({ groups, field }) => groups.some(group => group.field === field);\nconst overSameTarget = ({ target, field }) => target.field === field;\nconst overLastTarget = ({ target }) => target.lastTarget;\nconst isLastGroup = ({ groups, field }) => groups.map(group => group.field).indexOf(field) === groups.length - 1;\nconst isNotGroupable = (groupsService) => ({ field }) => !groupsService.isGroupable(field);\nconst columnRules = (groupService) => or(withoutField, alreadyGrouped, isNotGroupable(groupService));\nconst indicatorRules = or(overSameTarget, and(overLastTarget, isLastGroup));\n/**\n * @hidden\n */\nclass GroupPanelComponent {\n constructor(hint, cue, groupInfoService, localization, cd) {\n this.hint = hint;\n this.cue = cue;\n this.groupInfoService = groupInfoService;\n this.localization = localization;\n this.cd = cd;\n this.change = new EventEmitter();\n this.groups = [];\n this.dropTargets = new QueryList();\n this.groupTitles = [];\n this.subscription = new Subscription();\n }\n get groupHeaderClass() {\n return true;\n }\n set text(value) {\n this.emptyText = value;\n }\n get text() {\n return this.emptyText ? this.emptyText : this.localization.get('groupPanelEmpty');\n }\n ngAfterViewInit() {\n this.subscription.add(observe(this.dropTargets)\n .subscribe(this.attachTargets.bind(this)));\n }\n ngOnInit() {\n this.subscription.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngDoCheck() {\n const currentTitles = this.groups.map(group => this.groupInfoService.groupTitle(group));\n if (currentTitles.length !== this.groupTitles.length || currentTitles.some((current, idx) => current !== this.groupTitles[idx])) {\n this.groupTitles = currentTitles;\n this.cd.markForCheck();\n }\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n }\n directionChange(group) {\n const index = this.groups.findIndex(x => x.field === group.field);\n const groups = [...this.groups.slice(0, index), group, ...this.groups.slice(index + 1)];\n this.change.emit(groups);\n }\n insert(field, index) {\n const groups = this.groups.filter(x => x.field !== field);\n if (groups.length || this.groups.length === 0) {\n this.change.emit([...groups.slice(0, index), { field: field }, ...groups.slice(index)]);\n }\n }\n remove(group) {\n this.change.emit(this.groups.filter(x => x.field !== group.field));\n }\n canDrop(draggable, target) {\n const isIndicator = draggable.type === 'groupIndicator';\n const rules = isIndicator\n ? indicatorRules\n : columnRules(this.groupInfoService);\n return !rules({\n field: draggable.field,\n groups: this.groups,\n target\n });\n }\n attachTargets() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n this.targetSubscription = new Subscription();\n const enterStream = this.dropTargets\n .reduce((acc, target) => merge(acc, target.enter), from([]));\n const leaveStream = this.dropTargets\n .reduce((acc, target) => merge(acc, target.leave), from([]));\n const dropStream = this.dropTargets\n .reduce((acc, target) => merge(acc, target.drop), from([]));\n this.targetSubscription.add(enterStream.pipe(tap(_ => this.hint.removeLock()), filter(({ draggable, target }) => this.canDrop(draggable.context, target.context)), tap(this.enter.bind(this)), switchMapTo(dropStream.pipe(takeUntil(leaveStream.pipe(tap(this.leave.bind(this))))))).subscribe(this.drop.bind(this)));\n }\n enter({ draggable, target }) {\n this.hint.enable();\n let before = target.context.lastTarget || isTargetBefore(draggable.element.nativeElement, target.element.nativeElement);\n if (this.localization.rtl) {\n before = !before;\n }\n this.cue.position(position(target.element.nativeElement, before));\n }\n leave() {\n this.hint.disable();\n this.cue.hide();\n }\n drop({ target, draggable }) {\n const field = draggable.context.field;\n const index = this.dropTargets.toArray().indexOf(target);\n this.insert(field, index);\n }\n}\nGroupPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupPanelComponent, deps: [{ token: DragHintService }, { token: DropCueService }, { token: GroupInfoService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nGroupPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupPanelComponent, selector: \"kendo-grid-group-panel\", inputs: { text: \"text\", groups: \"groups\" }, outputs: { change: \"change\" }, host: { properties: { \"class.k-grouping-header\": \"this.groupHeaderClass\", \"class.k-grouping-header-flex\": \"this.groupHeaderClass\" } }, viewQueries: [{ propertyName: \"dropTargets\", predicate: DropTargetDirective, descendants: true }], ngImport: i0, template: `\n \n \n {{ text }}\n \n \n
\n \n
\n \n
 
\n `, isInline: true, components: [{ type: GroupIndicatorComponent, selector: \"[kendoGroupIndicator]\", inputs: [\"group\", \"groupTitle\"], outputs: [\"directionChange\", \"remove\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: DropTargetDirective, selector: \"[kendoDropTarget]\", inputs: [\"context\"], outputs: [\"enter\", \"leave\", \"drop\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: DraggableColumnDirective, selector: \"[kendoDraggableColumn]\", inputs: [\"context\", \"enableDrag\"], outputs: [\"drag\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupPanelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-grid-group-panel',\n template: `\n \n \n {{ text }}\n \n \n
\n \n
\n \n
 
\n `\n }]\n }], ctorParameters: function () { return [{ type: DragHintService }, { type: DropCueService }, { type: GroupInfoService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { change: [{\n type: Output\n }], groupHeaderClass: [{\n type: HostBinding,\n args: [\"class.k-grouping-header\"]\n }, {\n type: HostBinding,\n args: [\"class.k-grouping-header-flex\"]\n }], text: [{\n type: Input\n }], groups: [{\n type: Input\n }], dropTargets: [{\n type: ViewChildren,\n args: [DropTargetDirective]\n }] } });\n\n/**\n * @hidden\n */\nclass ColGroupComponent {\n constructor() {\n this.columns = [];\n this.groups = [];\n }\n get columnsToRender() {\n return columnsToRender(this.columns);\n }\n trackBy(index, _item) {\n return index;\n }\n}\nColGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColGroupComponent, selector: \"[kendoGridColGroup]\", inputs: { columns: \"columns\", groups: \"groups\", detailTemplate: \"detailTemplate\" }, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColGroupComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridColGroup]',\n template: `\n \n \n \n \n \n `\n }]\n }], propDecorators: { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n allowUnsort: true,\n mode: 'single',\n showIndexes: true,\n initialDirection: 'asc',\n multiSortKey: 'none'\n};\n/**\n * @hidden\n */\nconst normalize = (...settings) => Object.assign({}, DEFAULTS, ...settings);\n\n/**\n * @hidden\n */\nconst hasFilter = (settings, column) => settings.filter !== false && column.field && column.filterable;\n/**\n * @hidden\n */\nconst hasSort = (settings, column) => settings.sort !== false && column.field && column.sortable;\n/**\n * @hidden\n */\nconst hasLock = (settings, column) => settings.lock && column.lockable && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasStick = (settings, column) => settings.stick && column.stickable && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasPosition = (settings, column) => settings.setColumnPosition && (column.stickable || column.lockable) && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasColumnChooser = (settings) => settings.columnChooser !== false;\n/**\n * @hidden\n */\nconst hasItems = (settings, column) => hasColumnChooser(settings) || hasLock(settings, column) || hasSort(settings, column) || hasFilter(settings, column);\n\nconst localizeOperators$1 = operators => localization => Object.keys(operators).reduce((acc, key) => {\n acc[operators[key]] = localization.get(key);\n return acc;\n}, {});\nconst operatorTexts = localizeOperators$1({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterGteOperator\": \"gte\",\n \"filterGtOperator\": \"gt\",\n \"filterLteOperator\": \"lte\",\n \"filterLtOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\",\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterAfterOrEqualOperator\": \"after-eq\",\n \"filterAfterOperator\": \"after\",\n \"filterBeforeOrEqualOperator\": \"before-eq\",\n \"filterBeforeOperator\": \"before\"\n});\n/**\n * @hidden\n */\nconst toJSON = (xs) => xs.map(x => x.toJSON());\n/**\n * @hidden\n */\nclass FilterOperatorBase {\n constructor(operator, localization) {\n this.operator = operator;\n this.localization = localization;\n this.messages = operatorTexts(this.localization);\n this._text = this.messages[this.operator];\n this.localization.changes.subscribe(this.refreshText.bind(this));\n }\n /**\n * The text that will be displayed in the drop-down list.\n * @readonly\n * @type {string}\n * @memberOf FilterOperatorBase\n */\n get text() {\n return this._text;\n }\n set text(value) {\n this._text = isNullOrEmptyString(value) ? this.messages[this.operator] : value;\n }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: this.operator\n };\n }\n refreshText() {\n const update = this._text === this.messages[this.operator];\n this.messages = operatorTexts(this.localization);\n if (update) {\n this._text = this.messages[this.operator];\n }\n }\n}\nFilterOperatorBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterOperatorBase, deps: [{ token: 'filterOperator' }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterOperatorBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterOperatorBase, selector: \"kendo-grid-filter-operator-base\", inputs: { text: \"text\" }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterOperatorBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-operator-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: ['filterOperator']\n }] }, { type: i1.LocalizationService }]; }, propDecorators: { text: [{\n type: Input\n }] } });\n\nconst insertDefaultFilter = (index, rootFilter, filter) => {\n rootFilter = (rootFilter || { filters: [], logic: \"and\" });\n rootFilter.filters[index] = filter;\n return filter;\n};\n/**\n * @hidden\n */\nconst setFilter = (index, filter, field, defaultOperator) => {\n if (isPresent(filter) && isPresent(filter.filters) && filter.filters.length > index) {\n return filter.filters[index];\n }\n else {\n return insertDefaultFilter(index, filter, {\n field,\n operator: defaultOperator\n });\n }\n};\n/**\n * @hidden\n */\nconst logicOperators = (localization) => [\n { text: localization.get(\"filterAndLogic\"), value: \"and\" },\n { text: localization.get(\"filterOrLogic\"), value: \"or\" }\n];\n/**\n * @hidden\n */\nconst flatten = (filter) => {\n if (isPresent(filter.filters)) {\n return filter.filters.reduce((acc, curr) => acc.concat(isCompositeFilterDescriptor(curr) ? flatten(curr) : [curr]), []);\n }\n return [];\n};\nconst trimFilterByField = (filter, field) => {\n if (isPresent(filter) && isPresent(filter.filters)) {\n filter.filters = filter.filters.filter(x => {\n if (isCompositeFilterDescriptor(x)) {\n trimFilterByField(x, field);\n return x.filters.length;\n }\n else {\n return x.field !== field;\n }\n });\n }\n};\n/**\n * @hidden\n */\nconst filtersByField = (filter, field) => flatten(filter || {}).filter(x => x.field === field);\n/**\n * @hidden\n */\nconst filterByField = (filter, field) => {\n let [currentFilter] = filtersByField(filter, field);\n return currentFilter;\n};\n/**\n * @hidden\n */\nconst removeFilter = (filter, field) => {\n trimFilterByField(filter, field);\n return filter;\n};\n/**\n * @hidden\n */\nconst localizeOperators = operators => localization => Object.keys(operators).map(key => ({\n text: localization.get(key),\n value: operators[key]\n}));\n/**\n * An abstract base class for the filter-cell component ([see example]({% slug reusablecustomfilters_grid %}#toc-filter-row)).\n * @hidden\n */\nclass BaseFilterCellComponent {\n constructor(filterService) {\n this.filterService = filterService;\n this.operatorList = new QueryList();\n }\n get hostClasses() {\n return true;\n }\n get operators() {\n var _a;\n return ((_a = this._operators) === null || _a === void 0 ? void 0 : _a.length) ? this._operators : this.defaultOperators;\n }\n set operators(values) {\n this._operators = values;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n this.operationListSubscription = observe(this.operatorList)\n .pipe(map(q => q.toArray()), map(toJSON))\n .subscribe(x => {\n this.operators = x;\n });\n }\n ngOnDestroy() {\n if (this.operationListSubscription) {\n this.operationListSubscription.unsubscribe();\n }\n }\n filterByField(field) {\n return filterByField(this.filter, field);\n }\n filtersByField(field) {\n return filtersByField(this.filter, field);\n }\n removeFilter(field) {\n return removeFilter(this.filter, field);\n }\n updateFilter(filter) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n let [currentFilter] = flatten(root).filter(x => x.field === filter.field);\n if (!isPresent(currentFilter)) {\n root.filters.push(filter);\n }\n else {\n Object.assign(currentFilter, filter);\n }\n return root;\n }\n applyFilter(filter) {\n this.filterService.filter(filter);\n }\n}\nBaseFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseFilterCellComponent, deps: [{ token: FilterService }], target: i0.ɵɵFactoryTarget.Component });\nBaseFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseFilterCellComponent, selector: \"kendo-grid-base-filter-cell\", inputs: { operators: \"operators\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, queries: [{ propertyName: \"operatorList\", predicate: FilterOperatorBase }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-base-filter-cell',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], operatorList: [{\n type: ContentChildren,\n args: [FilterOperatorBase]\n }], operators: [{\n type: Input\n }] } });\n\nconst areDifferent = (a, b) => a.field !== b.field || a.operator !== b.operator || a.value !== b.value;\nconst isChanged = (a, b) => {\n if (a.length !== b.length) {\n return true;\n }\n for (let idx = 0, len = a.length; idx < len; idx++) {\n const prev = a[idx];\n const curr = b[idx];\n if (isCompositeFilterDescriptor(prev)) {\n if (diffFilters(prev, curr[idx])) {\n return true;\n }\n }\n else if (areDifferent(prev, curr)) {\n return true;\n }\n }\n return false;\n};\nconst copyObject = (obj) => {\n const result = {};\n Object.assign(result, obj);\n if (obj.constructor !== Object) {\n const proto = obj.constructor.prototype;\n Object.getOwnPropertyNames(proto).forEach((property) => {\n if (property !== 'constructor' && proto.hasOwnProperty(property)) {\n result[property] = obj[property];\n }\n });\n }\n return result;\n};\nconst cloneFilter = (filter) => copyObject(filter);\n/**\n * @hidden\n */\nconst cloneFilters = (filter) => {\n if (!filter) {\n return;\n }\n if (isCompositeFilterDescriptor(filter)) {\n return {\n filters: cloneFilters(filter.filters),\n logic: filter.logic\n };\n }\n else if (Array.isArray(filter)) {\n return filter.map(cloneFilters);\n }\n return cloneFilter(filter);\n};\n/**\n * @hidden\n */\nconst diffFilters = (a, b) => {\n if (isPresent(a) && !isPresent(b)) {\n return true;\n }\n if (!isPresent(a) && isPresent(b)) {\n return true;\n }\n return isPresent(a) && isPresent(b) && isChanged(a.filters, b.filters);\n};\n\n/**\n * @hidden\n */\nclass FilterHostDirective {\n constructor(host, resolver) {\n this.host = host;\n this.resolver = resolver;\n }\n ngOnInit() {\n this.component = this.host.createComponent(this.resolver.resolveComponentFactory(this.componentType()));\n this.initComponent({\n column: this.column,\n filter: this.filter\n });\n }\n ngOnDestroy() {\n if (this.component) {\n this.component.destroy();\n this.component = null;\n }\n }\n ngOnChanges(changes) {\n if (anyChanged([\"column\", \"filter\"], changes)) {\n this.initComponent({\n column: this.column,\n filter: this.filter\n });\n }\n }\n initComponent({ column, filter }) {\n const instance = this.component.instance;\n instance.column = column;\n instance.filter = filter;\n }\n}\nFilterHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });\nFilterHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterHostDirective, selector: \"[kendoGridFilterHostBase]\", inputs: { column: \"column\", filter: \"filter\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridFilterHostBase]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\nconst stringOperators$1 = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\"\n});\n/**\n * Represents a base string filter component.\n */\nclass StringFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * The default filter operator. Defaults to `contains`.\n * @type {string}\n */\n this.operator = \"contains\";\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField((this.column || {}).field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = stringOperators$1(this.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n}\nStringFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStringFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterComponent, selector: \"kendo-grid-string-filter-base\", inputs: { column: \"column\", filter: \"filter\", operator: \"operator\" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FilterInputDirective {\n constructor(valueAccessors, ngZone, element, renderer) {\n this.element = element;\n this.renderer = renderer;\n this.change = new EventEmitter();\n this.composing = false;\n this.filterDelay = 500;\n this.changeRequests = new Subject();\n this.accessor = valueAccessors[0];\n ngZone.runOutsideAngular(() => {\n const unsubscribeStart = renderer.listen(element.nativeElement, 'compositionstart', () => this.composing = true);\n const unsubscribeEnd = renderer.listen(element.nativeElement, 'compositionend', () => this.composing = false);\n this.unsubscribeEvents = () => {\n unsubscribeStart();\n unsubscribeEnd();\n };\n });\n }\n set value(value) {\n this.accessor.writeValue(value);\n }\n set disabled(value) {\n this.accessor.setDisabledState(value);\n }\n ngAfterViewInit() {\n this.addAriaAttributes();\n this.accessor.registerOnChange(x => this.filterDelay > 0 ?\n this.changeRequests.next(x) :\n this.change.emit(x));\n this.subscribeChanges();\n }\n ngOnChanges(changes) {\n if (isChanged$1('filterDelay', changes)) {\n this.unsubscribeChanges();\n this.subscribeChanges();\n }\n }\n ngOnDestroy() {\n this.unsubscribeChanges();\n this.unsubscribeEvents();\n }\n subscribeChanges() {\n this.changeRequestsSubscription = this.changeRequests\n .pipe(debounceTime(this.filterDelay), filter(() => !this.composing))\n .subscribe(x => this.change.emit(x));\n }\n unsubscribeChanges() {\n if (this.changeRequestsSubscription) {\n this.changeRequestsSubscription.unsubscribe();\n }\n }\n addAriaAttributes() {\n const ariaValue = this.columnLabel;\n if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {\n const focusableElement = this.element.nativeElement.querySelector(`#${this.kendoInput.focusableId}`) ||\n this.element.nativeElement;\n this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);\n }\n else {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-label', ariaValue);\n }\n }\n}\nFilterInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, deps: [{ token: NG_VALUE_ACCESSOR, self: true }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nFilterInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: { filterDelay: \"filterDelay\", columnLabel: \"columnLabel\", value: \"value\" }, queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFilterInput]'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }], filterDelay: [{\n type: Input\n }], columnLabel: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\nconst EMPTY_VALUE_OPERATORS = new Set(['isnull', 'isnotnull', 'isempty', 'isnotempty']);\nconst isEmptyValueOperator = (operator) => EMPTY_VALUE_OPERATORS.has(operator);\n/**\n * @hidden\n */\nclass FilterInputWrapperComponent extends BaseFilterCellComponent {\n constructor(filterService) {\n super(filterService);\n }\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n get currentOperator() {\n const filter = this.currentFilter;\n if (!this._operator) {\n this._operator = filter ? filter.operator : this.defaultOperator;\n }\n return this._operator;\n }\n set currentOperator(value) {\n this._operator = value;\n const emptyValueOperator = isEmptyValueOperator(value);\n this.filterInputDisabled = emptyValueOperator;\n if (emptyValueOperator) {\n this.applyNoValueFilter(value);\n }\n else if (!isBlank(value) && isPresent(this.currentFilter)) {\n this.onChange(this.currentFilter.value);\n }\n }\n get defaultOperator() {\n if (!isNullOrEmptyString(this._defaultOperator)) {\n return this._defaultOperator;\n }\n else if (this.operators && this.operators.length) {\n return this.operators[0].value;\n }\n return \"eq\";\n }\n set defaultOperator(value) {\n this._defaultOperator = value;\n }\n set filterInputDisabled(disabled) {\n if (!this.input) {\n return;\n }\n this.input.disabled = disabled;\n }\n ngAfterContentInit() {\n if (isPresent(this.input)) {\n this.changeSubscription = this.input.change.subscribe(this.onChange.bind(this));\n this.filterInputDisabled = isEmptyValueOperator(this.currentOperator);\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.changeSubscription) {\n this.changeSubscription.unsubscribe();\n }\n }\n onChange(value) {\n if (!isNullOrEmptyString(value) || this.filterByField(this.column.field)) {\n this.filterChange(isNullOrEmptyString(value) ?\n this.removeFilter(this.column.field) :\n this.updateFilter({\n field: this.column.field,\n operator: this.currentOperator,\n value: value\n }));\n }\n }\n onClear() {\n this.onChange(null);\n this.filterInputDisabled = isEmptyValueOperator(this.defaultOperator);\n }\n applyNoValueFilter(operator) {\n this.filterChange(this.updateFilter({\n field: this.column.field,\n operator: operator,\n value: null\n }));\n }\n ngOnChanges(changes) {\n if (isChanged$1(\"filter\", changes, false)) {\n this._operator = null;\n this.filterInputDisabled = isEmptyValueOperator(this.currentOperator);\n }\n }\n}\nFilterInputWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputWrapperComponent, deps: [{ token: FilterService }], target: i0.ɵɵFactoryTarget.Component });\nFilterInputWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterInputWrapperComponent, selector: \"kendo-grid-filter-input-wrapper-base\", inputs: { column: \"column\", filter: \"filter\", defaultOperator: \"defaultOperator\" }, queries: [{ propertyName: \"input\", first: true, predicate: FilterInputDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputWrapperComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-input-wrapper-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], input: [{\n type: ContentChild,\n args: [FilterInputDirective, { static: false }]\n }], defaultOperator: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FilterMenuDropDownListDirective {\n constructor(host) {\n this.host = host;\n this.keydownHandler = (e) => {\n if (e.keyCode === Keys.Escape && this.host.isOpen) {\n e.stopPropagation();\n this.host.toggle(false);\n }\n };\n }\n ngAfterViewInit() {\n const wrapperElement = this.host.wrapper.nativeElement;\n wrapperElement.setAttribute('aria-label', this.filterMenuDropDownLabel);\n wrapperElement.addEventListener('keydown', this.keydownHandler, true);\n }\n ngOnDestroy() {\n this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);\n }\n}\nFilterMenuDropDownListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuDropDownListDirective, deps: [{ token: i1$4.DropDownListComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilterMenuDropDownListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: { filterMenuDropDownLabel: \"filterMenuDropDownLabel\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuDropDownListDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoFilterMenuDropDown]' }]\n }], ctorParameters: function () { return [{ type: i1$4.DropDownListComponent }]; }, propDecorators: { filterMenuDropDownLabel: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FilterMenuInputWrapperComponent extends FilterInputWrapperComponent {\n constructor(localizationService) {\n super(null);\n this.localizationService = localizationService;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n ngAfterViewInit() {\n if (this.isFirstDropDown && this.filterService && this.filterService.menuTabbingService) {\n this.filterService.menuTabbingService.firstFocusable = this.firstOperatorDropDown;\n this.firstOperatorDropDown.focus();\n }\n }\n operatorChange(dataItem) {\n this.currentOperator = dataItem;\n }\n filterChange(filter) {\n this.applyFilter(filter);\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this._currentFilter;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n set currentFilter(value) {\n this._currentFilter = value;\n }\n updateFilter(filter) {\n Object.assign(this.currentFilter, filter);\n return this.filter;\n }\n onChange(value) {\n this.filterChange(this.updateFilter({\n field: this.column.field,\n operator: this.currentOperator,\n value: value\n }));\n }\n onShiftTab(e) {\n e.stopImmediatePropagation();\n if ((!this.menuTabbingService || !this.menuTabbingService.isColumnMenu) && this.isFirstDropDown && this.filterService.menuTabbingService.lastFocusable) {\n e.preventDefault();\n this.filterService.menuTabbingService.lastFocusable.focus();\n }\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localizationService.get('filterMenuOperatorsDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nFilterMenuInputWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuInputWrapperComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterMenuInputWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: { filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\", currentFilter: \"currentFilter\" }, viewQueries: [{ propertyName: \"firstOperatorDropDown\", first: true, predicate: DropDownListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuInputWrapperComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-menu-input-wrapper',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { filterService: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], firstOperatorDropDown: [{\n type: ViewChild,\n args: [DropDownListComponent, { static: false }]\n }], currentFilter: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass StringFilterMenuInputComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.operators = [];\n }\n get columnLabel() {\n const localizationMsg = this.localizationService.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nStringFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuInputComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStringFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterMenuInputComponent, selector: \"kendo-grid-string-filter-menu-input\", inputs: { operators: \"operators\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\" }, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: [\"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"currentFilter\"] }], directives: [{ type: i4$1.TextBoxDirective, selector: \"input[kendoTextBox]\", inputs: [\"value\"] }, { type: i4$2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: i4$2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4$2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-menu-input',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { operators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], currentFilter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n/**\n * Represents a string-filter menu component.\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-configuration-components-for-filter-templates)).\n */\nclass StringFilterMenuComponent extends StringFilterComponent {\n constructor(localization) {\n super(null, localization);\n this.logicOperators = logicOperators(this.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n /**\n * Determines if the inputs of second criteria will displayed.\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.localization);\n super.localizationChange();\n }\n}\nStringFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStringFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterMenuComponent, selector: \"kendo-grid-string-filter-menu\", inputs: { column: \"column\", filter: \"filter\", extra: \"extra\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: StringFilterMenuInputComponent, selector: \"kendo-grid-string-filter-menu-input\", inputs: [\"operators\", \"column\", \"filter\", \"operator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\nconst numericOperators = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterGteOperator\": \"gte\",\n \"filterGtOperator\": \"gt\",\n \"filterLteOperator\": \"lte\",\n \"filterLtOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\"\n});\n/**\n * Represents a base numeric filter component.\n */\nclass NumericFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * The default filter operator. Defaults to `eq`.\n * @type {string}\n */\n this.operator = \"eq\";\n /**\n * Specifies the value that is used to increment or decrement the component value.\n * @type {numeric}\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * @type {boolean}\n */\n this.spinners = true;\n this.defaultOperators = numericOperators(this.localization);\n }\n /**\n * Specifies the number format used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n */\n set format(value) {\n this._format = value;\n }\n /**\n * @readonly\n * @type {string}\n */\n get format() {\n return !isNullOrEmptyString(this._format) ? this._format : this.columnFormat;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n get columnFormat() {\n return this.column && !isNullOrEmptyString(this.column.format) ?\n extractFormat(this.column.format) : \"n2\";\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = numericOperators(this.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n}\nNumericFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterComponent, selector: \"kendo-grid-numeric-filter-component-base\", inputs: { column: \"column\", filter: \"filter\", operator: \"operator\", step: \"step\", min: \"min\", max: \"max\", spinners: \"spinners\", decimals: \"decimals\", format: \"format\" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-component-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], step: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], spinners: [{\n type: Input\n }], decimals: [{\n type: Input\n }], format: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass NumericFilterMenuInputComponent {\n constructor(localization) {\n this.localization = localization;\n this.operators = [];\n /**\n * Specifies the value which is used to increment or decrement the component value.\n * @type {numeric}\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * @type {boolean}\n */\n this.spinners = true;\n }\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nNumericFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuInputComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterMenuInputComponent, selector: \"kendo-grid-numeric-filter-menu-input\", inputs: { operators: \"operators\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", isFirstDropDown: \"isFirstDropDown\", menuTabbingService: \"menuTabbingService\", step: \"step\", min: \"min\", max: \"max\", spinners: \"spinners\", decimals: \"decimals\", format: \"format\" }, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: [\"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"currentFilter\"] }, { type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }, { type: i4$1.NumericTextBoxCustomMessagesComponent, selector: \"kendo-numerictextbox-messages\" }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-menu-input',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { operators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], currentFilter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], step: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], spinners: [{\n type: Input\n }], decimals: [{\n type: Input\n }], format: [{\n type: Input\n }] } });\n\n/**\n * Represents a numeric-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass NumericFilterMenuComponent extends NumericFilterComponent {\n constructor(localization) {\n super(null, localization);\n this.logicOperators = logicOperators(this.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n /**\n * Determines if the inputs of second criteria will displayed.\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.localization);\n super.localizationChange();\n }\n}\nNumericFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterMenuComponent, selector: \"kendo-grid-numeric-filter-menu\", inputs: { column: \"column\", filter: \"filter\", extra: \"extra\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: NumericFilterMenuInputComponent, selector: \"kendo-grid-numeric-filter-menu-input\", inputs: [\"operators\", \"column\", \"filter\", \"operator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"step\", \"min\", \"max\", \"spinners\", \"decimals\", \"format\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\nconst dateOperators = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterAfterOrEqualOperator\": \"gte\",\n \"filterAfterOperator\": \"gt\",\n \"filterBeforeOrEqualOperator\": \"lte\",\n \"filterBeforeOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\"\n});\n/**\n * @hidden\n */\nclass DateFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * The default filter operator. Defaults to `contains`.\n * @type {string}\n */\n this.operator = \"gte\";\n /**\n * Defines the active view that the calendar initially renders.\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = \"month\";\n /**\n * Defines the bottommost calendar view, to which the user can navigate.\n */\n this.bottomView = \"month\";\n /**\n * Defines the topmost calendar view, to which the user can navigate.\n */\n this.topView = \"century\";\n /**\n * Determines whether to display a week number column in the `month` view of the Calendar.\n */\n this.weekNumber = false;\n this.defaultOperators = dateOperators(this.localization);\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * Specifies the date format that is used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n */\n set format(value) {\n this._format = value;\n }\n /**\n * Specifies the date format that is used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n *\n * @readonly\n * @type {string}\n */\n get format() {\n return !isNullOrEmptyString(this._format) ? this._format : this.columnFormat;\n }\n get columnFormat() {\n return this.column && !isNullOrEmptyString(this.column.format) ?\n extractFormat(this.column.format) : \"d\";\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = dateOperators(this.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n}\nDateFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterComponent, selector: \"kendo-grid-date-filter-base\", inputs: { column: \"column\", filter: \"filter\", operator: \"operator\", format: \"format\", min: \"min\", max: \"max\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", weekNumber: \"weekNumber\" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], format: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DateFilterMenuInputComponent {\n constructor(popupService, localizationService) {\n this.popupService = popupService;\n this.localizationService = localizationService;\n this.operators = [];\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n open(picker) {\n this.subscription = this.popupService.onClose\n .pipe(filter(() => picker.isActive))\n .subscribe(e => e.preventDefault());\n }\n messageFor(key) {\n return this.localizationService.get(key);\n }\n get columnLabel() {\n const localizationMsg = this.localizationService.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nDateFilterMenuInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuInputComponent, deps: [{ token: SinglePopupService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterMenuInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterMenuInputComponent, selector: \"kendo-grid-date-filter-menu-input\", inputs: { operators: \"operators\", column: \"column\", filter: \"filter\", operator: \"operator\", currentFilter: \"currentFilter\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", min: \"min\", max: \"max\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", weekNumber: \"weekNumber\", isFirstDropDown: \"isFirstDropDown\" }, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterMenuInputWrapperComponent, selector: \"kendo-grid-filter-menu-input-wrapper\", inputs: [\"filterService\", \"isFirstDropDown\", \"menuTabbingService\", \"currentFilter\"] }, { type: i4$3.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: \"kendo-datepicker-messages\" }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-menu-input',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: i1.LocalizationService }]; }, propDecorators: { operators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], operator: [{\n type: Input\n }], currentFilter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], isFirstDropDown: [{\n type: Input\n }] } });\n\n/**\n * Represents a date-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass DateFilterMenuComponent extends DateFilterComponent {\n constructor(localization) {\n super(null, localization);\n this.logicOperators = logicOperators(this.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n /**\n * Determines if the inputs of second criteria will be displayed.\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.localization);\n super.localizationChange();\n }\n}\nDateFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterMenuComponent, selector: \"kendo-grid-date-filter-menu\", inputs: { column: \"column\", filter: \"filter\", extra: \"extra\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateFilterMenuInputComponent, selector: \"kendo-grid-date-filter-menu-input\", inputs: [\"operators\", \"column\", \"filter\", \"operator\", \"currentFilter\", \"filterService\", \"menuTabbingService\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"activeView\", \"bottomView\", \"topView\", \"weekNumber\", \"isFirstDropDown\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FilterMenuDropDownListDirective, selector: \"[kendoFilterMenuDropDown]\", inputs: [\"filterMenuDropDownLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-menu',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], extra: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\n/**\n * @hidden\n */\nclass BooleanFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, localization) {\n super(filterService);\n this.localization = localization;\n /**\n * @hidden\n */\n this.operator = \"eq\";\n /**\n * @hidden\n */\n this.items = [\n { text: this.localization.get(\"filterIsTrue\"), value: true },\n { text: this.localization.get(\"filterIsFalse\"), value: false }\n ];\n /**\n * @hidden\n */\n this.defaultItem = { text: this.localization.get(\"filterBooleanAll\"), value: null };\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return true;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.items = [\n { text: this.localization.get(\"filterIsTrue\"), value: true },\n { text: this.localization.get(\"filterIsFalse\"), value: false }\n ];\n this.defaultItem = { text: this.localization.get(\"filterBooleanAll\"), value: null };\n }\n}\nBooleanFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBooleanFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterComponent, selector: \"kendo-grid-boolean-filter-base\", inputs: { column: \"column\", filter: \"filter\" }, host: { properties: { \"class.k-filtercell-boolean\": \"this.hostClasses\" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-boolean']\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass BooleanFilterRadioButtonDirective {\n constructor(hostElement, renderer) {\n this.hostElement = hostElement;\n this.renderer = renderer;\n }\n ngAfterViewInit() {\n this.radioButtonEl = this.hostElement.nativeElement;\n this.renderer.setAttribute(this.hostElement.nativeElement, 'aria-label', this.columnLabel);\n }\n}\nBooleanFilterRadioButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterRadioButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nBooleanFilterRadioButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterRadioButtonDirective, selector: \"[kendoFilterMenuRadioButton]\", inputs: { columnLabel: \"columnLabel\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterRadioButtonDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoFilterMenuRadioButton]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { columnLabel: [{\n type: Input\n }] } });\n\n/**\n * Represents a Boolean-filter menu component.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass BooleanFilterMenuComponent extends BooleanFilterComponent {\n constructor(localization) {\n super(null, localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = { filters: [], logic: \"and\" };\n this.idPrefix = guid();\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n ngAfterViewInit() {\n this.filterService.menuTabbingService.firstFocusable = this.radioButtons.first.radioButtonEl;\n this.radioButtons.first.radioButtonEl.focus();\n }\n /**\n * @hidden\n */\n radioId(value) {\n return `${this.idPrefix}_${value}`;\n }\n /**\n * @hidden\n */\n onChange(value, input) {\n this.applyFilter(this.updateFilter({\n field: this.column.field,\n operator: \"eq\",\n value: value\n }));\n this.filterService.menuTabbingService.firstFocusable = input;\n }\n /**\n * @hidden\n */\n isSelected(radioValue) {\n return this.filtersByField(this.column.field).some(({ value }) => value === radioValue);\n }\n /**\n * @hidden\n */\n onShiftTab(e) {\n if ((!this.menuTabbingService || !this.menuTabbingService.isColumnMenu) && this.filterService.menuTabbingService.lastFocusable) {\n e.preventDefault();\n this.filterService.menuTabbingService.lastFocusable.focus();\n }\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nBooleanFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterMenuComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBooleanFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterMenuComponent, selector: \"kendo-grid-boolean-filter-menu\", inputs: { filter: \"filter\", filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, host: { properties: { \"class.k-filtercell\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"radioButtons\", predicate: BooleanFilterRadioButtonDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n
    \n
  • \n \n \n
  • \n
\n `, isInline: true, directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4$1.RadioButtonDirective, selector: \"input[kendoRadioButton]\", inputs: [\"size\"] }, { type: BooleanFilterRadioButtonDirective, selector: \"[kendoFilterMenuRadioButton]\", inputs: [\"columnLabel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-menu',\n template: `\n
    \n
  • \n \n \n
  • \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], filter: [{\n type: Input\n }], filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], radioButtons: [{\n type: ViewChildren,\n args: [BooleanFilterRadioButtonDirective]\n }] } });\n\n/**\n * @hidden\n *\n * > List the following components as `entryComponents` in the GridModule.\n */\nconst filterMenuComponentFactory = (type) => ({\n \"boolean\": BooleanFilterMenuComponent,\n \"date\": DateFilterMenuComponent,\n \"numeric\": NumericFilterMenuComponent,\n \"text\": StringFilterMenuComponent\n}[type]);\n\n/**\n * @hidden\n */\nclass FilterMenuHostDirective extends FilterHostDirective {\n constructor(host, resolver) {\n super(host, resolver);\n }\n componentType() {\n if (isPresent(this.column) && !isNullOrEmptyString(this.column.filter)) {\n return filterMenuComponentFactory(this.column.filter);\n }\n return StringFilterMenuComponent;\n }\n initComponent(ctx) {\n super.initComponent(ctx);\n this.component.instance.filterService = this.filterService;\n this.component.instance.menuTabbingService = this.menuTabbingService;\n }\n}\nFilterMenuHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });\nFilterMenuHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuHostDirective, selector: \"[kendoFilterMenuHost]\", inputs: { filterService: \"filterService\", menuTabbingService: \"menuTabbingService\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFilterMenuHost]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { filterService: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }] } });\n\nconst isNoValueOperator = operator => (operator === \"isnull\"\n || operator === \"isnotnull\"\n || operator === \"isempty\"\n || operator === \"isnotempty\");\nconst validFilters = ({ value, operator }) => !isNullOrEmptyString(value) || isNoValueOperator(operator);\nconst trimFilters = filter => {\n filter.filters = filter.filters.filter(validFilters);\n return filter;\n};\nconst findParent = (filters, field, parent) => {\n return filters.reduce((acc, filter) => {\n if (acc) {\n return acc;\n }\n if (filter.filters) {\n return findParent(filter.filters, field, filter);\n }\n else if (filter.field === field) {\n return parent;\n }\n return acc;\n }, undefined);\n};\nconst parentLogicOfDefault = (filter, field, def = \"and\") => {\n const parent = findParent(((filter || {}).filters || []), field);\n return isPresent(parent) ? parent.logic : def;\n};\n/**\n * @hidden\n */\nclass FilterMenuContainerComponent {\n constructor(parentService, childService, localization, cd, menuTabbingService) {\n this.parentService = parentService;\n this.childService = childService;\n this.localization = localization;\n this.cd = cd;\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.actionsClass = 'k-action-buttons k-button-group';\n this._templateContext = {};\n this.menuTabbingService = menuTabbingService;\n }\n get filter() {\n return this._filter;\n }\n /**\n * The current root filter.\n * @type {CompositeFilterDescriptor}\n */\n set filter(value) {\n this._filter = cloneFilters(value);\n }\n get childFilter() {\n if (!isPresent(this._childFilter)) {\n this._childFilter = {\n filters: filtersByField(this.filter, (this.column || {}).field),\n logic: parentLogicOfDefault(this.filter, (this.column || {}).field)\n };\n }\n return this._childFilter;\n }\n ngOnInit() {\n this.subscription = this.childService.changes.subscribe(filter => this._childFilter = filter);\n this.subscription.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngAfterViewChecked() {\n if (!this.menuTabbingService.isColumnMenu || (this.isLast && this.isExpanded)) {\n this.menuTabbingService.lastFocusable = this.disabled ?\n this.resetButton.nativeElement : this.filterButton.nativeElement;\n }\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.menuTabbingService.lastFocusable = undefined;\n }\n get disabled() {\n return !this.childFilter.filters.some(validFilters);\n }\n get templateContext() {\n this._templateContext.column = this.column;\n this._templateContext.filter = this.childFilter;\n this._templateContext.filterService = this.childService;\n this._templateContext[\"$implicit\"] = this.childFilter;\n return this._templateContext;\n }\n get hasTemplate() {\n return isPresent(this.column) && isPresent(this.column.filterMenuTemplateRef);\n }\n submit() {\n const filter = trimFilters(this.childFilter);\n if (filter.filters.length) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n removeFilter(root, this.column.field);\n root.filters.push(filter);\n this.parentService.filter(root);\n }\n this.close.emit();\n return false;\n }\n reset() {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n removeFilter(root, this.column.field);\n this.parentService.filter(root);\n this.close.emit();\n }\n onTab(e, buttonType) {\n if (this.menuTabbingService.firstFocusable && (!this.menuTabbingService.isColumnMenu || this.isLast)) {\n e.preventDefault();\n if (buttonType === 'reset') {\n // eslint-disable-next-line no-unused-expressions\n this.disabled ? this.menuTabbingService.firstFocusable.focus() : this.filterButton.nativeElement.focus();\n }\n else {\n this.menuTabbingService.firstFocusable.focus();\n }\n }\n }\n get clearText() {\n return this.localization.get(\"filterClearButton\");\n }\n get filterText() {\n return this.localization.get(\"filterFilterButton\");\n }\n}\nFilterMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuContainerComponent, deps: [{ token: FilterService, skipSelf: true }, { token: FilterService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: MenuTabbingService }], target: i0.ɵɵFactoryTarget.Component });\nFilterMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuContainerComponent, selector: \"kendo-grid-filter-menu-container\", inputs: { column: \"column\", isLast: \"isLast\", isExpanded: \"isExpanded\", menuTabbingService: \"menuTabbingService\", filter: \"filter\", actionsClass: \"actionsClass\" }, outputs: { close: \"close\" }, providers: [\n FilterService,\n MenuTabbingService\n ], viewQueries: [{ propertyName: \"resetButton\", first: true, predicate: [\"resetButton\"], descendants: true }, { propertyName: \"filterButton\", first: true, predicate: [\"filterButton\"], descendants: true }], ngImport: i0, template: `\n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n {{clearText}}\n \n
\n
\n
\n `, isInline: true, directives: [{ type: i4$2.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { type: i4$2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { type: i4$2.NgForm, selector: \"form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]\", inputs: [\"ngFormOptions\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: FilterMenuHostDirective, selector: \"[kendoFilterMenuHost]\", inputs: [\"filterService\", \"menuTabbingService\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuContainerComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n FilterService,\n MenuTabbingService\n ],\n selector: 'kendo-grid-filter-menu-container',\n template: `\n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n {{clearText}}\n \n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService, decorators: [{\n type: SkipSelf\n }] }, { type: FilterService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: MenuTabbingService }]; }, propDecorators: { close: [{\n type: Output\n }], column: [{\n type: Input\n }], isLast: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], menuTabbingService: [{\n type: Input\n }], filter: [{\n type: Input\n }], actionsClass: [{\n type: Input\n }], resetButton: [{\n type: ViewChild,\n args: ['resetButton', { static: false }]\n }], filterButton: [{\n type: ViewChild,\n args: ['filterButton', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass FilterMenuComponent {\n constructor(filterService, popupService, localization, navigationService) {\n this.filterService = filterService;\n this.popupService = popupService;\n this.localization = localization;\n this.navigationService = navigationService;\n this.tabIndex = '-1';\n }\n get hasFilters() {\n return filtersByField(this.filter, (this.column || {}).field).length > 0;\n }\n /**\n * @hidden\n */\n get filterLabel() {\n const localizationMsg = this.localization.get('filterMenuTitle') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n toggle(anchor, template) {\n this.popupRef = this.popupService.open(anchor, template, this.popupRef);\n if (!this.popupRef) {\n if (this.navigationService.enabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n return false;\n }\n close() {\n this.popupService.destroy();\n if (this.navigationService.enabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n}\nFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuComponent, deps: [{ token: FilterService }, { token: SinglePopupService }, { token: i1.LocalizationService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterMenuComponent, selector: \"kendo-grid-filter-menu\", inputs: { column: \"column\", filter: \"filter\", tabIndex: \"tabIndex\" }, viewQueries: [{ propertyName: \"anchor\", first: true, predicate: [\"anchor\"], descendants: true, static: true }, { propertyName: \"template\", first: true, predicate: [\"template\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `\n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterMenuContainerComponent, selector: \"kendo-grid-filter-menu-container\", inputs: [\"column\", \"isLast\", \"isExpanded\", \"menuTabbingService\", \"filter\", \"actionsClass\"], outputs: [\"close\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-menu',\n template: `\n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: SinglePopupService }, { type: i1.LocalizationService }, { type: NavigationService }]; }, propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }], anchor: [{\n type: ViewChild,\n args: ['anchor', { static: true }]\n }], template: [{\n type: ViewChild,\n args: ['template', { static: true, read: TemplateRef }]\n }], tabIndex: [{\n type: Input\n }] } });\n\n/**\n * Represents the service that is passed to the\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuService {\n /**\n * @hidden\n */\n constructor(menuTabbingService) {\n /**\n * @hidden\n */\n this.closeMenu = new EventEmitter();\n this.menuTabbingService = menuTabbingService;\n }\n /**\n * Closes the column menu.\n */\n close() {\n this.closeMenu.emit();\n }\n}\nColumnMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuService, deps: [{ token: MenuTabbingService }], target: i0.ɵɵFactoryTarget.Injectable });\nColumnMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: MenuTabbingService }]; } });\n\n/**\n * @hidden\n */\nclass ColumnMenuItemBase {\n constructor() {\n this.hostClass = true;\n }\n ngOnInit() {\n if (isDevMode() && !this.service) {\n throw new Error('The service input of the predefined column menu components is mandatory.');\n }\n }\n /**\n * @hidden\n */\n close() {\n this.service.close();\n }\n}\nColumnMenuItemBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemBase, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuItemBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemBase, selector: \"kendo-grid-column-menu-item-base\", inputs: { service: \"service\" }, host: { properties: { \"class.k-columnmenu-item-wrapper\": \"this.hostClass\" } }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-column-menu-item-base',\n template: ``\n }]\n }], propDecorators: { service: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-columnmenu-item-wrapper']\n }] } });\n\n/**\n * Represents the content template of the\n * [kendo-grid-columnmenu-item]({% slug api_grid_columnmenuitemcomponent %}) component.\n * Provides an option for specifying the content of a column item.\n * To define the content template, nest an `` tag with the\n * `kendoGridColumnMenuItemContentTemplate` directive inside a ``.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * Item Content\n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuItemContentTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnMenuItemContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nColumnMenuItemContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemContentTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnMenuItemContentTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents an item that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuItemComponent {\n constructor() {\n /**\n * Fires when the item is clicked.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n this.contentState = 'collapsed';\n }\n get iconClass() {\n return `k-i-${this.icon}`;\n }\n ngOnChanges(changes) {\n if (changes.expanded) {\n this.updateContentState();\n }\n }\n /**\n * @hidden\n */\n onClick(e) {\n this.itemClick.emit(e);\n if (this.contentTemplate) {\n this.expanded = !this.expanded;\n this.updateContentState();\n if (this.expanded) {\n this.expand.emit();\n }\n else {\n this.collapse.emit();\n }\n }\n }\n updateContentState() {\n this.contentState = this.expanded ? 'expanded' : 'collapsed';\n }\n}\nColumnMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: { icon: \"icon\", text: \"text\", selected: \"selected\", disabled: \"disabled\", expanded: \"expanded\" }, outputs: { itemClick: \"itemClick\", expand: \"expand\", collapse: \"collapse\" }, queries: [{ propertyName: \"contentTemplate\", first: true, predicate: ColumnMenuItemContentTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{ text }}\n \n
\n \n \n
\n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n trigger('state', [\n state('collapsed', style({ display: 'none' })),\n state('expanded', style({ display: 'block' })),\n transition('collapsed => expanded', [\n style({\n height: '0px',\n display: 'block'\n }),\n animate('100ms ease-in', style({\n height: '*'\n }))\n ]),\n transition('expanded => collapsed', [\n style({\n height: '*'\n }),\n animate('100ms ease-in', style({\n height: '0px'\n }))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('state', [\n state('collapsed', style({ display: 'none' })),\n state('expanded', style({ display: 'block' })),\n transition('collapsed => expanded', [\n style({\n height: '0px',\n display: 'block'\n }),\n animate('100ms ease-in', style({\n height: '*'\n }))\n ]),\n transition('expanded => collapsed', [\n style({\n height: '*'\n }),\n animate('100ms ease-in', style({\n height: '0px'\n }))\n ])\n ])\n ],\n selector: 'kendo-grid-columnmenu-item',\n template: `\n \n \n \n {{ text }}\n
\n
\n \n \n
\n `\n }]\n }], propDecorators: { itemClick: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], icon: [{\n type: Input\n }], text: [{\n type: Input\n }], selected: [{\n type: Input\n }], disabled: [{\n type: Input\n }], expanded: [{\n type: Input\n }], contentTemplate: [{\n type: ContentChild,\n args: [ColumnMenuItemContentTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents a column-menu item that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * Allows the user to lock or unlock the columns.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-lock` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuLockComponent extends ColumnMenuItemBase {\n constructor(localization, columnInfoService, changeDetector) {\n super();\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n }\n get text() {\n return this.localization.get(this.locked ? 'unlock' : 'lock');\n }\n get icon() {\n return this.locked ? 'unlock' : 'lock';\n }\n get disabled() {\n return !this.locked && this.columnInfoService.unlockedRootCount < 2;\n }\n /**\n * @hidden\n */\n toggleColumn() {\n this.toggleHierarchy(!this.locked);\n this.close();\n this.changeDetector.markForCheck();\n }\n toggleHierarchy(locked) {\n let root = this.service.column;\n while (root.parent) {\n root = root.parent;\n }\n const columns = [root];\n const allChanged = [];\n while (columns.length) {\n const column = columns.shift();\n column.locked = locked;\n allChanged.push(column);\n if (column.hasChildren) {\n columns.push(...column.childrenArray);\n }\n }\n this.columnInfoService.changeLocked(allChanged);\n }\n get locked() {\n return this.service.column.locked;\n }\n}\nColumnMenuLockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuLockComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuLockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuLockComponent, selector: \"kendo-grid-columnmenu-lock\", usesInheritance: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuLockComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-lock',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Represents a column-menu item that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * Allows the user to stick or unstick the columns.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-stick` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuStickComponent extends ColumnMenuItemBase {\n constructor(localization, columnInfoService, changeDetector) {\n super();\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n }\n get text() {\n return this.localization.get(this.sticky ? 'unstick' : 'stick');\n }\n get icon() {\n return this.sticky ? 'unstick' : 'stick';\n }\n get disabled() {\n return !this.sticky && this.columnInfoService.unlockedRootCount < 2;\n }\n /**\n * @hidden\n */\n toggleColumn() {\n this.toggleHierarchy(!this.sticky);\n this.close();\n this.changeDetector.markForCheck();\n }\n toggleHierarchy(sticky) {\n let root = this.service.column;\n while (root.parent) {\n root = root.parent;\n }\n const columns = [root];\n const allChanged = [];\n while (columns.length) {\n const column = columns.shift();\n column.sticky = sticky;\n allChanged.push(column);\n if (column.hasChildren) {\n columns.push(...column.childrenArray);\n }\n }\n this.columnInfoService.changeStuck(allChanged);\n }\n get sticky() {\n return this.service.column.sticky;\n }\n}\nColumnMenuStickComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuStickComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuStickComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuStickComponent, selector: \"kendo-grid-columnmenu-stick\", usesInheritance: true, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuStickComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-stick',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Represents the component for editing column filters in the Grid that can be placed\n * inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-filter` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuPositionComponent extends ColumnMenuItemBase {\n constructor(localization, hostElement) {\n super();\n this.localization = localization;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-columnmenu-actions';\n this._isLast = false;\n }\n /**\n * @hidden\n */\n set isLast(value) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n this._isLast = value;\n }\n /**\n * @hidden\n */\n get isLast() {\n return this._isLast;\n }\n /**\n * @hidden\n */\n onTab(e, isLastItem) {\n if (this.isLast && isLastItem) {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.service) {\n this.service.menuTabbingService.firstFocusable.focus();\n }\n }\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n }\n this.expand.emit();\n }\n getLastFocusableItem() {\n const menuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');\n const lastFocusableIndex = this.expanded ? menuItems.length - 1 : 0;\n return menuItems[lastFocusableIndex];\n }\n}\nColumnMenuPositionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuPositionComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuPositionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuPositionComponent, selector: \"kendo-grid-columnmenu-position\", inputs: { expanded: \"expanded\", showLock: \"showLock\", showStick: \"showStick\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }, { type: ColumnMenuLockComponent, selector: \"kendo-grid-columnmenu-lock\" }, { type: ColumnMenuStickComponent, selector: \"kendo-grid-columnmenu-stick\" }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\" }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuPositionComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-position',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], showLock: [{\n type: Input\n }], showStick: [{\n type: Input\n }], isLast: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColumnListComponent {\n constructor(element, ngZone, renderer) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.reset = new EventEmitter();\n this.apply = new EventEmitter();\n this.columnChange = new EventEmitter();\n this.autoSync = true;\n this.allowHideAll = false;\n this.actionsClass = 'k-action-buttons';\n this.unlockedCount = 0;\n }\n get className() {\n return true;\n }\n set columns(value) {\n this._columns = value.filter(column => column.includeInChooser !== false);\n this.allColumns = value;\n this.updateColumnState();\n }\n get columns() {\n return this._columns;\n }\n isDisabled(column) {\n return !(this.allowHideAll || this.hasFiltered || column.hidden || this.columns.find(current => current !== column && !current.hidden)) ||\n (this.hasVisibleLocked && !this.hasUnlockedFiltered && this.unlockedCount === 1 && !column.locked && !column.hidden);\n }\n ngOnInit() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubscriptions = this.renderer.listen(this.element.nativeElement, 'click', (e) => {\n if (hasClasses(e.target, 'k-checkbox')) {\n if (this.autoSync) {\n const index = parseInt(e.target.getAttribute('data-index'), 10);\n const column = this.columns[index];\n const hidden = !e.target.checked;\n if (Boolean(column.hidden) !== hidden) {\n this.ngZone.run(() => {\n column.hidden = hidden;\n this.columnChange.emit([column]);\n });\n }\n }\n else {\n this.updateDisabled();\n }\n }\n });\n });\n }\n ngOnChanges(changes) {\n if (!this.service) {\n return;\n }\n if (changes.isLast && this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;\n }\n if (changes.isExpanded && this.isExpanded && this.isLast && this.applyButton) {\n this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;\n }\n }\n ngOnDestroy() {\n if (this.domSubscriptions) {\n this.domSubscriptions();\n }\n }\n cancelChanges() {\n this.forEachCheckBox((element, index) => {\n element.checked = !this.columns[index].hidden;\n });\n this.updateDisabled();\n this.reset.emit();\n }\n applyChanges() {\n const changed = [];\n this.forEachCheckBox((element, index) => {\n const column = this.columns[index];\n const hidden = !element.checked;\n if (Boolean(column.hidden) !== hidden) {\n column.hidden = hidden;\n changed.push(column);\n }\n });\n this.updateDisabled();\n this.apply.emit(changed);\n }\n onTab(e) {\n if (this.isLast) {\n e.preventDefault();\n if (this.service) {\n this.service.menuTabbingService.firstFocusable.focus();\n }\n }\n }\n forEachCheckBox(callback) {\n const checkboxes = this.element.nativeElement.getElementsByClassName('k-checkbox');\n const length = checkboxes.length;\n for (let idx = 0; idx < length; idx++) {\n callback(checkboxes[idx], idx);\n }\n }\n updateDisabled() {\n if (this.allowHideAll && !this.hasLocked) {\n return;\n }\n const checkedItems = [];\n this.forEachCheckBox((checkbox, index) => {\n if (checkbox.checked) {\n checkedItems.push({ checkbox, index });\n }\n checkbox.disabled = false;\n });\n if (!this.allowHideAll && checkedItems.length === 1 && !this.hasFiltered) {\n checkedItems[0].checkbox.disabled = true;\n }\n else if (this.hasLocked && !this.hasUnlockedFiltered) {\n const columns = this.columns;\n const checkedUnlocked = checkedItems.filter(item => !columns[item.index].locked);\n if (checkedUnlocked.length === 1) {\n checkedUnlocked[0].checkbox.disabled = true;\n }\n }\n }\n updateColumnState() {\n this.hasLocked = this.allColumns.filter(column => column.locked && (!column.hidden || column.includeInChooser !== false)).length > 0;\n this.hasVisibleLocked = this.allColumns.filter(column => column.locked && !column.hidden).length > 0;\n this.unlockedCount = this.columns.filter(column => !column.locked && !column.hidden).length;\n const filteredColumns = this.allColumns.filter(column => column.includeInChooser === false && !column.hidden);\n if (filteredColumns.length) {\n this.hasFiltered = filteredColumns.length > 0;\n this.hasUnlockedFiltered = filteredColumns.filter(column => !column.locked).length > 0;\n }\n else {\n this.hasFiltered = false;\n this.hasUnlockedFiltered = false;\n }\n }\n}\nColumnListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nColumnListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnListComponent, selector: \"kendo-grid-columnlist\", inputs: { columns: \"columns\", autoSync: \"autoSync\", allowHideAll: \"allowHideAll\", applyText: \"applyText\", resetText: \"resetText\", actionsClass: \"actionsClass\", isLast: \"isLast\", isExpanded: \"isExpanded\", service: \"service\" }, outputs: { reset: \"reset\", apply: \"apply\", columnChange: \"columnChange\" }, host: { properties: { \"class.k-column-list-wrapper\": \"this.className\" } }, viewQueries: [{ propertyName: \"applyButton\", first: true, predicate: [\"applyButton\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
\n \n
\n
\n \n \n
\n `, isInline: true, directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnlist',\n template: `\n
\n \n
\n
\n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { className: [{\n type: HostBinding,\n args: [\"class.k-column-list-wrapper\"]\n }], reset: [{\n type: Output\n }], apply: [{\n type: Output\n }], columnChange: [{\n type: Output\n }], columns: [{\n type: Input\n }], autoSync: [{\n type: Input\n }], allowHideAll: [{\n type: Input\n }], applyText: [{\n type: Input\n }], resetText: [{\n type: Input\n }], actionsClass: [{\n type: Input\n }], isLast: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], service: [{\n type: Input\n }], applyButton: [{\n type: ViewChild,\n args: ['applyButton', { static: false }]\n }] } });\n\n/**\n * Represents the component for selecting columns in the Grid that can be placed\n * inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-chooser` component.\n *\n * @example\n * {% meta height:300 %}\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n * {% endmeta %}\n */\nclass ColumnMenuChooserComponent extends ColumnMenuItemBase {\n constructor(localization, columnInfoService, changeDetector, hostElement) {\n super();\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.isLast = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-columnmenu-actions';\n }\n get columns() {\n return this.columnInfoService.leafNamedColumns;\n }\n /**\n * @hidden\n */\n onApply(changed) {\n this.close();\n if (changed.length) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.hostElement.nativeElement.querySelector('.k-columnmenu-item');\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n this.expand.emit();\n }\n}\nColumnMenuChooserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuChooserComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuChooserComponent, selector: \"kendo-grid-columnmenu-chooser\", inputs: { expanded: \"expanded\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }, { type: ColumnListComponent, selector: \"kendo-grid-columnlist\", inputs: [\"columns\", \"autoSync\", \"allowHideAll\", \"applyText\", \"resetText\", \"actionsClass\", \"isLast\", \"isExpanded\", \"service\"], outputs: [\"reset\", \"apply\", \"columnChange\"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuChooserComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-chooser',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], isLast: [{\n type: Input\n }] } });\n\n/**\n * Represents the component for editing column filters in the Grid that can be placed\n * inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-filter` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n *\n * ```\n */\nclass ColumnMenuFilterComponent extends ColumnMenuItemBase {\n constructor(localization, hostElement) {\n super();\n this.localization = localization;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.isLast = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-columnmenu-actions';\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.hostElement.nativeElement.querySelector('.k-columnmenu-item');\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n this.expand.emit();\n }\n}\nColumnMenuFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuFilterComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuFilterComponent, selector: \"kendo-grid-columnmenu-filter\", inputs: { expanded: \"expanded\", isLast: \"isLast\" }, outputs: { expand: \"expand\", collapse: \"collapse\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }, { type: FilterMenuContainerComponent, selector: \"kendo-grid-filter-menu-container\", inputs: [\"column\", \"isLast\", \"isExpanded\", \"menuTabbingService\", \"filter\", \"actionsClass\"], outputs: [\"close\"] }], directives: [{ type: ColumnMenuItemContentTemplateDirective, selector: \"[kendoGridColumnMenuItemContentTemplate]\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuFilterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-filter',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], expanded: [{\n type: Input\n }], isLast: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColumnMenuItemDirective {\n constructor(hostElement, renderer, ngZone) {\n this.hostElement = hostElement;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this._isFirst = false;\n this._isLast = false;\n this.subs = new Subscription();\n this.onTab = (e) => {\n if (e.keyCode !== Keys.Tab) {\n return;\n }\n if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {\n e.preventDefault();\n this.menuItemComponent.service.menuTabbingService.lastFocusable.focus();\n }\n if (this.isLast && !e.shiftKey) {\n const lastColumnMenuItem = this.getLastColumnMenuItem();\n const isExpanded = this.menuItemComponent.expanded;\n if (lastColumnMenuItem === e.target && !isExpanded) {\n e.preventDefault();\n this.menuItemComponent.service.menuTabbingService.firstFocusable.focus();\n }\n }\n };\n }\n set isFirst(value) {\n if (value) {\n const focusableElement = this.columnMenuItems[0];\n this.menuItemComponent.service.menuTabbingService.firstFocusable = focusableElement;\n this.ngZone.runOutsideAngular(() => {\n const firstItemKeydownSub = this.renderer.listen(focusableElement, 'keydown', this.onTab);\n this.subs.add(firstItemKeydownSub);\n });\n }\n this._isFirst = value;\n }\n get isFirst() {\n return this._isFirst;\n }\n set isLast(value) {\n if (!this.columnMenuItems) {\n return;\n }\n if (value) {\n const lastFocusableElement = this.getLastColumnMenuItem();\n this.menuItemComponent.service.menuTabbingService.lastFocusable = lastFocusableElement;\n this.ngZone.runOutsideAngular(() => {\n const lastItemKeydownSub = this.renderer.listen(lastFocusableElement, 'keydown', this.onTab);\n this.subs.add(lastItemKeydownSub);\n });\n if (this.isExpandableItem()) {\n this.menuItemComponent.isLast = true;\n }\n }\n this._isLast = value;\n }\n get isLast() {\n return this._isLast;\n }\n ngAfterViewInit() {\n this.columnMenuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');\n [].slice.apply(this.columnMenuItems).forEach(el => this.renderer.setAttribute(el, 'tabindex', '0'));\n if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {\n this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n getLastColumnMenuItem() {\n return (this.columnMenuItems.length === 1 ? this.columnMenuItems[0] : this.columnMenuItems[1]);\n }\n isExpandableItem() {\n return this.menuItemComponent instanceof ColumnMenuFilterComponent ||\n this.menuItemComponent instanceof ColumnMenuChooserComponent ||\n this.menuItemComponent instanceof ColumnMenuPositionComponent;\n }\n}\nColumnMenuItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nColumnMenuItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuItemDirective, selector: \"[kendoGridColumnMenuItem]\", inputs: { menuItemComponent: [\"kendoGridColumnMenuItem\", \"menuItemComponent\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuItemDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridColumnMenuItem]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { menuItemComponent: [{\n type: Input,\n args: ['kendoGridColumnMenuItem']\n }] } });\n\n/**\n * @hidden\n */\nclass ColumnMenuContainerComponent {\n constructor(service, ngZone) {\n this.service = service;\n this.ngZone = ngZone;\n }\n ngAfterContentInit() {\n if (!this.columnMenuItems.length) {\n return;\n }\n this.columnMenuItems.first.isFirst = true;\n this.columnMenuItems.last.isLast = true;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());\n }\n}\nColumnMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuContainerComponent, deps: [{ token: ColumnMenuService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuContainerComponent, selector: \"kendo-grid-columnmenu-container\", queries: [{ propertyName: \"columnMenuItems\", predicate: ColumnMenuItemDirective, descendants: true }], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-container',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: ColumnMenuService }, { type: i0.NgZone }]; }, propDecorators: { columnMenuItems: [{\n type: ContentChildren,\n args: [ColumnMenuItemDirective, { descendants: true }]\n }] } });\n\n/**\n * Represents a column-menu item for sorting Grid columns that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * Allows the user to sort the column.\n *\n * > You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * > the template to the service input of the `kendo-grid-columnmenu-sort` component.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }, { Field1: 'Foo1', Field2: 'Bar1' }];\n * }\n *\n * ```\n */\nclass ColumnMenuSortComponent extends ColumnMenuItemBase {\n constructor(localization, sortService, renderer) {\n super();\n this.localization = localization;\n this.sortService = sortService;\n this.renderer = renderer;\n }\n get sortedAsc() {\n const descriptor = this.descriptor;\n return descriptor && (!descriptor.dir || descriptor.dir === 'asc');\n }\n get sortedDesc() {\n const descriptor = this.descriptor;\n return descriptor && descriptor.dir === 'desc';\n }\n /**\n * @hidden\n */\n toggleSort(dir) {\n const field = this.service.column.field;\n const { mode, allowUnsort } = normalize(this.service.sortable);\n const descriptor = this.descriptor;\n const sort = mode === 'multiple' ? this.service.sort.filter(s => s.field !== field) : [];\n if (descriptor && descriptor.dir === dir) {\n if (!allowUnsort) {\n return;\n }\n }\n else {\n sort.push({ field, dir });\n }\n this.sortService.sort(sort);\n this.close();\n }\n get descriptor() {\n return [].concat(this.service.sort || []).find(s => s.field === this.service.column.field);\n }\n}\nColumnMenuSortComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuSortComponent, deps: [{ token: i1.LocalizationService }, { token: SortService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuSortComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuSortComponent, selector: \"kendo-grid-columnmenu-sort\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuItemComponent, selector: \"kendo-grid-columnmenu-item\", inputs: [\"icon\", \"text\", \"selected\", \"disabled\", \"expanded\"], outputs: [\"itemClick\", \"expand\", \"collapse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuSortComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-columnmenu-sort',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: SortService }, { type: i0.Renderer2 }]; } });\n\nconst POPUP_CLASS = 'k-grid-columnmenu-popup';\n/**\n * Represents the [column menu]({% slug columnmenu_grid %}) component.\n */\nclass ColumnMenuComponent {\n constructor(popupService, localization, service, navigationService) {\n this.popupService = popupService;\n this.localization = localization;\n this.service = service;\n this.navigationService = navigationService;\n /**\n * @hidden\n */\n this.standalone = true;\n /**\n * The settings for the Column Menu.\n */\n this.settings = {};\n /**\n * @hidden\n */\n this.sortable = true;\n /**\n * @hidden\n */\n this.tabIndex = '-1';\n /**\n * @hidden\n */\n this.expandedFilter = false;\n /**\n * @hidden\n */\n this.expandedColumns = false;\n /**\n * @hidden\n */\n this.expandedPosition = false;\n this.closeSubscription = service.closeMenu.subscribe(this.close.bind(this));\n }\n /**\n * @hidden\n */\n get isActive() {\n return (this.hasFilter && filtersByField(this.filter, this.column.field).length > 0) ||\n (!this.sortable && this.hasSort && this.sort.find(descriptor => descriptor.field === this.column.field));\n }\n /**\n * @hidden\n */\n get hasFilter() {\n return hasFilter(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasSort() {\n return hasSort(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasColumnChooser() {\n return hasColumnChooser(this.settings);\n }\n /**\n * @hidden\n */\n get hasLock() {\n return hasLock(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasStick() {\n return hasStick(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasPosition() {\n return hasPosition(this.settings, this.column);\n }\n ngOnChanges() {\n this.service.column = this.column;\n this.service.sort = this.sort;\n this.service.filter = this.filter;\n this.service.sortable = this.sortable;\n }\n ngOnDestroy() {\n this.close();\n this.closeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n toggle(e, anchor, template) {\n if (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n this.expandedFilter = this.getExpandedState(this.settings.filter);\n this.expandedColumns = this.getExpandedState(this.settings.columnChooser);\n this.expandedPosition = this.getExpandedState(this.settings.setColumnPosition);\n this.popupRef = this.popupService.open(anchor, template, this.popupRef, POPUP_CLASS);\n if (!this.popupRef) {\n if (this.navigationService.enabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n }\n /**\n * @hidden\n */\n close() {\n this.popupService.destroy();\n this.popupRef = null;\n if (this.navigationService.enabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n }\n else {\n this.anchor.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n get columnMenuTitle() {\n const localizationMsg = this.localization.get('columnMenu') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n getExpandedState(menuItemSettings) {\n return typeof (menuItemSettings) === 'object' ? menuItemSettings.expanded : false;\n }\n}\nColumnMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuComponent, deps: [{ token: SinglePopupService }, { token: i1.LocalizationService }, { token: ColumnMenuService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nColumnMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnMenuComponent, selector: \"kendo-grid-column-menu\", inputs: { standalone: \"standalone\", column: \"column\", settings: \"settings\", sort: \"sort\", filter: \"filter\", sortable: \"sortable\", columnMenuTemplate: \"columnMenuTemplate\", tabIndex: \"tabIndex\" }, host: { properties: { \"class.k-grid-column-menu-standalone\": \"this.standalone\" } }, providers: [\n ColumnMenuService,\n MenuTabbingService\n ], viewQueries: [{ propertyName: \"anchor\", first: true, predicate: [\"anchor\"], descendants: true, static: true }, { propertyName: \"template\", first: true, predicate: [\"template\"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ColumnMenuContainerComponent, selector: \"kendo-grid-columnmenu-container\" }, { type: ColumnMenuSortComponent, selector: \"kendo-grid-columnmenu-sort\" }, { type: ColumnMenuLockComponent, selector: \"kendo-grid-columnmenu-lock\" }, { type: ColumnMenuStickComponent, selector: \"kendo-grid-columnmenu-stick\" }, { type: ColumnMenuPositionComponent, selector: \"kendo-grid-columnmenu-position\", inputs: [\"expanded\", \"showLock\", \"showStick\", \"isLast\"], outputs: [\"expand\", \"collapse\"] }, { type: ColumnMenuChooserComponent, selector: \"kendo-grid-columnmenu-chooser\", inputs: [\"expanded\", \"isLast\"], outputs: [\"expand\", \"collapse\"] }, { type: ColumnMenuFilterComponent, selector: \"kendo-grid-columnmenu-filter\", inputs: [\"expanded\", \"isLast\"], outputs: [\"expand\", \"collapse\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: ColumnMenuItemDirective, selector: \"[kendoGridColumnMenuItem]\", inputs: [\"kendoGridColumnMenuItem\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n ColumnMenuService,\n MenuTabbingService\n ],\n selector: 'kendo-grid-column-menu',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: i1.LocalizationService }, { type: ColumnMenuService }, { type: NavigationService }]; }, propDecorators: { standalone: [{\n type: HostBinding,\n args: ['class.k-grid-column-menu-standalone']\n }, {\n type: Input\n }], column: [{\n type: Input\n }], settings: [{\n type: Input\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], sortable: [{\n type: Input\n }], columnMenuTemplate: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], anchor: [{\n type: ViewChild,\n args: ['anchor', { static: true }]\n }], template: [{\n type: ViewChild,\n args: ['template', { static: true, read: TemplateRef }]\n }] } });\n\n/**\n * Represents a component which accommodates the filter operators.\n */\nclass FilterCellOperatorsComponent {\n constructor(localization) {\n this.localization = localization;\n this.clearText = 'Clear';\n /**\n * The filter operators that will be displayed.\n */\n this.operators = [];\n /**\n * Determines if the list of operators will be displayed.\n * @type {boolean}\n */\n this.showOperators = true;\n /**\n * Fires when the operator is selected.\n * @type {EventEmitter}\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the **Clear** button is clicked.\n * @type {EventEmitter<{}>}\n */\n this.clear = new EventEmitter();\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return true;\n }\n /**\n * @hidden\n */\n onChange(dataItem) {\n this.valueChange.emit(dataItem);\n }\n /**\n * @hidden\n */\n clearClick() {\n this.clear.emit();\n return false;\n }\n /**\n * @hidden\n */\n clearKeydown(args) {\n if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) {\n this.clear.emit();\n }\n }\n /**\n * @hidden\n */\n dropdownKeydown(args) {\n if (args.defaultPrevented) {\n return;\n }\n if (args.keyCode === Keys.Enter && !this.dropdown.isOpen) {\n this.dropdown.toggle(true);\n args.preventDefault();\n }\n }\n ngOnInit() {\n this.localization.changes.subscribe(() => this.clearText = this.localization.get(\"filterClearButton\"));\n }\n}\nFilterCellOperatorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellOperatorsComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFilterCellOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellOperatorsComponent, selector: \"kendo-grid-filter-cell-operators\", inputs: { operators: \"operators\", showButton: \"showButton\", showOperators: \"showOperators\", value: \"value\" }, outputs: { valueChange: \"valueChange\", clear: \"clear\" }, host: { properties: { \"class.k-filtercell-operator\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"dropdown\", first: true, predicate: [\"dropdown\"], descendants: true }], ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellOperatorsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-cell-operators',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-operator']\n }], dropdown: [{\n type: ViewChild,\n args: ['dropdown', { static: false }]\n }], operators: [{\n type: Input\n }], showButton: [{\n type: Input\n }], showOperators: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], clear: [{\n type: Output\n }] } });\n\nconst EMPTY_FILTER_OPERATORS = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n/**\n * @hidden\n */\nclass FilterCellWrapperComponent extends FilterInputWrapperComponent {\n constructor(filterService) {\n super(filterService);\n this.showOperators = true;\n }\n get hostClasses() {\n return true;\n }\n get overrideBaseClasses() {\n return false;\n }\n get showButton() {\n const filter = this.currentFilter;\n return isPresent(filter) && (!isNullOrEmptyString(filter.value) ||\n EMPTY_FILTER_OPERATORS.indexOf(String(filter.operator)) >= 0);\n }\n filterChange(filter) {\n this.applyFilter(filter);\n }\n}\nFilterCellWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellWrapperComponent, deps: [{ token: FilterService }], target: i0.ɵɵFactoryTarget.Component });\nFilterCellWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: { showOperators: \"showOperators\" }, host: { properties: { \"class.k-filtercell-wrapper\": \"this.hostClasses\", \"class.k-filtercell\": \"this.overrideBaseClasses\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: FilterCellOperatorsComponent, selector: \"kendo-grid-filter-cell-operators\", inputs: [\"operators\", \"showButton\", \"showOperators\", \"value\"], outputs: [\"valueChange\", \"clear\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellWrapperComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-filter-wrapper-cell',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell-wrapper']\n }], overrideBaseClasses: [{\n type: HostBinding,\n args: ['class.k-filtercell']\n }], showOperators: [{\n type: Input\n }] } });\n\n/**\n * Represents a string-filter cell component\n * ([see example]({% slug builtinfiltertemplate_grid %}#toc-configuration-components-for-filter-templates)).\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass StringFilterCellComponent extends StringFilterComponent {\n constructor(filterService, localization) {\n super(filterService, localization);\n /**\n * Determines the delay time (in milliseconds) before the filter value is submitted.\n * A value of `0` indicates no delay. The default value is `500`.\n * @type {boolean}\n */\n this.filterDelay = 500;\n /**\n * Determines if the drop-down filter operators will be displayed.\n * The default value is `true`.\n * @type {boolean}\n */\n this.showOperators = true;\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nStringFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStringFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StringFilterCellComponent, selector: \"kendo-grid-string-filter-cell\", inputs: { filterDelay: \"filterDelay\", showOperators: \"showOperators\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }], directives: [{ type: i4$1.TextBoxDirective, selector: \"input[kendoTextBox]\", inputs: [\"value\"] }, { type: i4$2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: i4$2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4$2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StringFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-string-filter-cell',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { filterDelay: [{\n type: Input\n }], showOperators: [{\n type: Input\n }] } });\n\n/**\n * Represents a numeric filter cell.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass NumericFilterCellComponent extends NumericFilterComponent {\n constructor(filterService, localization) {\n super(filterService, localization);\n this.localization = localization;\n /**\n * Determines the delay time (in milliseconds) before the filter value is submitted.\n * A value of `0` indicates no delay. The default value is `500`.\n * @type {boolean}\n */\n this.filterDelay = 500;\n /**\n * Determines if the drop-down filter operators will be displayed.\n * The default value is `true`.\n * @type {boolean}\n */\n this.showOperators = true;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nNumericFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericFilterCellComponent, selector: \"kendo-grid-numeric-filter-cell\", inputs: { filterDelay: \"filterDelay\", showOperators: \"showOperators\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }, { type: i4$1.NumericTextBoxCustomMessagesComponent, selector: \"kendo-numerictextbox-messages\" }], directives: [{ type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-numeric-filter-cell',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { filterDelay: [{\n type: Input\n }], showOperators: [{\n type: Input\n }] } });\n\n/**\n * Represents a Boolean filter-cell component.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass BooleanFilterCellComponent extends BooleanFilterComponent {\n constructor(filterService, localization, cd) {\n super(filterService, localization);\n this.cd = cd;\n }\n localizationChange() {\n super.localizationChange();\n this.cd.markForCheck();\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nBooleanFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nBooleanFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BooleanFilterCellComponent, selector: \"kendo-grid-boolean-filter-cell\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i1$4.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BooleanFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-boolean-filter-cell',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Represents a date-filter cell component.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass DateFilterCellComponent extends DateFilterComponent {\n constructor(filterService, localization) {\n super(filterService, localization);\n this.localization = localization;\n /**\n * Determines if the drop-down filter operators will be displayed. The default value is `true`.\n * @type {boolean}\n */\n this.showOperators = true;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nDateFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterCellComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateFilterCellComponent, selector: \"kendo-grid-date-filter-cell\", inputs: { showOperators: \"showOperators\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i4$3.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }, { type: i4$3.DatePickerCustomMessagesComponent, selector: \"kendo-datepicker-messages\" }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-date-filter-cell',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: i1.LocalizationService }]; }, propDecorators: { showOperators: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * > List the following components in the GridModule as `entryComponents`.\n */\nconst filterComponentFactory = (type) => ({\n \"boolean\": BooleanFilterCellComponent,\n \"date\": DateFilterCellComponent,\n \"numeric\": NumericFilterCellComponent,\n \"text\": StringFilterCellComponent\n}[type]);\n\n/**\n * @hidden\n */\nclass FilterCellHostDirective extends FilterHostDirective {\n constructor(host, resolver) {\n super(host, resolver);\n }\n componentType() {\n if (!isNullOrEmptyString(this.column.filter)) {\n return filterComponentFactory(this.column.filter);\n }\n return StringFilterCellComponent;\n }\n}\nFilterCellHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellHostDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });\nFilterCellHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellHostDirective, selector: \"[kendoFilterCellHost]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFilterCellHost]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * @hidden\n */\nclass FilterCellComponent {\n constructor() {\n this._templateContext = {};\n }\n get filter() {\n return this._filter;\n }\n set filter(value) {\n this._filter = cloneFilters(value);\n }\n get templateContext() {\n this._templateContext.column = this.column;\n this._templateContext.filter = this.filter;\n this._templateContext['$implicit'] = this.filter;\n return this._templateContext;\n }\n get hasTemplate() {\n return isPresent(this.column.filterCellTemplateRef);\n }\n get isFilterable() {\n return isPresent(this.column) && !isNullOrEmptyString(this.column.field) && this.column.filterable;\n }\n}\nFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterCellComponent, selector: \"[kendoGridFilterCell]\", inputs: { column: \"column\", filter: \"filter\" }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: FilterCellHostDirective, selector: \"[kendoFilterCellHost]\" }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridFilterCell]',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], propDecorators: { column: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\nlet id$1 = 0;\nfunction nextId$1() {\n return id$1++;\n}\n/**\n * @hidden\n */\nclass LogicalCellDirective {\n constructor(focusGroup, element, columnInfoService, idService, navigationService, renderer, zone, cellContext) {\n this.focusGroup = focusGroup;\n this.element = element;\n this.columnInfoService = columnInfoService;\n this.idService = idService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this.zone = zone;\n this.cellContext = cellContext;\n this.logicalSlaveCell = false;\n this.colSpan = 1;\n this.rowSpan = 1;\n this.dataRowIndex = -1;\n this.detailExpandCell = false;\n this.uid = nextId$1();\n }\n get id() {\n if (!this.logicalSlaveCell && this.columnInfoService.isLocked) {\n return this.idService.cellId(this.logicalRowIndex, this.logicalColIndex);\n }\n }\n get ariaColIndex() {\n if (this.logicalSlaveCell || this.logicalColIndex === -1) {\n return undefined;\n }\n return this.logicalColIndex + 1;\n }\n ngOnInit() {\n if (!this.navigationService.enabled) {\n return;\n }\n this.navigationChange = this.navigationService.changes.subscribe((e) => this.onNavigationChange(e));\n }\n ngDoCheck() {\n if (!this.navigationService.enabled || this.logicalColIndex === -1) {\n return;\n }\n if (this.cellContext) {\n this.cellContext.focusGroup = this.focusGroup;\n }\n this.registerNoChanges();\n }\n ngOnChanges(changes) {\n if (!this.navigationService.enabled) {\n return;\n }\n const keys = Object.keys(changes);\n if ((keys.length === 1 && keys[0] === 'groupItem') || this.logicalColIndex === -1) {\n // Ignore groupItem changes as the reference is not stable\n return;\n }\n const indexChange = changes.logicalColIndex;\n const rowIndexChange = changes.logicalRowIndex;\n const index = indexChange && !indexChange.isFirstChange() ? indexChange.previousValue : this.logicalColIndex;\n const rowIndex = rowIndexChange && !rowIndexChange.isFirstChange() ? rowIndexChange.previousValue : this.logicalRowIndex;\n this.navigationService.unregisterCell(index, rowIndex, this);\n this.registerChanges();\n this.updateElement();\n }\n ngOnDestroy() {\n if (this.navigationChange) {\n this.navigationChange.unsubscribe();\n }\n this.navigationService.unregisterCell(this.logicalColIndex, this.logicalRowIndex, this);\n }\n onNavigationChange(e) {\n const active = this.logicalColIndex === e.colIndex && this.logicalRowIndex === e.rowIndex;\n const wasActive = this.logicalColIndex === e.prevColIndex && this.logicalRowIndex === e.prevRowIndex;\n if (active || wasActive) {\n this.updateElement();\n }\n }\n updateElement() {\n const el = this.element.nativeElement;\n this.renderer.setAttribute(el, 'tabIndex', this.isFocusable() && !this.logicalSlaveCell ? '0' : '-1');\n if (this.isFocused()) {\n if (this.focusGroup.isNavigable()) {\n this.focusGroup.focus();\n }\n else {\n if (!this.logicalSlaveCell && this.navigationService.autoFocusCell(this.logicalColIndex, this.logicalColIndex + this.colSpan - 1)) {\n this.microtask(() => this.isFocused() && el.focus());\n }\n this.renderer.addClass(el, 'k-state-focused');\n }\n if (this.headerLabelText) {\n el.setAttribute('aria-label', '');\n }\n }\n else {\n this.renderer.removeClass(el, 'k-state-focused');\n if (this.headerLabelText) {\n el.setAttribute('aria-label', this.headerLabelText);\n }\n }\n }\n microtask(callback) {\n this.zone.runOutsideAngular(() => Promise.resolve(null).then(callback));\n }\n registerChanges() {\n if (!this.logicalSlaveCell) {\n this.navigationService.registerCell(this);\n }\n }\n registerNoChanges() {\n if (!this.logicalSlaveCell) {\n this.navigationService.registerCellOnCurrentRow(this);\n }\n }\n isFocusable() {\n return this.navigationService.isCellFocusable(this);\n }\n isFocused() {\n return this.navigationService.isCellFocused(this);\n }\n}\nLogicalCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalCellDirective, deps: [{ token: FocusGroup }, { token: i0.ElementRef }, { token: ColumnInfoService }, { token: IdService }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: CELL_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nLogicalCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: { logicalColIndex: \"logicalColIndex\", logicalRowIndex: \"logicalRowIndex\", logicalSlaveCell: \"logicalSlaveCell\", colIndex: \"colIndex\", colSpan: \"colSpan\", rowSpan: \"rowSpan\", groupItem: \"groupItem\", dataRowIndex: \"dataRowIndex\", dataItem: \"dataItem\", detailExpandCell: \"detailExpandCell\", headerLabelText: \"headerLabelText\" }, host: { properties: { \"attr.id\": \"this.id\", \"attr.aria-colindex\": \"this.ariaColIndex\" } }, providers: [{\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalCellDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [{\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }],\n selector: '[kendoGridLogicalCell]'\n }]\n }], ctorParameters: function () { return [{ type: FocusGroup }, { type: i0.ElementRef }, { type: ColumnInfoService }, { type: IdService }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }]; }, propDecorators: { logicalColIndex: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], logicalSlaveCell: [{\n type: Input\n }], colIndex: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], groupItem: [{\n type: Input\n }], dataRowIndex: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], detailExpandCell: [{\n type: Input\n }], headerLabelText: [{\n type: Input\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], ariaColIndex: [{\n type: HostBinding,\n args: ['attr.aria-colindex']\n }] } });\n\n/**\n * @hidden\n */\nclass FilterRowComponent {\n constructor(localization, columnInfoService) {\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.groups = [];\n this.filterRowClass = true;\n }\n addStickyStyles(column) {\n const sticky = column.sticky ? this.columnInfoService.stickyColumnsStyles(column) : null;\n return Object.assign(Object.assign({}, sticky), column.filterStyle);\n }\n filterLabel(column) {\n const localizationMsg = this.localization.get('filterInputLabel') || '';\n const columnName = column.title || column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n}\nFilterRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterRowComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });\nFilterRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterRowComponent, selector: \"[kendoGridFilterRow]\", inputs: { columns: \"columns\", filter: \"filter\", groups: \"groups\", detailTemplate: \"detailTemplate\", logicalRowIndex: \"logicalRowIndex\", lockedColumnsCount: \"lockedColumnsCount\" }, host: { properties: { \"class.k-filter-row\": \"this.filterRowClass\" } }, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, components: [{ type: FilterCellComponent, selector: \"[kendoGridFilterCell]\", inputs: [\"column\", \"filter\"] }], directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterRowComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridFilterRow]',\n template: `\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }]; }, propDecorators: { columns: [{\n type: Input\n }], filter: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], filterRowClass: [{\n type: HostBinding,\n args: ['class.k-filter-row']\n }] } });\n\nlet id = 0;\nfunction nextId() {\n return id++;\n}\n/**\n * @hidden\n */\nclass LogicalRowDirective {\n constructor(idService, navigation) {\n this.idService = idService;\n this.navigation = navigation;\n this.logicalSlaveRow = false;\n this.logicalSlaveCellsCount = 0;\n this.dataRowIndex = -1;\n this.uid = nextId();\n }\n get hostRole() {\n return this.logicalSlaveRow ? 'presentation' : 'row';\n }\n get ariaRowIndex() {\n return this.logicalRowIndex + 1;\n }\n get ariaOwns() {\n if (!this.navigation.enabled || this.logicalSlaveRow || this.logicalSlaveCellsCount === 0) {\n return undefined;\n }\n const ids = [];\n const total = this.logicalCellsCount + this.logicalSlaveCellsCount;\n for (let cellIndex = this.logicalCellsCount; cellIndex < total; cellIndex++) {\n ids.push(this.idService.cellId(this.logicalRowIndex, cellIndex));\n }\n return ids.join(' ');\n }\n ngOnChanges(changes) {\n if (!this.navigation.enabled || this.logicalSlaveRow) {\n return;\n }\n const indexChange = changes.logicalRowIndex;\n const logicalSlaveRowChange = changes.logicalSlaveRow;\n if (indexChange || logicalSlaveRowChange) {\n const index = indexChange && !indexChange.isFirstChange() ? indexChange.previousValue : this.logicalRowIndex;\n this.navigation.unregisterRow(index, this);\n this.navigation.registerRow(this);\n }\n else if (anyChanged(['dataRowIndex', 'dataItem'], changes)) {\n this.navigation.updateRow(this);\n }\n }\n ngOnDestroy() {\n this.navigation.unregisterRow(this.logicalRowIndex, this);\n }\n}\nLogicalRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalRowDirective, deps: [{ token: IdService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Directive });\nLogicalRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: { logicalRowIndex: \"logicalRowIndex\", logicalSlaveRow: \"logicalSlaveRow\", logicalCellsCount: \"logicalCellsCount\", logicalSlaveCellsCount: \"logicalSlaveCellsCount\", dataRowIndex: \"dataRowIndex\", dataItem: \"dataItem\" }, host: { properties: { \"attr.role\": \"this.hostRole\", \"attr.aria-rowindex\": \"this.ariaRowIndex\", \"attr.aria-owns\": \"this.ariaOwns\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LogicalRowDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridLogicalRow]'\n }]\n }], ctorParameters: function () { return [{ type: IdService }, { type: NavigationService }]; }, propDecorators: { logicalRowIndex: [{\n type: Input\n }], logicalSlaveRow: [{\n type: Input\n }], logicalCellsCount: [{\n type: Input\n }], logicalSlaveCellsCount: [{\n type: Input\n }], dataRowIndex: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], hostRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaRowIndex: [{\n type: HostBinding,\n args: ['attr.aria-rowindex']\n }], ariaOwns: [{\n type: HostBinding,\n args: ['attr.aria-owns']\n }] } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n this.removeView();\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n ngOnDestroy() {\n this.removeView();\n }\n removeView() {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[templateContext]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * Represents the select-all checkbox feature of the Grid ([see example]({% slug selection_grid %}#toc-select-all-feature)).\n */\nclass SelectAllCheckboxDirective {\n constructor(selectionService, el, renderer, ngZone) {\n this.selectionService = selectionService;\n this.el = el;\n this.renderer = renderer;\n this.ngZone = ngZone;\n /**\n * Fires when the user clicks the `kendoGridSelectAllCheckbox` select-all checkbox\n * ([see example]({% slug selection_grid %}#toc-select-all-feature)).\n */\n this.selectAllChange = new EventEmitter();\n this.type = 'checkbox';\n this.stateSet = false;\n this.ngZone.runOutsideAngular(() => {\n this.destroyClick = this.renderer.listen(this.el.nativeElement, 'click', this.onClick.bind(this));\n });\n }\n ngAfterContentChecked() {\n this.setState();\n }\n ngOnChanges() {\n this.stateSet = true;\n }\n ngOnDestroy() {\n if (this.destroyClick) {\n this.destroyClick();\n }\n }\n /**\n * @hidden\n */\n onClick() {\n // yields consistent cross-browser behavior when clicking an indeterminate checkbox\n const undefinedCheckedStateInIE = detectIE() && this.selectionService.selectAllState === undefined;\n const isChecked = undefinedCheckedStateInIE ? true : this.el.nativeElement.checked;\n const options = this.selectionService.options;\n const enabledAndMultiple = options.enabled && options.mode === 'multiple';\n const shouldEmitSelectAll = hasObservers(this.selectAllChange);\n if (enabledAndMultiple || shouldEmitSelectAll) {\n this.ngZone.run(() => {\n if (enabledAndMultiple) {\n this.selectionService.updateAll(isChecked);\n }\n if (shouldEmitSelectAll) {\n this.selectAllChange.emit(isChecked ? 'checked' : 'unchecked');\n }\n });\n }\n }\n /**\n * @hidden\n */\n setState() {\n const state = this.stateSet ? this.stateToBool() : this.selectionService.selectAllState;\n const elem = this.el.nativeElement;\n this.renderer.setProperty(elem, 'indeterminate', !isPresent(state));\n this.renderer.setProperty(elem, 'checked', isPresent(state) ? state : false);\n }\n /**\n * @hidden\n */\n stateToBool() {\n switch (this.state) {\n case 'checked':\n return true;\n case 'unchecked':\n return false;\n default:\n return undefined;\n }\n }\n}\nSelectAllCheckboxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectAllCheckboxDirective, deps: [{ token: SelectionService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nSelectAllCheckboxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectAllCheckboxDirective, selector: \"[kendoGridSelectAllCheckbox]\", inputs: { state: \"state\" }, outputs: { selectAllChange: \"selectAllChange\" }, host: { properties: { \"attr.type\": \"this.type\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectAllCheckboxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectAllCheckbox]'\n }]\n }], ctorParameters: function () { return [{ type: SelectionService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { state: [{\n type: Input\n }], selectAllChange: [{\n type: Output\n }], type: [{\n type: HostBinding,\n args: ['attr.type']\n }] } });\n\n/**\n * @hidden\n */\nconst fromPercentage = (value, percent) => {\n const sign = percent < 0 ? -1 : 1;\n return Math.ceil((Math.abs(percent) / 100) * value) * sign;\n};\n/**\n * @hidden\n */\nconst toPercentage = (value, whole) => (value / whole) * 100;\n/**\n * @hidden\n */\nconst headerWidth = (handle) => handle.nativeElement.parentElement.offsetWidth;\n/**\n * @hidden\n */\nconst allLeafColumns = columns => expandColumns(columns)\n .filter(c => !c.isColumnGroup);\n/**\n * @hidden\n */\nconst stopPropagation = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\n/**\n * @hidden\n */\nconst createMoveStream = (service, draggable) => mouseDown => draggable.kendoDrag.pipe(\n// eslint-disable-next-line rxjs/no-unsafe-takeuntil\ntakeUntil(draggable.kendoRelease.pipe(tap(() => service.end()))), map(({ pageX }) => ({\n originalX: mouseDown.pageX,\n pageX\n})));\n/**\n * @hidden\n */\nconst preventOnDblClick = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\n/**\n * @hidden\n */\nconst isInSpanColumn = column => !!(column.parent && column.parent.isSpanColumn);\n/**\n * @hidden\n *\n * Calculates the column index. If the column is stated in `SpanColumn`,\n * the index for all child columns equals the index of the first child.\n */\nconst indexOf = (target, list) => {\n let index = 0;\n let ignore = 0;\n let skip = 0;\n while (index < list.length) {\n const current = list[index];\n const isParentSpanColumn = isInSpanColumn(current);\n if (current === target) {\n break;\n }\n if ((ignore-- <= 0) && isParentSpanColumn) {\n ignore = current.parent.childColumns.length - 1;\n skip += ignore;\n }\n index++;\n }\n return index - skip;\n};\n/**\n * @hidden\n */\nclass ColumnHandleDirective {\n constructor(draggable, element, service, zone, cdr, localization, columnInfoService) {\n this.draggable = draggable;\n this.element = element;\n this.service = service;\n this.zone = zone;\n this.cdr = cdr;\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.subscriptions = new Subscription();\n this.rtl = false;\n }\n get visible() {\n return this.column.resizable ? 'block' : 'none';\n }\n get leftStyle() {\n return isTruthy(this.rtl) ? 0 : null;\n }\n get rightStyle() {\n return isTruthy(this.rtl) ? null : 0;\n }\n autoFit() {\n const allLeafs = allLeafColumns(this.columns);\n const currentLeafs = leafColumns([this.column]).filter(column => isTruthy(column.resizable));\n const columnInfo = currentLeafs.map(column => {\n const isParentSpan = isInSpanColumn(column);\n const isLastInSpan = isParentSpan ? column.parent.childColumns.last === column : false;\n const index = indexOf(column, allLeafs);\n return {\n column,\n headerIndex: this.columnsForLevel(column.level).indexOf(column),\n index,\n isLastInSpan,\n isParentSpan,\n level: column.level\n };\n });\n currentLeafs.forEach(column => column.width = 0);\n this.service.measureColumns(columnInfo);\n }\n ngOnInit() {\n if (isBlank(this.column.width)) {\n this.column.implicitWidth = headerWidth(this.element);\n }\n const service = this.service.changes.pipe(filter(() => this.column.resizable), filter(e => isPresent(e.columns.find(column => column === this.column))));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'start'))\n .subscribe(this.initState.bind(this)));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'resizeColumn'))\n .subscribe(this.resize.bind(this)));\n this.subscriptions.add(this.service.changes.pipe(filter(e => e.type === 'start'), filter(this.shouldUpdate.bind(this)), take(1) //on first resize only\n ).subscribe(this.initColumnWidth.bind(this)));\n this.subscriptions.add(this.zone.runOutsideAngular(() => this.draggable.kendoPress.pipe(tap(stopPropagation), tap(() => this.service.start(this.column)), switchMap(preventOnDblClick(this.draggable.kendoRelease)), switchMap(createMoveStream(this.service, this.draggable)))\n .subscribe(({ pageX, originalX }) => {\n const delta = pageX - originalX;\n const percent = toPercentage(delta, this.column.resizeStartWidth || this.column.width);\n this.service.resizeColumns(percent);\n })));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'autoFitComplete'))\n .subscribe(this.sizeToFit.bind(this)));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'triggerAutoFit'))\n .subscribe(this.autoFit.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n shouldUpdate() {\n return !allLeafColumns(this.columns)\n .map(column => column.width)\n .some(isBlank);\n }\n initColumnWidth() {\n this.column.width = headerWidth(this.element);\n }\n initState() {\n this.column.resizeStartWidth = headerWidth(this.element);\n this.service.resizedColumn({\n column: this.column,\n oldWidth: this.column.resizeStartWidth\n });\n }\n resize({ deltaPercent }) {\n let delta = fromPercentage(this.column.resizeStartWidth, deltaPercent);\n if (isTruthy(this.rtl)) {\n delta *= -1;\n }\n const newWidth = Math.max(this.column.resizeStartWidth + delta, this.column.minResizableWidth);\n const tableDelta = newWidth > this.column.minResizableWidth ?\n delta : this.column.minResizableWidth - this.column.resizeStartWidth;\n this.updateWidth(this.column, newWidth);\n this.service.resizeTable(this.column, tableDelta);\n }\n sizeToFit({ columns, widths }) {\n const index = columns.indexOf(this.column);\n const width = Math.max(...widths.map(w => w[index])) + 1; //add 1px for IE\n const tableDelta = width - this.column.resizeStartWidth;\n this.updateWidth(this.column, width);\n this.service.resizeTable(this.column, tableDelta);\n }\n updateWidth(column, width) {\n column.width = width;\n this.columnInfoService.hiddenColumns.forEach((col) => {\n if (isBlank(col.width) && isPresent(col.implicitWidth)) {\n // Resize hidden columns to their implicit width so they\n // can be displayed with the same width if made visible.\n col.width = col.implicitWidth;\n }\n });\n this.cdr.markForCheck(); //force CD cycle\n }\n columnsForLevel(level) {\n return columnsToRender(this.columns ? this.columns.filter(column => column.level === level) : []);\n }\n}\nColumnHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHandleDirective, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: ColumnResizingService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Directive });\nColumnHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnHandleDirective, selector: \"[kendoGridColumnHandle]\", inputs: { columns: \"columns\", column: \"column\" }, host: { listeners: { \"dblclick\": \"autoFit()\" }, properties: { \"style.display\": \"this.visible\", \"style.left\": \"this.leftStyle\", \"style.right\": \"this.rightStyle\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridColumnHandle]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: ColumnResizingService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: ColumnInfoService }]; }, propDecorators: { columns: [{\n type: Input\n }], column: [{\n type: Input\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }], leftStyle: [{\n type: HostBinding,\n args: ['style.left']\n }], rightStyle: [{\n type: HostBinding,\n args: ['style.right']\n }], autoFit: [{\n type: HostListener,\n args: ['dblclick']\n }] } });\n\nconst mergeObjects = (...args) => Object.assign.apply(null, [{}].concat(args));\nconst directions = initialDirection => initialDirection === \"asc\" ? [\"asc\", \"desc\"] : [\"desc\", \"asc\"];\n/**\n * @hidden\n */\nconst isRootLevel = ({ parent }) => !isTruthy(parent);\nconst ofColumnType = ({ draggable }) => ['column', 'columnGroup']\n .indexOf(draggable.context.type) >= 0;\nconst notSameElement = ({ draggable, target }) => draggable.element.nativeElement !== target.element.nativeElement;\nconst inSameParent = (x, y) => x.parent === y.parent ||\n (isInSpanColumn$1(y) && inSameParent(x, y.parent));\nconst sameParent = ({ draggable, target }) => inSameParent(draggable.context.column, target.context.column);\nconst lastNonLocked = ({ draggable }) => !isTruthy(draggable.context.column.locked) &&\n isRootLevel(draggable.context.column) &&\n draggable.context.lastColumn;\nconst notInSpanColumn = ({ draggable }) => !isInSpanColumn$1(draggable.context.column);\nconst reorderable = ({ draggable }) => draggable.context.column.reorderable;\nconst lockable = ({ draggable, target }) => draggable.context.column.lockable !== false ||\n draggable.context.column.isLocked === target.context.column.isLocked;\nconst rules = and(ofColumnType, reorderable, notInSpanColumn, notSameElement, sameParent, not(lastNonLocked), lockable);\nconst modifierKeys = ['alt', 'ctrl', 'shift', 'meta'];\n/**\n * @hidden\n */\nclass HeaderComponent {\n constructor(popupService, hint, cue, reorderService, idService, sortService, localization, columnInfoService, cd) {\n this.popupService = popupService;\n this.hint = hint;\n this.cue = cue;\n this.reorderService = reorderService;\n this.idService = idService;\n this.sortService = sortService;\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.cd = cd;\n this.columns = [];\n this.groups = [];\n this.sort = new Array();\n this.sortable = false;\n this.groupable = false;\n this.lockedColumnsCount = 0;\n this.resizable = false;\n this.reorderable = false;\n this.columnMenu = false;\n this.totalColumnsCount = 0;\n this.sortedFields = {};\n this.dropTargets = new QueryList();\n this.subscription = new Subscription();\n }\n get headerClass() {\n return !this.scrollable;\n }\n get sortableLabel() {\n return this.localization.get('sortable');\n }\n get columnMenuSettings() {\n return this.columnMenu;\n }\n // Number of unlocked columns in the next table, if any\n get unlockedColumnsCount() {\n return this.totalColumnsCount - this.lockedColumnsCount - this.columns.length;\n }\n sortColumn(descriptor) {\n this.sortService.sort(descriptor);\n }\n getColumnComponent(column) {\n return column;\n }\n onSortClick(column, event, link) {\n const target = event.target;\n if (column.headerTemplateRef && target !== link) {\n const hasFocusableParent = Boolean(closestInScope(target, isFocusable, link));\n if (hasFocusableParent) {\n // Do not sort when clicking focusable template elements.\n return;\n }\n }\n const modifier = this.matchModifier(event);\n const toggledColumn = this.toggleSort(column, modifier);\n this.sortColumn(toggledColumn);\n }\n onHeaderKeydown(column, args) {\n if (args.keyCode === Keys.ArrowDown && args.altKey && this.showFilterMenu) {\n args.preventDefault();\n args.stopImmediatePropagation();\n const filterMenu = this.filterMenus.find(fm => fm.column === column);\n filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);\n }\n if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {\n args.preventDefault();\n args.stopImmediatePropagation();\n const columnMenu = this.columnMenus.find(cm => cm.column === column);\n columnMenu.toggle(null, columnMenu.anchor.nativeElement, columnMenu.template);\n }\n if (!this.sortable || args.defaultPrevented || column.sortable === false) {\n return;\n }\n if (args.keyCode === Keys.Enter && isPresent(column.field)) {\n const modifier = this.matchModifier(args);\n this.sortService.sort(this.toggleSort(column, modifier));\n }\n }\n showSortNumbering(column) {\n const { showIndexes } = normalize(this.sortable);\n return showIndexes\n && this.sort\n && this.sort.filter(({ dir }) => isPresent(dir)).length > 1\n && this.sortOrder(column.field) > 0;\n }\n sortOrder(field) {\n return this.sort\n .filter(({ dir }) => isPresent(dir))\n .findIndex(x => x.field === field)\n + 1;\n }\n sortIcon(field) {\n const state = this.sortDescriptor(field);\n return {\n 'k-icon': isPresent(state.dir),\n 'k-i-sort-desc-sm': state.dir === \"desc\",\n 'k-i-sort-asc-sm': state.dir === \"asc\"\n };\n }\n sortState(column) {\n if (!this.isSortable(column)) {\n return;\n }\n const state = this.sortDescriptor(column.field);\n if (state.dir === 'asc') {\n return 'ascending';\n }\n if (state.dir === 'desc') {\n return 'descending';\n }\n }\n sortStatus(column) {\n if (!this.sortedFields[column.field] || !this.isSortable(column)) {\n return;\n }\n let msg = 'sortedDefault';\n const state = this.sortDescriptor(column.field);\n if (state.dir === 'asc') {\n msg = 'sortedAscending';\n }\n else if (state.dir === 'desc') {\n msg = 'sortedDescending';\n }\n return this.localization.get(msg);\n }\n /**\n *\n * @param column\n * @param modifier - Indicates whether the client-defined `multiSortKey` modifier is met. Defaults to `true`.\n * @returns - SortDescriptor[]\n */\n toggleSort(column, modifier = true) {\n const { allowUnsort, mode, initialDirection } = normalize(this.sortable, column.sortable);\n const descriptor = this.toggleDirection(column.field, allowUnsort, initialDirection);\n if (mode === 'single' || !modifier) {\n return [descriptor];\n }\n return [...this.sort.filter(desc => desc.field !== column.field), descriptor];\n }\n /**\n *\n * Determines whether the modifier key (if any) passed\n * with a click/keyboard event matches the user-defined multiSortKey.\n */\n matchModifier(event) {\n const { multiSortKey } = normalize(this.sortable);\n if (multiSortKey === 'none') {\n return modifierKeys.every(key => !event[`${key}Key`]);\n }\n return multiSortKey === 'ctrl'\n ? event.ctrlKey || event.metaKey\n : event[`${multiSortKey}Key`];\n }\n ngAfterViewInit() {\n this.subscription.add(observe(this.dropTargets)\n .subscribe(this.attachTargets.bind(this)));\n }\n ngDoCheck() {\n this._leafColumns = columnsToRender(this.columns || []).filter(x => !isColumnGroupComponent(x));\n }\n ngOnChanges(changes) {\n const sortChange = changes.sort;\n if (sortChange && !sortChange.isFirstChange()) {\n sortChange.currentValue.forEach(change => {\n this.sortedFields[change.field] = true;\n });\n }\n }\n ngOnInit() {\n this.subscription.add(this.localization.changes\n .subscribe(() => this.cd.markForCheck()));\n }\n ngOnDestroy() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n if (this.popupService) {\n this.popupService.destroy();\n }\n this.subscription.unsubscribe();\n }\n selectAllCheckboxId() {\n return this.idService.selectAllCheckboxId();\n }\n get selectAllCheckboxLabel() {\n return this.localization.get('selectAllCheckboxLabel');\n }\n isFirstOnRow(column, index) {\n const isTailing = (c) => c &&\n (this.columnsForLevel(c.level).indexOf(c) > 0 || isTailing(c.parent));\n return index === 0 && !this.groups.length && !this.detailTemplate && isTailing(column.parent);\n }\n logicalColumnIndex(column) {\n const index = column.leafIndex;\n if (isPresent(index)) {\n return index + (isPresent(this.detailTemplate) ? 1 : 0);\n }\n return -1;\n }\n get showFilterMenu() {\n return !this.columnMenu && hasFilterMenu(this.filterable);\n }\n get showFilterRow() {\n return hasFilterRow(this.filterable);\n }\n showColumnMenu(column) {\n return this.columnMenu && column.columnMenu &&\n (this.columnMenuTemplate || column.columnMenuTemplates.length || hasItems(this.columnMenu, column));\n }\n isFilterable(column) {\n return !isNullOrEmptyString(column.field) && column.filterable === true;\n }\n canDrop(draggable, target) {\n return this.reorderable && rules({ draggable, target });\n }\n shouldActivate(column) {\n const canReorder = this.reorderable && column.reorderable;\n if (!canReorder && !isColumnComponent(column)) {\n return false;\n }\n const groupable = this.groupable && isColumnComponent(column) && column.groupable !== false;\n return groupable || canReorder;\n }\n isSortable(column) {\n return !isNullOrEmptyString(column.field)\n && isTruthy(this.sortable) && isTruthy(column.sortable);\n }\n isCheckboxColumn(column) {\n return isCheckboxColumn(column) && !column.templateRef;\n }\n trackByIndex(index, _item) {\n return index;\n }\n addStickyStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return Object.assign(Object.assign({}, column.style), stickyStyles);\n }\n toggleDirection(field, allowUnsort, initialDirection) {\n const descriptor = this.sortDescriptor(field);\n const [first, second] = directions(initialDirection);\n let dir = first;\n if (descriptor.dir === first) {\n dir = second;\n }\n else if (descriptor.dir === second && allowUnsort) {\n dir = undefined;\n }\n return { dir, field };\n }\n columnsForLevel(level) {\n const columns = this.columns ? this.columns.filter(column => column.level === level) : [];\n return sortColumns(columnsToRender(columns));\n }\n isColumnGroupComponent(column) {\n return isColumnGroupComponent(column);\n }\n get columnLevels() {\n return new Array((this.totalColumnLevels || 0) + 1);\n }\n sortDescriptor(field) {\n return this.sort.find(item => item.field === field) || { field };\n }\n get leafColumns() {\n return this._leafColumns;\n }\n attachTargets() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n this.targetSubscription = new Subscription();\n const enterStream = merge(...this.dropTargets.map(target => target.enter));\n const leaveStream = merge(...this.dropTargets.map(target => target.leave));\n const dropStream = merge(...this.dropTargets.map(target => target.drop));\n this.targetSubscription.add(enterStream.pipe(tap(({ target, draggable }) => {\n if (draggable.context.type === 'groupIndicator') {\n return;\n }\n const targetLocked = isTruthy(target.context.column.isLocked);\n const draggableLocked = isTruthy(draggable.context.column.isLocked);\n if (this.lockedColumnsCount > 0 || targetLocked || draggableLocked) {\n this.hint.toggleLock(targetLocked);\n }\n }), filter(({ draggable, target }) => this.canDrop(draggable, target)), switchMap(this.trackMove.bind(this, leaveStream, dropStream)), map((e) => mergeObjects(e, { before: this.calculateBefore(e), changeContainer: e.changeContainer })), map(this.normalizeTarget.bind(this)), tap(this.enter.bind(this)), switchMap((args) => dropStream.pipe(map(() => args), takeUntil(leaveStream.pipe(tap(this.leave.bind(this)))))))\n .subscribe(this.drop.bind(this)));\n }\n normalizeTarget(e) {\n let target = e.target;\n const parent = target.context.column.parent;\n if (parent && parent.isSpanColumn) {\n const arr = this.dropTargets.toArray();\n const firstSpan = arr.find(t => t.context.column.parent === parent);\n const index = arr.indexOf(firstSpan);\n const adjust = e.before ? 0 : parent.childColumns.length - 1;\n target = arr[index + adjust];\n }\n return mergeObjects(e, { target });\n }\n trackMove(leaveStream, dropStream, e) {\n const column = e.target.context.column;\n const levelColumns = this.columnsForLevel(column.level);\n const index = levelColumns.indexOf(column);\n const isFirst = (column.locked ? index === levelColumns.length - 1 : index === 0);\n const changed = e.draggable.context.column.isLocked !== column.isLocked;\n if (changed && isFirst) {\n return e.draggable.drag\n .pipe(takeUntil(leaveStream), takeUntil(dropStream), map(({ mouseEvent }) => mergeObjects({ changeContainer: true }, e, { mouseEvent })));\n }\n return of(mergeObjects({ changeContainer: changed }, e));\n }\n calculateBefore({ draggable, target, mouseEvent, changeContainer = false }) {\n const targetElement = target.element.nativeElement;\n let before = false;\n if (changeContainer) {\n const { left } = offset(targetElement);\n const halfWidth = targetElement.offsetWidth / 2;\n const middle = left + halfWidth;\n before = middle > mouseEvent.pageX;\n if (this.localization.rtl) {\n before = !before;\n }\n }\n else {\n before = isTargetBefore(draggable.element.nativeElement, targetElement);\n }\n return before;\n }\n enter({ target, before }) {\n this.hint.enable();\n if (this.localization.rtl) {\n before = !before;\n }\n this.cue.position(position(target.element.nativeElement, before));\n }\n leave() {\n this.hint.disable();\n this.cue.hide();\n }\n drop({ draggable, target, before, changeContainer }) {\n this.reorderService.reorder({\n before,\n changeContainer,\n source: draggable.context.column,\n target: target.context.column\n });\n }\n}\nHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, deps: [{ token: SinglePopupService }, { token: DragHintService }, { token: DropCueService }, { token: ColumnReorderService }, { token: IdService }, { token: SortService }, { token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderComponent, selector: \"[kendoGridHeader]\", inputs: { totalColumnLevels: \"totalColumnLevels\", columns: \"columns\", groups: \"groups\", detailTemplate: \"detailTemplate\", scrollable: \"scrollable\", filterable: \"filterable\", sort: \"sort\", filter: \"filter\", sortable: \"sortable\", groupable: \"groupable\", lockedColumnsCount: \"lockedColumnsCount\", resizable: \"resizable\", reorderable: \"reorderable\", columnMenu: \"columnMenu\", columnMenuTemplate: \"columnMenuTemplate\", totalColumnsCount: \"totalColumnsCount\", tabIndex: \"tabIndex\" }, host: { properties: { \"class.k-grid-header\": \"this.headerClass\" } }, viewQueries: [{ propertyName: \"dropTargets\", predicate: DropTargetDirective, descendants: true }, { propertyName: \"filterMenus\", predicate: FilterMenuComponent, descendants: true }, { propertyName: \"columnMenus\", predicate: ColumnMenuComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n\n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n {{sortOrder(getColumnComponent(column).field)}}\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n >\n \n `, isInline: true, styles: [\"\\n .k-column-resizer {\\n cursor: col-resize;\\n display: block;\\n height: 1000%;\\n position: absolute;\\n top: 0;\\n width: .5em;\\n }\\n \"], components: [{ type: FilterMenuComponent, selector: \"kendo-grid-filter-menu\", inputs: [\"column\", \"filter\", \"tabIndex\"] }, { type: ColumnMenuComponent, selector: \"kendo-grid-column-menu\", inputs: [\"standalone\", \"column\", \"settings\", \"sort\", \"filter\", \"sortable\", \"columnMenuTemplate\", \"tabIndex\"] }, { type: FilterRowComponent, selector: \"[kendoGridFilterRow]\", inputs: [\"columns\", \"filter\", \"groups\", \"detailTemplate\", \"logicalRowIndex\", \"lockedColumnsCount\"] }], directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: [\"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"dataRowIndex\", \"dataItem\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: DropTargetDirective, selector: \"[kendoDropTarget]\", inputs: [\"context\"], outputs: [\"enter\", \"leave\", \"drop\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: DraggableColumnDirective, selector: \"[kendoDraggableColumn]\", inputs: [\"context\", \"enableDrag\"], outputs: [\"drag\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: SelectAllCheckboxDirective, selector: \"[kendoGridSelectAllCheckbox]\", inputs: [\"state\"], outputs: [\"selectAllChange\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: ColumnHandleDirective, selector: \"[kendoGridColumnHandle]\", inputs: [\"columns\", \"column\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridHeader]',\n styles: [`\n .k-column-resizer {\n cursor: col-resize;\n display: block;\n height: 1000%;\n position: absolute;\n top: 0;\n width: .5em;\n }\n `],\n template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n\n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n {{sortOrder(getColumnComponent(column).field)}}\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n {{column.displayTitle}}\n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n >\n \n `\n }]\n }], ctorParameters: function () { return [{ type: SinglePopupService }, { type: DragHintService }, { type: DropCueService }, { type: ColumnReorderService }, { type: IdService }, { type: SortService }, { type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { totalColumnLevels: [{\n type: Input\n }], columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], sortable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], resizable: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], columnMenuTemplate: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], headerClass: [{\n type: HostBinding,\n args: ['class.k-grid-header']\n }], dropTargets: [{\n type: ViewChildren,\n args: [DropTargetDirective]\n }], filterMenus: [{\n type: ViewChildren,\n args: [FilterMenuComponent]\n }], columnMenus: [{\n type: ViewChildren,\n args: [ColumnMenuComponent]\n }] } });\n\n/**\n * @hidden\n */\nconst update = (arr, idx, value) => ([\n ...arr.slice(0, idx + 1),\n ...(arr.slice(idx + 1).map(x => x + value))\n]);\n/**\n * @hidden\n */\nclass RowHeightService {\n constructor(total = 0, rowHeight, detailRowHeight) {\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n let agg = 0;\n for (let idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n height(rowIndex) {\n return this.heights[rowIndex];\n }\n expandDetail(rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n }\n collapseDetail(rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n }\n isExpanded(rowIndex) {\n return this.height(rowIndex) > this.rowHeight;\n }\n index(position) {\n if (position < 0) {\n return undefined;\n }\n const result = this.offsets.reduce((prev, current, idx) => {\n if (prev !== undefined) {\n return prev;\n }\n else if (current === position) {\n return idx;\n }\n else if (current > position) {\n return idx - 1;\n }\n return undefined;\n }, undefined);\n return result === undefined ? this.total - 1 : result;\n }\n offset(rowIndex) {\n return this.offsets[rowIndex];\n }\n totalHeight() {\n return this.heights.reduce((prev, curr) => prev + curr, 0);\n }\n updateRowHeight(rowIndex, value) {\n if (this.total > 0) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n }\n }\n}\n\n/**\n * @hidden\n */\nclass ScrollAction {\n constructor(offset) {\n this.offset = offset;\n }\n}\n/**\n * @hidden\n */\nclass PageAction {\n constructor(skip, take) {\n this.skip = skip;\n this.take = take;\n }\n}\n/**\n * @hidden\n */\nclass ScrollBottomAction {\n}\nconst SCROLL_BOTTOM_THRESHOLD = 2;\n/**\n * @hidden\n */\nclass ScrollerService {\n constructor(scrollObservable) {\n this.scrollObservable = scrollObservable;\n this.firstLoaded = 0;\n }\n create(rowHeightService, skip, take, total) {\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScrollTop = 0;\n const subject = new BehaviorSubject(new ScrollAction(this.rowHeightService.offset(skip)));\n this.subscription = Observable.create(observer => {\n this.unsubscribe();\n this.scrollSubscription = this.scrollObservable.subscribe(x => this.onScroll(x, observer));\n }).subscribe(x => subject.next(x));\n return subject;\n }\n destroy() {\n this.unsubscribe();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n onScroll({ scrollTop, offsetHeight, scrollHeight, clientHeight }, observer) {\n if (this.lastScrollTop === scrollTop) {\n return;\n }\n const up = this.lastScrollTop >= scrollTop;\n this.lastScrollTop = scrollTop;\n let firstItemIndex = this.rowHeightService.index(scrollTop);\n let firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n const lastItemIndex = this.rowHeightService.index(scrollTop + offsetHeight);\n if (!up) {\n if (lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n const overflow = (firstItemIndex + this.take) - this.total;\n if (overflow > 0) {\n firstItemIndex = firstItemIndex - overflow;\n firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n }\n this.firstLoaded = firstItemIndex;\n observer.next(new ScrollAction(firstItemOffset));\n let nextTake = this.firstLoaded + this.take;\n this.lastLoaded = Math.min(nextTake, this.total);\n nextTake = nextTake > this.total ? this.total - this.firstLoaded : this.take;\n observer.next(new PageAction(this.firstLoaded, this.take));\n }\n else {\n const atBottom = scrollHeight - clientHeight - scrollTop < SCROLL_BOTTOM_THRESHOLD;\n if (atBottom) {\n observer.next(new ScrollBottomAction());\n }\n }\n }\n if (up && firstItemIndex < this.firstLoaded) {\n const nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = Math.max(firstItemIndex - nonVisibleBuffer, 0);\n observer.next(new ScrollAction(this.rowHeightService.offset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded, this.take));\n }\n }\n unsubscribe() {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n this.scrollSubscription = undefined;\n }\n }\n}\n\n/**\n * @hidden\n */\nconst NON_DATA_CELL_CLASSES = 'k-hierarchy-cell k-detail-cell k-group-cell';\n/**\n * @hidden\n */\nconst NON_DATA_ROW_CLASSES = 'k-grouping-row k-group-footer k-detail-row k-grid-norecords';\n/**\n * @hidden\n */\nconst IGNORE_TARGET_CLASSSES = 'k-icon';\n/**\n * @hidden\n */\nconst IGNORE_CONTAINER_CLASSES = 'k-grid k-grid-ignore-click';\n\n/**\n * Represents the command columns of the Grid. You have to define the content of the\n * column inside an `` tag. The template context is set to the current\n * data item. For more information and examples on using the passed fields\n * and the command directives, refer to the article on\n * [editing the Grid in Angular Reactive Forms]({% slug editing_reactive_forms_grid %}).\n *\n * The following additional fields are passed:\n * - `columnIndex`—The current column index.\n * - `rowIndex`—The current data row index. If inside a new item row, `rowIndex`is `-1`.\n * - `dataItem`—The current data item.\n * - `column`—The current column instance.\n * - `isNew`—The state of the current item.\n *\n * Usually, the template contains CRUD command directives such as:\n * - [EditCommandDirective]({% slug api_grid_editcommanddirective %})\n * - [RemoveCommandDirective]({% slug api_grid_removecommanddirective %})\n * - [CancelCommandDirective]({% slug api_grid_cancelcommanddirective %})\n * - [SaveCommandDirective]({% slug api_grid_savecommanddirective %})\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass CommandColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n}\nCommandColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CommandColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCommandColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CommandColumnComponent, selector: \"kendo-grid-command-column\", providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CommandColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: CellTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CommandColumnComponent)\n }\n ],\n selector: 'kendo-grid-command-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the row-selection checkbox of the Grid. The directive expects the\n * index of the current row as an input parameter. Inside the\n * [CheckboxColumnComponent]({% slug api_grid_checkboxcolumncomponent %}), apply the\n * directive to an `input` element. When the user clicks the checkbox that is associated\n * with the directive, a [selectionChange]({% slug api_grid_gridcomponent %}#toc-selectionChange)\n * event is triggered.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Select row \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass SelectionCheckboxDirective {\n constructor(selectionService, el, renderer, ngZone) {\n this.selectionService = selectionService;\n this.el = el;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.type = 'checkbox';\n this.ngZone.runOutsideAngular(() => {\n this.destroyClick = this.renderer.listen(this.el.nativeElement, 'click', this.onClick.bind(this));\n this.destroyKeyDown = this.renderer.listen(this.el.nativeElement, 'keydown', this.onKeyDown.bind(this));\n });\n }\n ngAfterContentChecked() {\n this.setCheckedState();\n }\n ngOnDestroy() {\n if (this.destroyClick) {\n this.destroyClick();\n }\n if (this.destroyKeyDown) {\n this.destroyKeyDown();\n }\n }\n onClick() {\n if (this.selectionService.options.enabled) {\n this.ngZone.run(() => {\n const ev = this.selectionService.toggleByIndex(this.itemIndex);\n ev.ctrlKey = true;\n ev.shiftKey = false;\n this.selectionService.changes.emit(ev);\n });\n }\n }\n onKeyDown(e) {\n if (e.keyCode === Keys.Enter) {\n this.onClick();\n }\n }\n /*\n * @hidden\n */\n setCheckedState() {\n this.renderer.setProperty(this.el.nativeElement, 'checked', this.selectionService.isSelected(this.itemIndex));\n }\n}\nSelectionCheckboxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionCheckboxDirective, deps: [{ token: SelectionService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nSelectionCheckboxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectionCheckboxDirective, selector: \"[kendoGridSelectionCheckbox]\", inputs: { itemIndex: [\"kendoGridSelectionCheckbox\", \"itemIndex\"] }, host: { properties: { \"attr.type\": \"this.type\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionCheckboxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectionCheckbox]'\n }]\n }], ctorParameters: function () { return [{ type: SelectionService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { itemIndex: [{\n type: Input,\n args: ['kendoGridSelectionCheckbox']\n }], type: [{\n type: HostBinding,\n args: ['attr.type']\n }] } });\n\nconst FORMAT_REGEX = /\\{\\d+:?/;\n/**\n * @hidden\n */\nclass FieldAccessorPipe {\n constructor(intlService) {\n this.intlService = intlService;\n }\n transform(dataItem, fieldName, format) {\n if (!isNullOrEmptyString(fieldName)) {\n const value = getter(fieldName)(dataItem);\n if (!isNullOrEmptyString(format)) {\n return this.formatValue(format, value);\n }\n return value;\n }\n return dataItem;\n }\n formatValue(format, value) {\n const intl = this.intlService;\n if (isString(format) && format.match(FORMAT_REGEX)) {\n return intl.format(format, value);\n }\n return intl.toString(value, format);\n }\n}\nFieldAccessorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FieldAccessorPipe, deps: [{ token: i1$5.IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nFieldAccessorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FieldAccessorPipe, name: \"valueOf\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FieldAccessorPipe, decorators: [{\n type: Pipe,\n args: [{\n // eslint-disable-next-line @angular-eslint/pipe-prefix\n name: 'valueOf',\n pure: false\n }]\n }], ctorParameters: function () { return [{ type: i1$5.IntlService }]; } });\n\n/**\n * @hidden\n */\nclass CellComponent {\n constructor(editService, idService, localizationService, cellContext) {\n this.editService = editService;\n this.idService = idService;\n this.localizationService = localizationService;\n this.cellContext = cellContext;\n this.isNew = false;\n this.isLoading = false;\n this.isVirtual = false;\n this._templateContext = {};\n this._editTemplateContext = {};\n }\n get commandCellClass() {\n return this.isCommand(this.column);\n }\n set rowIndex(index) {\n this._rowIndex = index;\n this.updateCellContext();\n }\n get rowIndex() {\n return this._rowIndex;\n }\n get isEdited() {\n if (!(this.editService.isEditing() || this.isNew) || !this.isColumnEditable) {\n return false;\n }\n const editContext = this.editService.columnContext(this.rowIndex, this.column);\n return this.isFieldEditable(editContext, this.column);\n }\n get showLoading() {\n return this.isVirtual && this.isLoading;\n }\n get formGroup() {\n return this.editService.context(this.rowIndex).group;\n }\n get templateContext() {\n return this._templateContext;\n }\n get editTemplateContext() {\n this._editTemplateContext.$implicit = this.formGroup;\n this._editTemplateContext.isNew = this.isNew;\n this._editTemplateContext.column = this.column;\n this._editTemplateContext.dataItem = this.dataItem;\n this._editTemplateContext.formGroup = this.formGroup;\n this._editTemplateContext.rowIndex = this.rowIndex;\n return this._editTemplateContext;\n }\n get format() {\n if (isColumnComponent(this.column) && !isNullOrEmptyString(this.column.format)) {\n return extractFormat(this.column.format);\n }\n return undefined;\n }\n get isBoundColumn() {\n return this.column.field && !this.column.templateRef;\n }\n get isCheckboxColumn() {\n return isCheckboxColumn(this.column) && !this.column.templateRef;\n }\n get selectionCheckboxId() {\n return this.idService.selectionCheckboxId(this.rowIndex);\n }\n get selectionCheckboxLabel() {\n return this.localizationService.get('selectionCheckboxLabel');\n }\n get isSpanColumn() {\n return isSpanColumn(this.column) && !this.column.templateRef;\n }\n get childColumns() {\n return columnsToRender([this.column]);\n }\n get isColumnEditable() {\n if (!this.column || this.isCommand(this.column)) {\n return false;\n }\n return this.column.editable !== false;\n }\n ngDoCheck() {\n this.updateCellContext();\n }\n ngOnChanges(_changes) {\n this.updateTemplateContext();\n }\n ngAfterContentChecked() {\n this.updateTemplateContext();\n }\n isCommand(column) {\n return column instanceof CommandColumnComponent;\n }\n isFieldEditable(editContext, column) {\n if (!isPresent(editContext)) {\n return false;\n }\n if (isPresent(column.editTemplate)) {\n return true;\n }\n return isPresent(editContext.group) && isPresent(editContext.group.get(column.field));\n }\n updateCellContext() {\n if (this.cellContext) {\n this.cellContext.rowIndex = this._rowIndex;\n }\n }\n updateTemplateContext() {\n if (!this.column.templateRef) {\n return;\n }\n const context = this._templateContext;\n context.isNew = this.isNew;\n context.column = this.column;\n context.dataItem = this.dataItem;\n context.rowIndex = this.rowIndex;\n context.columnIndex = this.columnIndex;\n context.$implicit = this.dataItem;\n }\n}\nCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellComponent, deps: [{ token: EditService }, { token: IdService }, { token: i1.LocalizationService }, { token: CELL_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellComponent, selector: \"[kendoGridCell]\", inputs: { column: \"column\", columnIndex: \"columnIndex\", isNew: \"isNew\", isLoading: \"isLoading\", isVirtual: \"isVirtual\", loadingTemplate: \"loadingTemplate\", rowIndex: \"rowIndex\", dataItem: \"dataItem\" }, host: { properties: { \"class.k-command-cell\": \"this.commandCellClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n \n \n {{ dataItem | valueOf: column.field: column.format}}\n \n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n\n \n\n \n\n \n \n \n \n `, isInline: true, components: [{ type: i4$1.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }, { type: i4$3.DatePickerComponent, selector: \"kendo-datepicker\", inputs: [\"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\", \"focusableId\", \"activeView\", \"bottomView\", \"topView\", \"calendarType\", \"animateCalendarNavigation\", \"disabled\", \"readonly\", \"readOnlyInput\", \"popupSettings\", \"navigation\", \"min\", \"max\", \"incompleteDateValidation\", \"focusedDate\", \"value\", \"format\", \"twoDigitYearMax\", \"formatPlaceholder\", \"placeholder\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"title\", \"rangeValidation\", \"disabledDatesValidation\", \"weekNumber\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendo-datepicker\"] }], directives: [{ type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoGridFocusable],\\n [kendoGridEditCommand],\\n [kendoGridRemoveCommand],\\n [kendoGridSaveCommand],\\n [kendoGridCancelCommand],\\n [kendoGridSelectionCheckbox]\\n \", inputs: [\"kendoGridFocusable\"] }, { type: SelectionCheckboxDirective, selector: \"[kendoGridSelectionCheckbox]\", inputs: [\"kendoGridSelectionCheckbox\"] }, { type: i4$2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4$2.FormControlDirective, selector: \"[formControl]\", inputs: [\"disabled\", \"formControl\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { type: i4$2.CheckboxControlValueAccessor, selector: \"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]\" }, { type: i4.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }, { type: i4$2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }], pipes: { \"valueOf\": FieldAccessorPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridCell]',\n template: `\n \n \n \n \n \n \n \n {{ dataItem | valueOf: childColumn.field: childColumn.format}}\n \n \n {{ dataItem | valueOf: column.field: column.format}}\n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n\n \n\n \n\n \n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: IdService }, { type: i1.LocalizationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CELL_CONTEXT]\n }] }]; }, propDecorators: { commandCellClass: [{\n type: HostBinding,\n args: ['class.k-command-cell']\n }], column: [{\n type: Input\n }], columnIndex: [{\n type: Input\n }], isNew: [{\n type: Input\n }], isLoading: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], rowIndex: [{\n type: Input\n }], dataItem: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass GroupHeaderComponent {\n constructor(groupsService, groupInfoService, localization) {\n this.groupsService = groupsService;\n this.groupInfoService = groupInfoService;\n this.localization = localization;\n this.skipGroupDecoration = false;\n this.hasDetails = false;\n this.totalColumnsCount = 0;\n this.groups = [];\n this.isExpanded = false;\n }\n get groupItemClass() {\n return true;\n }\n ngDoCheck() {\n const groupArgs = {\n group: this.item.data,\n groupIndex: this.item.index,\n parentGroup: getGroupRowArgs(this.item.parentGroup)\n };\n this.isExpanded = this.groupsService.isExpanded(groupArgs);\n }\n prefixGroupCell(item) {\n return new Array(item.level);\n }\n toggleGroup(item) {\n this.groupsService.toggleRow(item);\n return false;\n }\n groupSpan(item) {\n const groupCount = (this.groups || []).length;\n const detailOffset = this.hasDetails ? 1 : 0;\n if (this.hasGroupHeaderColumn) {\n return groupCount + 1 + detailOffset - item.level;\n }\n let columnCount = columnsSpan(this.columns);\n if (this.skipGroupDecoration) {\n return columnCount;\n }\n return groupCount + columnCount + detailOffset - item.level;\n }\n logicalColSpan() {\n return this.skipGroupDecoration ? 1 : this.totalColumnsCount;\n }\n ariaRole() {\n if (this.skipGroupDecoration) {\n return 'presentation';\n }\n return 'gridcell';\n }\n formatForGroup(item) {\n return this.groupInfoService.formatForGroup(item);\n }\n groupTitle(item) {\n return this.groupInfoService.groupTitle(item);\n }\n groupHeaderTemplate(item) {\n return this.groupInfoService.groupHeaderTemplate(item);\n }\n get groupButtonTitle() {\n const messageKey = this.isExpanded ? 'groupCollapse' : 'groupExpand';\n return this.localization.get(messageKey);\n }\n}\nGroupHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderComponent, deps: [{ token: GroupsService }, { token: GroupInfoService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGroupHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupHeaderComponent, selector: \"[kendoGridGroupHeader]\", inputs: { rowIndex: \"rowIndex\", logicalRowIndex: \"logicalRowIndex\", item: \"item\", skipGroupDecoration: \"skipGroupDecoration\", hasDetails: \"hasDetails\", totalColumnsCount: \"totalColumnsCount\", hasGroupHeaderColumn: \"hasGroupHeaderColumn\", groupHeaderColumns: \"groupHeaderColumns\", columns: \"columns\", groups: \"groups\" }, host: { properties: { \"class.k-grouping-row\": \"this.groupItemClass\" } }, ngImport: i0, template: `\n \n \n \n \n

\n \n \n \n \n {{groupTitle(item)}}: {{item.data | valueOf:\"value\": formatForGroup(item)}}\n \n \n \n \n

\n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], pipes: { \"valueOf\": FieldAccessorPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridGroupHeader]',\n template: `\n \n \n \n \n

\n \n \n \n \n {{groupTitle(item)}}: {{item.data | valueOf:\"value\": formatForGroup(item)}}\n \n \n \n \n

\n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: GroupsService }, { type: GroupInfoService }, { type: i1.LocalizationService }]; }, propDecorators: { rowIndex: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], item: [{\n type: Input\n }], skipGroupDecoration: [{\n type: Input\n }], hasDetails: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], hasGroupHeaderColumn: [{\n type: Input\n }], groupHeaderColumns: [{\n type: Input\n }], columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], groupItemClass: [{\n type: HostBinding,\n args: ['class.k-grouping-row']\n }] } });\n\nconst columnCellIndex = (cell, cells) => {\n let cellIndex = 0;\n for (let idx = 0; idx < cells.length; idx++) {\n if (cells[idx] === cell) {\n return cellIndex;\n }\n if (!hasClasses(cells[idx], 'k-hierarchy-cell k-group-cell')) {\n cellIndex++;\n }\n }\n};\n/**\n * @hidden\n */\nclass TableBodyComponent {\n constructor(detailsService, groupsService, changeNotification, editService, localization, ngZone, renderer, element, domEvents, selectionService, cellSelectionService, columnInfoService, navigationService) {\n this.detailsService = detailsService;\n this.groupsService = groupsService;\n this.changeNotification = changeNotification;\n this.editService = editService;\n this.localization = localization;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.element = element;\n this.domEvents = domEvents;\n this.selectionService = selectionService;\n this.cellSelectionService = cellSelectionService;\n this.columnInfoService = columnInfoService;\n this.navigationService = navigationService;\n this.columns = [];\n this.groups = [];\n this.skip = 0;\n this.noRecordsText = this.localization.get('noRecords');\n this.isLocked = false;\n this.skipGroupDecoration = false;\n this.showGroupFooters = false;\n this.lockedColumnsCount = 0;\n this.totalColumnsCount = 0;\n this.trackBy = defaultTrackBy;\n this.rowClass = () => null;\n this.cellKeydownSubscription = this.navigationService.cellKeydown.subscribe((args) => this.cellKeydownHandler(args));\n this.trackByWrapper = this.trackByWrapper.bind(this);\n this.trackByColumns = this.trackByColumns.bind(this);\n }\n get newDataItem() {\n return this.editService.newDataItem;\n }\n // Number of unlocked columns in the next table, if any\n get unlockedColumnsCount() {\n return this.totalColumnsCount - this.lockedColumnsCount - (this.allColumns || this.columns).length;\n }\n isAriaSelected(item, column) {\n return this.cellSelectionService.isCellSelected(item, column) ||\n this.isRowSelected(item) ? 'true' : 'false';\n }\n toggleRow(index, dataItem) {\n this.detailsService.toggleRow(index, dataItem);\n return false;\n }\n isExpanded(viewItem) {\n return this.detailsService.isExpanded(viewItem.index, viewItem.data);\n }\n detailButtonStyles(viewItem) {\n const expanded = this.isExpanded(viewItem);\n return expanded ? 'k-i-minus' : 'k-i-plus';\n }\n detailButtonTitle(viewItem) {\n const messageKey = this.isExpanded(viewItem) ? 'detailCollapse' : 'detailExpand';\n return this.localization.get(messageKey);\n }\n isGroup(item) {\n return item.type === 'group';\n }\n isDataItem(item) {\n return !this.isGroup(item) && !this.isFooter(item);\n }\n isFooter(item) {\n return item.type === 'footer';\n }\n isFooterItemInExpandedGroup(item) {\n const footerItem = { data: item.data, index: item.groupIndex, parentGroup: item.group.parentGroup };\n return this.isInExpandedGroup(footerItem);\n }\n isDataItemInExpandedGroup(item) {\n const dataItem = { data: item.group.data, index: item.groupIndex, parentGroup: item.group.parentGroup };\n return this.isInExpandedGroup(dataItem);\n }\n isInExpandedGroup(item) {\n return this.groupsService.isInExpandedGroup(item);\n }\n isParentGroupExpanded(item) {\n return this.groupsService.isInExpandedGroup(item.parentGroup);\n }\n isOdd(item) {\n return item.index % 2 !== 0;\n }\n isSelectable() {\n return this.selectable && this.selectable.enabled !== false;\n }\n isRowSelected(item) {\n return this.selectionService.isSelected(item.index);\n }\n trackByWrapper(index, item) {\n if (item.type === 'data') {\n item.isEditing = this.editService.hasEdited(item.index);\n }\n return this.trackBy(index, item);\n }\n trackByColumns(index, item) {\n return this.virtualColumns ? index : item;\n }\n ngDoCheck() {\n if (this.hasGroupHeaderColumn) {\n this.groupHeaderColumns = columnsToRender(this.skipGroupDecoration ? this.columns : this.columns.toArray().slice(1));\n }\n else {\n this.groupHeaderColumns = [];\n }\n if (this.isLocked) {\n this.groupHeaderSlaveCellsCount =\n this.hasGroupHeaderColumn ? this.columnsContainer.nonLockedColumnsToRender.length : 1;\n }\n else {\n this.groupHeaderSlaveCellsCount = 0;\n }\n }\n ngAfterViewChecked() {\n if (this.rowSticky) {\n this.applyStickyRowsStyling();\n }\n }\n ngOnChanges(changes) {\n if (isChanged$1('columns', changes, false)) {\n this.changeNotification.notify();\n }\n }\n logicalRowIndex(rowIndex) {\n let pos = this.skip + rowIndex;\n if (this.hasDetailTemplate) {\n pos *= 2;\n }\n const absoluteRowIndex = 1 + pos;\n const addRowOffset = this.editService.hasNewItem ? 1 : 0;\n const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;\n const headerRowCount = this.columnInfoService.totalLevels + filterRowOffset + addRowOffset;\n return absoluteRowIndex + headerRowCount;\n }\n addRowLogicalIndex() {\n return this.columnInfoService.totalLevels + 1 +\n (hasFilterRow(this.filterable) ? 1 : 0);\n }\n logicalColIndex(column) {\n if (!isPresent(column.leafIndex)) {\n return -1;\n }\n return column.leafIndex + (this.hasDetailTemplate ? 1 : 0);\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n const clickHandler = this.clickHandler.bind(this);\n const mousedownSubscription = this.renderer.listen(this.element.nativeElement, 'mousedown', clickHandler);\n const mouseupSubscription = this.renderer.listen(this.element.nativeElement, 'mouseup', clickHandler);\n const clickSubscription = this.renderer.listen(this.element.nativeElement, 'click', clickHandler);\n const contextmenuSubscription = this.renderer.listen(this.element.nativeElement, 'contextmenu', clickHandler);\n const touchstartSubscription = this.renderer.listen(this.element.nativeElement, 'touchstart', clickHandler);\n const touchendSubscription = this.renderer.listen(this.element.nativeElement, 'touchend', clickHandler);\n this.clickSubscription = () => {\n mousedownSubscription();\n mouseupSubscription();\n clickSubscription();\n contextmenuSubscription();\n };\n this.touchSubscription = () => {\n touchstartSubscription();\n touchendSubscription();\n };\n });\n let originalNoRecordText = this.localization.get('noRecords');\n this.localization.changes.subscribe(() => {\n if (this.noRecordsText === originalNoRecordText) {\n this.noRecordsText = this.localization.get('noRecords');\n originalNoRecordText = this.noRecordsText;\n }\n });\n }\n ngOnDestroy() {\n if (this.clickSubscription) {\n this.clickSubscription();\n }\n if (this.touchSubscription) {\n this.touchSubscription();\n }\n this.cellKeydownSubscription.unsubscribe();\n clearTimeout(this.clickTimeout);\n }\n isEditingCell(index, column) {\n return this.editService.isEditing() && this.editService.isEditedColumn(index, column);\n }\n isEditingRow(index) {\n return this.editService.isEditing() && this.editService.hasEdited(index);\n }\n get hasGroupHeaderColumn() {\n return this.columnsContainer.hasGroupHeaderColumn;\n }\n get columnsContainer() {\n return this.columnInfoService.columnsContainer;\n }\n get columnsSpan() {\n return columnsSpan(this.columns);\n }\n get allColumnsSpan() {\n return columnsSpan(this.allColumns || this.columns);\n }\n get colSpan() {\n return this.columnsSpan + this.groups.length + (this.hasDetailTemplate ? 1 : 0);\n }\n get footerColumns() {\n return this.isLocked ? this.columnsContainer.lockedColumnsToRender : this.columnsContainer.nonLockedColumnsToRender;\n }\n showGroupHeader(item) {\n return !item.data.skipHeader;\n }\n addStickyColumnStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return Object.assign(Object.assign({}, column.style), stickyStyles);\n }\n resizeHandler() {\n this.applyStickyRowsStyling();\n }\n get hasDetailTemplate() {\n return isPresent(this.detailTemplate);\n }\n clickHandler(eventArg) {\n const element = this.element.nativeElement;\n const target = this.eventTarget(eventArg);\n let cell, row, body, gridElement;\n let currentTarget = target;\n do {\n cell = closest(currentTarget, matchesNodeName('td'));\n row = closest(cell, matchesNodeName('tr'));\n body = closest(row, matchesNodeName('tbody'));\n currentTarget = body;\n gridElement = closestInScope(currentTarget, matchesClasses('k-grid'), element);\n } while (body && body !== element && !gridElement);\n if (cell && !hasClasses(cell, NON_DATA_CELL_CLASSES) &&\n !hasClasses(row, NON_DATA_ROW_CLASSES) &&\n body === element && !gridElement) {\n this.editService.preventCellClose();\n const focusable = target !== cell && isFocusableWithTabKey(target, false);\n if (!focusable && !matchesNodeName('label')(target) && !hasClasses(target, IGNORE_TARGET_CLASSSES) &&\n !closestInScope(target, matchesClasses(IGNORE_CONTAINER_CLASSES), cell)) {\n const args = this.cellClickArgs(cell, row, eventArg);\n if (eventArg.type === 'mousedown' || eventArg.type === 'touchstart') {\n this.domEvents.cellMousedown.emit(args);\n }\n else if (eventArg.type === 'mouseup' || eventArg.type === 'touchend') {\n this.domEvents.cellMouseup.emit(args);\n }\n else {\n if (args.isEditedColumn || !this.editService.closeCell(eventArg)) {\n if (eventArg.type === 'click') {\n this.clickTimeout = setTimeout(() => {\n this.emitCellClick(args);\n }, 0);\n }\n else {\n this.emitCellClick(args);\n }\n }\n }\n }\n }\n }\n emitCellClick(args) {\n this.domEvents.cellClick.emit(Object.assign(args, {\n isEdited: args.isEditedRow || args.isEditedColumn\n }));\n }\n cellKeydownHandler(args) {\n if (args.keyCode === Keys.Enter) {\n this.clickHandler(args);\n }\n }\n cellClickArgs(cell, row, eventArg) {\n const index = columnCellIndex(cell, row.cells);\n const column = this.columns.toArray()[index];\n const columnIndex = this.lockedColumnsCount + index;\n let rowIndex = row.getAttribute('data-kendo-grid-item-index');\n rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;\n const dataItem = rowIndex === -1 ? this.editService.newDataItem : this.data.at(rowIndex - this.skip);\n const isEditedColumn = this.editService.isEditedColumn(rowIndex, column);\n const isEditedRow = this.editService.isEdited(rowIndex);\n const type = eventArg.type === 'keydown' ? 'click' : eventArg.type;\n return {\n column: column,\n columnIndex: columnIndex,\n dataItem: dataItem,\n isEditedColumn: isEditedColumn,\n isEditedRow: isEditedRow,\n originalEvent: eventArg,\n rowIndex: rowIndex,\n type: type\n };\n }\n eventTarget(args) {\n if (args.type === 'touchend') {\n const touch = args.changedTouches[0];\n return document.elementFromPoint(touch.clientX, touch.clientY);\n }\n return args.target;\n }\n applyStickyRowsStyling() {\n const stickyRows = nodesToArray(this.element.nativeElement.querySelectorAll('.k-grid-row-sticky'));\n const length = stickyRows.length;\n if (length) {\n let accumulatedHeight = 0;\n const stickyRowsOffsets = [];\n stickyRows.forEach(row => {\n const rowHeight = row.getBoundingClientRect().height;\n stickyRowsOffsets.push({ accumulatedHeight, rowHeight });\n accumulatedHeight += rowHeight;\n });\n stickyRows.forEach((row, index) => {\n this.renderer.setStyle(row, 'top', `${stickyRowsOffsets[index].accumulatedHeight}px`);\n this.renderer.setStyle(row, 'bottom', `${accumulatedHeight - stickyRowsOffsets[index].accumulatedHeight - stickyRowsOffsets[index].rowHeight}px`);\n });\n }\n }\n}\nTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableBodyComponent, deps: [{ token: DetailsService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: EditService }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DomEventsService }, { token: SelectionService }, { token: CellSelectionService }, { token: ColumnInfoService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TableBodyComponent, selector: \"[kendoGridTableBody]\", inputs: { columns: \"columns\", allColumns: \"allColumns\", groups: \"groups\", detailTemplate: \"detailTemplate\", noRecordsTemplate: \"noRecordsTemplate\", data: \"data\", skip: \"skip\", selectable: \"selectable\", filterable: \"filterable\", noRecordsText: \"noRecordsText\", isLocked: \"isLocked\", isLoading: \"isLoading\", isVirtual: \"isVirtual\", cellLoadingTemplate: \"cellLoadingTemplate\", skipGroupDecoration: \"skipGroupDecoration\", showGroupFooters: \"showGroupFooters\", lockedColumnsCount: \"lockedColumnsCount\", totalColumnsCount: \"totalColumnsCount\", virtualColumns: \"virtualColumns\", trackBy: \"trackBy\", rowSticky: \"rowSticky\", rowClass: \"rowClass\" }, usesOnChanges: true, ngImport: i0, template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{noRecordsText}}\n \n \n \n\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"groupHeaderSlaveCellsCount\">\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n [class.k-grid-row-sticky]=\"rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false\"\n [ngClass]=\"rowClass({ dataItem: item.data, index: $any(item).index })\"\n [class.k-alt]=\"isOdd(item)\"\n [class.k-master-row]=\"detailTemplate?.templateRef\"\n [class.k-grid-edit-row]=\"isEditingRow($any(item).index)\"\n [attr.data-kendo-grid-item-index]=\"$any(item).index\"\n [class.k-state-selected]=\"isSelectable() && isRowSelected(item)\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: CellComponent, selector: \"[kendoGridCell]\", inputs: [\"column\", \"columnIndex\", \"isNew\", \"isLoading\", \"isVirtual\", \"loadingTemplate\", \"rowIndex\", \"dataItem\"] }, { type: GroupHeaderComponent, selector: \"[kendoGridGroupHeader]\", inputs: [\"rowIndex\", \"logicalRowIndex\", \"item\", \"skipGroupDecoration\", \"hasDetails\", \"totalColumnsCount\", \"hasGroupHeaderColumn\", \"groupHeaderColumns\", \"columns\", \"groups\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: [\"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"dataRowIndex\", \"dataItem\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableBodyComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridTableBody]',\n template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{noRecordsText}}\n \n \n \n\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"groupHeaderSlaveCellsCount\">\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\"\n [class.k-grid-row-sticky]=\"rowSticky ? rowSticky({ dataItem: item.data, index: $any(item).index }) : false\"\n [ngClass]=\"rowClass({ dataItem: item.data, index: $any(item).index })\"\n [class.k-alt]=\"isOdd(item)\"\n [class.k-master-row]=\"detailTemplate?.templateRef\"\n [class.k-grid-edit-row]=\"isEditingRow($any(item).index)\"\n [attr.data-kendo-grid-item-index]=\"$any(item).index\"\n [class.k-state-selected]=\"isSelectable() && isRowSelected(item)\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"unlockedColumnsCount\">\n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: DetailsService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: EditService }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: DomEventsService }, { type: SelectionService }, { type: CellSelectionService }, { type: ColumnInfoService }, { type: NavigationService }]; }, propDecorators: { columns: [{\n type: Input\n }], allColumns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], noRecordsTemplate: [{\n type: Input\n }], data: [{\n type: Input\n }], skip: [{\n type: Input\n }], selectable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], noRecordsText: [{\n type: Input\n }], isLocked: [{\n type: Input\n }], isLoading: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], cellLoadingTemplate: [{\n type: Input\n }], skipGroupDecoration: [{\n type: Input\n }], showGroupFooters: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], totalColumnsCount: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], rowClass: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst columnsToResize = ({ columns }) => Math.max(1, resizableColumns(columns).length);\n/**\n * @hidden\n */\nconst row = selector => element => element.querySelector(selector);\n/**\n * @hidden\n */\nconst headerRow = index => element => element.querySelectorAll('thead>tr')[index];\n/**\n * @hidden\n */\nconst cell = (index, selector = 'td') => element => element.querySelectorAll(`${selector}:not(.k-group-cell):not(.k-hierarchy-cell)`)[index];\n/**\n * @hidden\n */\nconst offsetWidth = element => element.offsetWidth;\n/**\n * @hidden\n */\nconst pipe = (...fns) => data => fns.reduce((state, fn) => state ? fn(state) : 0, data);\n/**\n * @hidden\n */\nclass TableDirective {\n constructor(element, renderer, service, zone, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.service = service;\n this.zone = zone;\n this.cdr = cdr;\n this.locked = false;\n this.firstResize = false;\n }\n get minWidth() {\n return this.firstResize ? 0 : null;\n }\n ngOnInit() {\n const obs = this.service\n .changes.pipe(filter(e => this.locked === e.locked));\n this.subscription = obs.pipe(filter(e => e.type === 'start'), tap(this.initState.bind(this)), map(columnsToResize), switchMap((take) => obs.pipe(filter(e => e.type === 'resizeTable'), map(e => e.delta), bufferCount(take)))).subscribe(this.resize.bind(this));\n this.autoFitSubscription = this.service\n .registerTable({\n autoFit: this.autoFitObservable.bind(this),\n locked: this.locked\n });\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.autoFitSubscription) {\n this.autoFitSubscription();\n this.autoFitSubscription = null;\n }\n }\n initState() {\n this.firstResize = true;\n if (!this.virtualColumns || this.locked) {\n this.originalWidth = offsetWidth(this.element.nativeElement);\n }\n }\n resize(deltas) {\n if (!this.virtualColumns || this.locked) {\n const delta = deltas.reduce((sum, item) => sum + item, 0);\n const width = this.originalWidth + delta;\n this.renderer.setStyle(this.element.nativeElement, 'width', width + 'px');\n }\n this.cdr.detectChanges();\n }\n autoFitObservable(columnInfo) {\n return Observable.create(observer => {\n this.zone.runOutsideAngular(() => {\n this.renderer.addClass(this.element.nativeElement, 'k-autofitting');\n this.cdr.detectChanges();\n const widths = columnInfo.map(this.measureColumn.bind(this));\n this.renderer.removeClass(this.element.nativeElement, 'k-autofitting');\n observer.next(widths);\n });\n });\n }\n measureColumn(info) {\n const dom = this.element.nativeElement;\n const header = pipe(headerRow(info.level), cell(info.headerIndex, 'th'), offsetWidth)(dom);\n let data = 0;\n if (!info.isParentSpan || (info.isParentSpan && info.isLastInSpan)) {\n data = pipe(row('tbody>tr:not(.k-grouping-row):not(.k-grid-norecords)'), cell(info.index), offsetWidth)(dom);\n }\n const footer = pipe(row('tfoot>tr'), cell(info.index), offsetWidth)(dom);\n return Math.max(header, data, footer);\n }\n}\nTableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ColumnResizingService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nTableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TableDirective, selector: \"table\", inputs: { locked: \"locked\", virtualColumns: \"virtualColumns\" }, host: { properties: { \"style.min-width\": \"this.minWidth\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TableDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'table'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ColumnResizingService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { locked: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], minWidth: [{\n type: HostBinding,\n args: ['style.min-width']\n }] } });\n\n/**\n * @hidden\n */\nclass ResizableContainerDirective {\n constructor(el, renderer, resizeService, ctx) {\n this.el = el;\n this.renderer = renderer;\n this.resizeService = resizeService;\n this.ctx = ctx;\n this.enabled = false;\n }\n set lockedWidth(value) {\n this._lockedWidth = value;\n if (this.enabled) {\n this.attachResize();\n this.resize();\n }\n }\n set kendoGridResizableContainer(enabled) {\n const refresh = enabled !== this.enabled;\n this.enabled = enabled;\n if (refresh) {\n this.attachResize();\n this.resize();\n }\n }\n ngOnDestroy() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n attachResize() {\n if (this.resizeSubscription && !this.enabled) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n if (!this.resizeSubscription && this.enabled) {\n this.resizeSubscription = this.resizeService.changes.subscribe(this.resize.bind(this));\n }\n }\n resize() {\n if (this.ctx.grid && this.ctx.grid.wrapper) {\n const containerElement = this.ctx.grid.wrapper.nativeElement;\n const width = Math.max(containerElement.clientWidth - this._lockedWidth, 0);\n if (this.enabled && width > 0) {\n this.renderer.setStyle(this.el.nativeElement, \"width\", width + \"px\");\n }\n else {\n this.renderer.setStyle(this.el.nativeElement, \"width\", \"\");\n }\n }\n }\n}\nResizableContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizableContainerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ResizeService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Directive });\nResizableContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizableContainerDirective, selector: \"[kendoGridResizableContainer]\", inputs: { lockedWidth: \"lockedWidth\", kendoGridResizableContainer: \"kendoGridResizableContainer\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizableContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridResizableContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ResizeService }, { type: ContextService }]; }, propDecorators: { lockedWidth: [{\n type: Input,\n args: ['lockedWidth']\n }], kendoGridResizableContainer: [{\n type: Input\n }] } });\n\nconst elementAt = (index, elements, elementOffset) => {\n for (let idx = 0, elementIdx = 0; idx < elements.length; idx++) {\n const offset = elementOffset(elements[idx]);\n if (elementIdx <= index && index <= elementIdx + offset - 1) {\n return elements[idx];\n }\n elementIdx += offset;\n }\n};\nconst rowAt = (index, rows) => elementAt(index, rows, row => row.hasAttribute('data-kendo-grid-item-index') ? 1 : 0);\nconst cellAt = (index, cells) => elementAt(index, cells, cell => !hasClasses(cell, NON_DATA_CELL_CLASSES) ? parseInt(cell.getAttribute('colSpan'), 10) || 1 : 0);\nconst EMPTY_OBJECT = {};\n/**\n * @hidden\n */\nconst SCROLLER_FACTORY_TOKEN = new InjectionToken('grid-scroll-service-factory');\n/**\n * @hidden\n */\nfunction DEFAULT_SCROLLER_FACTORY(observable) {\n return new ScrollerService(observable);\n}\nconst wheelDeltaY = (e) => {\n const deltaY = e.wheelDeltaY;\n if (e.wheelDelta && (deltaY === undefined || deltaY)) {\n return e.wheelDelta;\n }\n else if (e.detail && e.axis === e.VERTICAL_AXIS) {\n return (-e.detail) * 10;\n }\n return 0;\n};\nconst preventLockedScroll = (args, element) => {\n const delta = wheelDeltaY(args);\n const scrollTop = element.scrollTop;\n const allowScroll = (scrollTop === 0 && 0 < delta) || (element.scrollHeight <= element.offsetHeight + scrollTop && delta < 0);\n if (!allowScroll) {\n event.preventDefault();\n }\n};\nconst translateY = (renderer, value) => el => renderer.setStyle(el, \"transform\", `translateY(${value}px)`);\nconst maybeNativeElement = el => el ? el.nativeElement : null;\nconst hasScrollbar = (el, parent) => el.nativeElement.offsetWidth > parent.nativeElement.clientWidth;\nconst setHeight = renderer => ({ el, height }) => renderer.setStyle(el, \"height\", `${height}px`);\nconst bufferSize = 1;\n/**\n * @hidden\n */\nclass ListComponent {\n constructor(scrollerFactory, detailsService, changeNotification, suspendService, groupsService, ngZone, renderer, scrollSyncService, resizeService, editService, supportService, navigationService, scrollRequestService, localization, columnResizingService, changeDetector, pdfService, columnInfo) {\n this.changeNotification = changeNotification;\n this.suspendService = suspendService;\n this.groupsService = groupsService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.scrollSyncService = scrollSyncService;\n this.resizeService = resizeService;\n this.editService = editService;\n this.supportService = supportService;\n this.navigationService = navigationService;\n this.localization = localization;\n this.columnResizingService = columnResizingService;\n this.changeDetector = changeDetector;\n this.pdfService = pdfService;\n this.columnInfo = columnInfo;\n this.groups = [];\n this.skip = 0;\n this.columns = new ColumnsContainer(() => []);\n this.selectable = false;\n this.groupable = false;\n this.trackBy = defaultTrackBy;\n this.contentScroll = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.scrollBottom = new EventEmitter();\n this.columnsStartIdx = 0;\n this.resizeSensors = new QueryList();\n this.dispatcher = new Subject();\n this.containerScrollTop = 0;\n this.scrollLeft = 0;\n this.rtl = false;\n this.scroller = scrollerFactory(this.dispatcher);\n this.subscriptions = detailsService.changes.subscribe(x => this.detailExpand(x));\n this.subscriptions.add(scrollRequestService.requests.subscribe(x => this.scrollTo(x)));\n }\n get hostClass() {\n return true;\n }\n get hostRole() {\n return 'presentation';\n }\n get showFooter() {\n return this.groupable && this.groupable.showFooter;\n }\n get totalWidth() {\n if (this.virtualColumns && this.columns.unlockedWidth) {\n return this.columns.unlockedWidth;\n }\n }\n get lockedLeafColumns() {\n return this.columns.lockedLeafColumns;\n }\n get nonLockedLeafColumns() {\n return this.columns.nonLockedLeafColumns;\n }\n get nonLockedColumnsToRender() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.viewportColumns;\n }\n return this.nonLockedLeafColumns;\n }\n get leafColumns() {\n return this.columns.leafColumnsToRender;\n }\n get lockedWidth() {\n const groupCellsWidth = this.groups.length * GROUP_CELL_WIDTH;\n return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);\n }\n get nonLockedWidth() {\n if ((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) {\n return sumColumnWidths(expandColumns(this.nonLockedColumnsToRender.toArray()));\n }\n return undefined;\n }\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n ngOnInit() {\n this.init();\n this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowSync.bind(this)));\n this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowNavigationLocked.bind(this)));\n this.subscriptions.add(merge(this.columns.changes, this.resizeService.changes).subscribe(() => {\n if (this.virtualColumns) {\n this.ngZone.run(() => {\n this.updateViewportColumns();\n this.changeDetector.markForCheck();\n });\n }\n }));\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl));\n }\n ngOnChanges(changes) {\n const hasInitialSkip = changes.skip && changes.skip.firstChange && changes.skip.currentValue > 0;\n if (hasInitialSkip) {\n this.handleInitialScrollToSkip();\n }\n if (isChanged$1(\"skip\", changes) && !this.rebind) {\n this.skipScroll = true;\n this.container.nativeElement.scrollTop = this.rowHeightService.offset(this.skip);\n }\n if (anyChanged([\"total\", \"take\"], changes)) {\n this.init();\n }\n this.rebind = false;\n }\n ngDoCheck() {\n if (this.virtualColumns && (!this.viewportColumns || this.viewportWidthChange())) {\n this.updateViewportColumns();\n }\n }\n ngAfterViewInit() {\n if (this.skip && this.isVirtual) {\n this.container.nativeElement.scrollTop = this.rowHeightService.offset(this.skip);\n }\n this.resetNavigationViewport();\n this.attachContainerScroll();\n this.initResizeService();\n }\n ngAfterViewChecked() {\n const isLocked = this.isLocked;\n if (isLocked && !this.hasLockedContainer) {\n this.syncRowsHeight();\n }\n this.hasLockedContainer = isLocked;\n }\n syncRowsHeight() {\n if (this.lockedContainer) {\n syncRowsHeight(this.lockedTable.nativeElement, this.table.nativeElement);\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.resizeService) {\n this.resizeService.destroy();\n }\n this.cleanupScroller();\n }\n init() {\n if (this.suspendService.scroll) {\n return;\n }\n this.rowHeightService = new RowHeightService(this.total, this.rowHeight, this.detailRowHeight);\n this.totalHeight = this.rowHeightService.totalHeight();\n if (!isUniversal()) {\n this.ngZone.runOutsideAngular(this.createScroller.bind(this));\n }\n }\n lockedScroll() {\n if (!this.suspendService.scroll) {\n const lockedScrollTop = this.lockedContainer.nativeElement.scrollTop;\n if (lockedScrollTop !== this.containerScrollTop) {\n this.container.nativeElement.scrollTop = this.containerScrollTop = lockedScrollTop;\n }\n }\n }\n lockedMousewheel(args) {\n if (!args.ctrlKey) {\n preventLockedScroll(args, this.container.nativeElement);\n const scrollDelta = wheelDeltaY(args);\n this.container.nativeElement.scrollTop -= scrollDelta;\n }\n }\n lockedKeydown(args) {\n if (args.keyCode === Keys.PageDown || args.keyCode === Keys.PageUp) {\n const dir = args.keyCode === Keys.PageDown ? 1 : -1;\n const element = this.container.nativeElement;\n element.scrollTop += element.offsetHeight * dir * 0.8;\n args.preventDefault();\n }\n }\n detailExpand({ index, expand }) {\n if (expand) {\n this.rowHeightService.expandDetail(index);\n }\n else {\n this.rowHeightService.collapseDetail(index);\n }\n this.totalHeight = this.rowHeightService.totalHeight();\n this.resetNavigationViewport();\n }\n attachContainerScroll() {\n if (isUniversal()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(fromEvent(this.container.nativeElement, 'scroll').pipe(map((event) => event.target), filter(() => !this.suspendService.scroll), tap((target) => {\n this.onContainerScroll(target);\n this.resetNavigationViewport();\n if (this.virtualColumns) {\n this.handleColumnScroll();\n }\n const rowViewport = this.navigationService.viewport || EMPTY_OBJECT;\n const columnViewport = this.navigationService.columnViewport || EMPTY_OBJECT;\n this.contentScroll.emit({\n scrollLeft: target.scrollLeft,\n scrollTop: target.scrollTop,\n startRow: rowViewport.firstItemIndex,\n endRow: rowViewport.lastItemIndex,\n startColumn: columnViewport.firstItemIndex,\n endColumn: columnViewport.lastItemIndex\n });\n })).subscribe(this.dispatcher));\n });\n this.scrollSyncService.registerEmitter(this.container.nativeElement, \"body\");\n }\n createScroller() {\n this.cleanupScroller();\n const observable = this.scroller\n .create(this.rowHeightService, this.skip, this.take, this.total);\n this.skipScroll = false;\n this.scrollerSubscription = observable.pipe(filter((x) => x instanceof PageAction), filter(() => {\n const temp = this.skipScroll;\n this.skipScroll = false;\n return !temp;\n }), tap(() => this.rebind = true))\n .subscribe((x) => this.ngZone.run(() => this.pageChange.emit(x)));\n this.scrollerSubscription.add(observable.pipe(filter((x) => x instanceof ScrollAction))\n .subscribe(this.scroll.bind(this)));\n this.scrollerSubscription.add(observable.pipe(filter((x) => x instanceof ScrollBottomAction))\n .subscribe(() => this.scrollBottom.emit()));\n }\n scroll({ offset = 0 }) {\n if (this.isVirtual) {\n [\n maybeNativeElement(this.table),\n maybeNativeElement(this.lockedTable)\n ].filter(isPresent).forEach(translateY(this.renderer, offset));\n }\n this.resetNavigationViewport();\n }\n onContainerScroll({ scrollTop }) {\n this.containerScrollTop = scrollTop;\n if (this.lockedContainer) {\n this.lockedContainer.nativeElement.scrollTop = scrollTop;\n }\n }\n handleInitialScrollToSkip() {\n const shouldScroll = () => this.isVirtual && this.skip > 0 && this.total > 0;\n const sub = this.changeNotification.changes\n .pipe(filter(shouldScroll))\n .subscribe(_ => {\n this.scrollTo({ row: this.skip });\n sub.unsubscribe();\n });\n }\n handleRowSync() {\n const isLocked = () => isPresent(this.lockedContainer);\n const onStable = () => this.ngZone.onStable.asObservable().pipe(take(1));\n return merge(this.changeNotification.changes, this.groupsService.changes\n .pipe(filter(isLocked), switchMapTo(onStable())), this.editService.changed, this.resizeService.changes, this.columnResizingService.changes\n .pipe(filter(change => change.type === 'end')), this.supportService.changes)\n .pipe(tap(() => this.resetNavigationViewport()), filter(isLocked))\n .subscribe(() => {\n const scrollTop = this.container.nativeElement.scrollTop;\n const scrollLeft = this.container.nativeElement.scrollLeft;\n this.syncRowsHeight();\n this.syncContainerHeight();\n this.lockedContainer.nativeElement.scrollTop = this.container.nativeElement.scrollTop = scrollTop;\n // fixes scroll left position in IE when editing\n this.container.nativeElement.scrollLeft = scrollLeft;\n this.resizeSensors.forEach(sensor => sensor.acceptSize());\n });\n }\n handleRowNavigationLocked() {\n return this.navigationService.changes.pipe(filter(() => isPresent(this.lockedContainer)), delay(10)).subscribe((args) => {\n if (this.lockedLeafColumns.length <= args.prevColIndex && args.colIndex < this.lockedLeafColumns.length) {\n const cell = this.navigationService.activeCell;\n if (cell && cell.colIndex + cell.colSpan < args.prevColIndex) {\n this.container.nativeElement.scrollLeft = 0;\n }\n }\n });\n }\n scrollToVirtualRow(itemIndex) {\n if (isPresent(this.detailTemplate)) {\n itemIndex = Math.floor(itemIndex / 2);\n }\n const offset = this.rowHeightService.offset(itemIndex);\n this.container.nativeElement.scrollTop = offset;\n this.resetNavigationViewport();\n }\n scrollTo({ row, column }) {\n if (isNumber(row)) {\n if (this.isVirtual) {\n this.scrollToVirtualRow(row);\n }\n else {\n const element = rowAt(row, this.table.nativeElement.rows);\n if (element) {\n this.container.nativeElement.scrollTop = element.offsetTop;\n }\n }\n }\n if (isNumber(column)) {\n column -= this.lockedLeafColumns.length;\n if (this.virtualColumns) {\n const columns = this.columns.leafColumnsToRender;\n let offset = 0;\n for (let idx = 0; idx < column; idx++) {\n offset += columns[idx].width || 0;\n }\n const startOffset = this.lockedLeafColumns.length ? 0 : this.groups.length * GROUP_CELL_WIDTH + (this.detailTemplate && column > 0 ? GROUP_CELL_WIDTH : 0);\n this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(offset + startOffset);\n }\n else if (column === 0 && this.detailTemplate) {\n this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(0);\n }\n else {\n const firstRow = rowAt(0, this.table.nativeElement.rows);\n if (firstRow) {\n const element = cellAt(column, firstRow.cells);\n if (element) {\n this.container.nativeElement.scrollLeft = this.elementScrollLeft(element);\n }\n }\n }\n }\n }\n resetNavigationViewport() {\n if (!this.container || !this.navigationService.enabled ||\n !this.navigationService.needsViewport() || this.data.length === 0) {\n return;\n }\n const { scrollTop, offsetHeight } = this.container.nativeElement;\n const scrollBottom = scrollTop + offsetHeight;\n const firstItemIndex = this.rowHeightService.index(scrollTop);\n let lastItemIndex = this.rowHeightService.index(scrollBottom);\n const lastItemOffset = this.rowHeightService.offset(lastItemIndex);\n const lastItemOverflows = lastItemOffset + this.rowHeight > scrollBottom;\n if (lastItemIndex > 0 && lastItemOverflows) {\n lastItemIndex--;\n }\n let viewportStart = firstItemIndex;\n let viewportEnd = lastItemIndex;\n if (isPresent(this.detailTemplate)) {\n viewportStart *= 2;\n viewportEnd *= 2;\n const firstItemHeight = this.rowHeightService.offset(firstItemIndex);\n if (firstItemHeight + this.rowHeight < scrollTop) {\n viewportStart++;\n }\n const lastItemHeight = this.rowHeightService.height(lastItemIndex);\n const lastItemExpanded = this.rowHeightService.isExpanded(lastItemIndex);\n const lastItemDetailOverflows = lastItemOffset + lastItemHeight > scrollBottom;\n if (lastItemExpanded && !lastItemDetailOverflows) {\n viewportEnd++;\n }\n }\n this.navigationService.setViewport(viewportStart, viewportEnd);\n }\n cleanupScroller() {\n if (this.scrollerSubscription) {\n this.scrollerSubscription.unsubscribe();\n }\n if (this.scroller) {\n this.scroller.destroy();\n }\n }\n initResizeService() {\n this.resizeService.connect(merge(...this.resizeSensors.map(sensor => sensor.resize)));\n }\n syncContainerHeight() {\n [maybeNativeElement(this.lockedContainer)]\n .filter(isPresent)\n .map(el => {\n el.style.height = '';\n let height = this.container.nativeElement.offsetHeight;\n if (hasScrollbar(this.table, this.container)) {\n height -= this.supportService.scrollbarWidth;\n }\n return { el, height };\n })\n .forEach(setHeight(this.renderer));\n }\n updateViewportColumns(range) {\n const columns = this.columns.nonLockedLeafColumns.toArray();\n let { startIdx, endIdx, offset } = range || this.calculateViewportColumns();\n const start = Math.max(0, startIdx - bufferSize);\n const end = Math.min(endIdx + bufferSize, columns.length - 1);\n if (start < startIdx) {\n for (let idx = startIdx - 1; idx >= start; idx--) {\n offset -= columns[idx].width;\n }\n }\n let currentColumns = columns.slice(start, end + 1);\n this.viewportColumnsWidth = currentColumns.reduce((total, column) => total + column.width, 0);\n if (start > 0) {\n const offsetColumn = new ColumnBase();\n offsetColumn.width = offset;\n currentColumns.unshift(offsetColumn);\n }\n this.viewportColumns = new QueryList();\n this.viewportColumns.reset(currentColumns);\n this.columnsStartIdx = start;\n this.columnsEndIdx = end;\n this.columnInfo.columnRangeChange.emit({ start, end, offset });\n if (!range) {\n this.updateColumnViewport(startIdx, endIdx);\n }\n }\n handleColumnScroll() {\n const container = this.container.nativeElement;\n const scrollLeft = container.scrollLeft;\n if (this.scrollLeft !== scrollLeft) {\n this.scrollLeft = scrollLeft;\n const range = this.calculateViewportColumns();\n this.updateColumnViewport(range.startIdx, range.endIdx);\n if (range.startIdx < this.columnsStartIdx || this.columnsEndIdx < range.endIdx) {\n cancelAnimationFrame(this.columnUpdateFrame);\n this.columnUpdateFrame = requestAnimationFrame(() => {\n this.ngZone.run(() => {\n this.updateViewportColumns(range);\n this.changeDetector.markForCheck();\n });\n });\n }\n }\n }\n updateColumnViewport(startIdx, endIdx) {\n const lockedCount = this.lockedLeafColumns.length;\n const leafColumns = this.nonLockedLeafColumns.toArray();\n const viewportStart = lockedCount + startIdx + (this.detailTemplate && startIdx > 0 ? 1 : 0);\n let viewportEnd = lockedCount + endIdx + (this.detailTemplate ? 1 : 0);\n for (let idx = 0; idx < leafColumns.length; idx++) {\n const column = leafColumns[idx];\n if (column.isSpanColumn) {\n viewportEnd += column.childColumns.length;\n }\n }\n this.navigationService.setColumnViewport(viewportStart, viewportEnd);\n }\n calculateViewportColumns() {\n const { scrollLeft, clientWidth } = this.container.nativeElement;\n const columns = this.columns.nonLockedLeafColumns.toArray();\n const normalizedScrollLeft = this.normalizeScrollLeft(scrollLeft);\n const viewportEnd = normalizedScrollLeft + clientWidth;\n let startIdx;\n let endIdx = 0;\n let current = 0;\n let offset = 0;\n let idx;\n for (idx = 0; idx < columns.length; idx++) {\n const column = columns[idx];\n current += column.width || 0;\n if (startIdx === undefined && current > normalizedScrollLeft) {\n startIdx = idx;\n offset = current - (column.width || 0);\n }\n if (current >= viewportEnd) {\n endIdx = idx;\n break;\n }\n }\n if (!endIdx && idx > 0) {\n endIdx = columns.length - 1;\n }\n return { startIdx, endIdx, offset };\n }\n viewportWidthChange() {\n const currentWidth = this.viewportColumns.toArray().reduce((total, column) => total + column.width, 0);\n return currentWidth !== this.viewportColumnsWidth;\n }\n normalizeScrollLeft(position) {\n return this.rtl ? rtlScrollPosition(position, this.container.nativeElement, this.supportService.rtlScrollLeft) : position;\n }\n elementScrollLeft(element) {\n if (this.rtl) {\n return this.normalizeScrollLeft(this.container.nativeElement.scrollWidth - element.offsetLeft - element.offsetWidth);\n }\n return element.offsetLeft;\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: DetailsService }, { token: ChangeNotificationService }, { token: SuspendService }, { token: GroupsService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: ScrollSyncService }, { token: ResizeService }, { token: EditService }, { token: BrowserSupportService }, { token: NavigationService }, { token: ScrollRequestService }, { token: i1.LocalizationService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: PDFService }, { token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-grid-list\", inputs: { data: \"data\", groups: \"groups\", total: \"total\", rowHeight: \"rowHeight\", stickyRowHeight: \"stickyRowHeight\", detailRowHeight: \"detailRowHeight\", take: \"take\", skip: \"skip\", columns: \"columns\", detailTemplate: \"detailTemplate\", noRecordsTemplate: \"noRecordsTemplate\", selectable: \"selectable\", groupable: \"groupable\", filterable: \"filterable\", rowClass: \"rowClass\", rowSticky: \"rowSticky\", loading: \"loading\", trackBy: \"trackBy\", virtualColumns: \"virtualColumns\", isVirtual: \"isVirtual\", cellLoadingTemplate: \"cellLoadingTemplate\", loadingTemplate: \"loadingTemplate\" }, outputs: { contentScroll: \"contentScroll\", pageChange: \"pageChange\", scrollBottom: \"scrollBottom\" }, host: { properties: { \"class.k-grid-container\": \"this.hostClass\", \"attr.role\": \"this.hostRole\" } }, providers: [\n {\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, static: true }, { propertyName: \"lockedContainer\", first: true, predicate: [\"lockedContainer\"], descendants: true }, { propertyName: \"lockedTable\", first: true, predicate: [\"lockedTable\"], descendants: true }, { propertyName: \"table\", first: true, predicate: [\"table\"], descendants: true, static: true }, { propertyName: \"resizeSensors\", predicate: ResizeSensorComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
\n
\n \n \n \n \n \n
\n \n
\n
\n
\n
\n
0\"\n [lockedWidth]=\"lockedWidth + 1\">\n
\n \n \n \n \n \n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n `, isInline: true, components: [{ type: ColGroupComponent, selector: \"[kendoGridColGroup]\", inputs: [\"columns\", \"groups\", \"detailTemplate\"] }, { type: TableBodyComponent, selector: \"[kendoGridTableBody]\", inputs: [\"columns\", \"allColumns\", \"groups\", \"detailTemplate\", \"noRecordsTemplate\", \"data\", \"skip\", \"selectable\", \"filterable\", \"noRecordsText\", \"isLocked\", \"isLoading\", \"isVirtual\", \"cellLoadingTemplate\", \"skipGroupDecoration\", \"showGroupFooters\", \"lockedColumnsCount\", \"totalColumnsCount\", \"virtualColumns\", \"trackBy\", \"rowSticky\", \"rowClass\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: TableDirective, selector: \"table\", inputs: [\"locked\", \"virtualColumns\"] }, { type: ResizableContainerDirective, selector: \"[kendoGridResizableContainer]\", inputs: [\"lockedWidth\", \"kendoGridResizableContainer\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }\n ],\n selector: 'kendo-grid-list',\n template: `\n
\n
\n \n \n \n \n \n
\n \n
\n
\n
\n
\n
0\"\n [lockedWidth]=\"lockedWidth + 1\">\n
\n \n \n \n \n \n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [SCROLLER_FACTORY_TOKEN]\n }] }, { type: DetailsService }, { type: ChangeNotificationService }, { type: SuspendService }, { type: GroupsService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: ScrollSyncService }, { type: ResizeService }, { type: EditService }, { type: BrowserSupportService }, { type: NavigationService }, { type: ScrollRequestService }, { type: i1.LocalizationService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: PDFService }, { type: ColumnInfoService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: [\"class.k-grid-container\"]\n }], hostRole: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], data: [{\n type: Input\n }], groups: [{\n type: Input\n }], total: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], stickyRowHeight: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], take: [{\n type: Input\n }], skip: [{\n type: Input\n }], columns: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], noRecordsTemplate: [{\n type: Input\n }], selectable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], filterable: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], loading: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], isVirtual: [{\n type: Input\n }], cellLoadingTemplate: [{\n type: Input\n }], loadingTemplate: [{\n type: Input\n }], contentScroll: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], scrollBottom: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], lockedContainer: [{\n type: ViewChild,\n args: ['lockedContainer', { static: false }]\n }], lockedTable: [{\n type: ViewChild,\n args: ['lockedTable', { static: false }]\n }], table: [{\n type: ViewChild,\n args: ['table', { static: true }]\n }], resizeSensors: [{\n type: ViewChildren,\n args: [ResizeSensorComponent]\n }] } });\n\n/**\n * @hidden\n */\nclass FooterComponent {\n constructor(columnInfoService) {\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.groups = [];\n this.lockedColumnsCount = 0;\n this.logicalRowIndex = 0;\n }\n get footerClass() {\n return !this.scrollable;\n }\n get columnsToRender() {\n return columnsToRender(this.columns || []);\n }\n logicalColumnIndex(column) {\n const index = column.leafIndex;\n if (isPresent(index)) {\n return index + (isPresent(this.detailTemplate) ? 1 : 0);\n }\n return -1;\n }\n addStickyStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return Object.assign(Object.assign({}, column.style), stickyStyles);\n }\n}\nFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterComponent, deps: [{ token: ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });\nFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterComponent, selector: \"[kendoGridFooter]\", inputs: { columns: \"columns\", groups: \"groups\", detailTemplate: \"detailTemplate\", scrollable: \"scrollable\", lockedColumnsCount: \"lockedColumnsCount\", logicalRowIndex: \"logicalRowIndex\" }, host: { properties: { \"class.k-grid-footer\": \"this.footerClass\" } }, ngImport: i0, template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"columns.length - lockedColumnsCount\"\n >\n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: LogicalRowDirective, selector: \"[kendoGridLogicalRow]\", inputs: [\"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"dataRowIndex\", \"dataItem\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LogicalCellDirective, selector: \"[kendoGridLogicalCell]\", inputs: [\"logicalColIndex\", \"logicalRowIndex\", \"logicalSlaveCell\", \"colIndex\", \"colSpan\", \"rowSpan\", \"groupItem\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", \"headerLabelText\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridFooter]',\n template: `\n \n 0\"\n [logicalCellsCount]=\"columns.length\"\n [logicalSlaveCellsCount]=\"columns.length - lockedColumnsCount\"\n >\n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ColumnInfoService }]; }, propDecorators: { columns: [{\n type: Input\n }], groups: [{\n type: Input\n }], detailTemplate: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], lockedColumnsCount: [{\n type: Input\n }], logicalRowIndex: [{\n type: Input\n }], footerClass: [{\n type: HostBinding,\n args: ['class.k-grid-footer']\n }] } });\n\n/**\n * @hidden\n */\nclass LoadingComponent {\n constructor(localization) {\n this.localization = localization;\n this.hostClass = true;\n }\n get loadingText() {\n return this.localization.get('loading');\n }\n}\nLoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingComponent, selector: \"[kendoGridLoading]\", inputs: { loadingTemplate: \"loadingTemplate\" }, host: { properties: { \"class.k-loading-mask\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n {{ loadingText }}\n
\n
\n
\n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoGridLoading]',\n template: `\n \n {{ loadingText }}\n
\n
\n
\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-loading-mask']\n }], loadingTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass GridMessages extends ComponentMessages {\n}\nGridMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nGridMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridMessages, selector: \"kendo-grid-messages-base\", inputs: { groupPanelEmpty: \"groupPanelEmpty\", noRecords: \"noRecords\", pagerLabel: \"pagerLabel\", pagerFirstPage: \"pagerFirstPage\", pagerLastPage: \"pagerLastPage\", pagerPreviousPage: \"pagerPreviousPage\", pagerNextPage: \"pagerNextPage\", pagerPage: \"pagerPage\", pagerItemsPerPage: \"pagerItemsPerPage\", pagerOf: \"pagerOf\", pagerItems: \"pagerItems\", pagerPageNumberInputTitle: \"pagerPageNumberInputTitle\", filter: \"filter\", filterInputLabel: \"filterInputLabel\", filterMenuTitle: \"filterMenuTitle\", filterMenuOperatorsDropDownLabel: \"filterMenuOperatorsDropDownLabel\", filterMenuLogicDropDownLabel: \"filterMenuLogicDropDownLabel\", filterEqOperator: \"filterEqOperator\", filterNotEqOperator: \"filterNotEqOperator\", filterIsNullOperator: \"filterIsNullOperator\", filterIsNotNullOperator: \"filterIsNotNullOperator\", filterIsEmptyOperator: \"filterIsEmptyOperator\", filterIsNotEmptyOperator: \"filterIsNotEmptyOperator\", filterStartsWithOperator: \"filterStartsWithOperator\", filterContainsOperator: \"filterContainsOperator\", filterNotContainsOperator: \"filterNotContainsOperator\", filterEndsWithOperator: \"filterEndsWithOperator\", filterGteOperator: \"filterGteOperator\", filterGtOperator: \"filterGtOperator\", filterLteOperator: \"filterLteOperator\", filterLtOperator: \"filterLtOperator\", filterIsTrue: \"filterIsTrue\", filterIsFalse: \"filterIsFalse\", filterBooleanAll: \"filterBooleanAll\", filterAfterOrEqualOperator: \"filterAfterOrEqualOperator\", filterAfterOperator: \"filterAfterOperator\", filterBeforeOperator: \"filterBeforeOperator\", filterBeforeOrEqualOperator: \"filterBeforeOrEqualOperator\", filterFilterButton: \"filterFilterButton\", filterClearButton: \"filterClearButton\", filterAndLogic: \"filterAndLogic\", filterOrLogic: \"filterOrLogic\", loading: \"loading\", gridLabel: \"gridLabel\", columnMenu: \"columnMenu\", setColumnPosition: \"setColumnPosition\", columns: \"columns\", lock: \"lock\", unlock: \"unlock\", stick: \"stick\", unstick: \"unstick\", sortable: \"sortable\", sortAscending: \"sortAscending\", sortDescending: \"sortDescending\", sortedAscending: \"sortedAscending\", sortedDescending: \"sortedDescending\", sortedDefault: \"sortedDefault\", columnsApply: \"columnsApply\", columnsReset: \"columnsReset\", detailExpand: \"detailExpand\", detailCollapse: \"detailCollapse\", filterDateToday: \"filterDateToday\", filterDateToggle: \"filterDateToggle\", filterNumericDecrement: \"filterNumericDecrement\", filterNumericIncrement: \"filterNumericIncrement\", selectionCheckboxLabel: \"selectionCheckboxLabel\", selectAllCheckboxLabel: \"selectAllCheckboxLabel\", groupCollapse: \"groupCollapse\", groupExpand: \"groupExpand\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-grid-messages-base'\n }]\n }], propDecorators: { groupPanelEmpty: [{\n type: Input\n }], noRecords: [{\n type: Input\n }], pagerLabel: [{\n type: Input\n }], pagerFirstPage: [{\n type: Input\n }], pagerLastPage: [{\n type: Input\n }], pagerPreviousPage: [{\n type: Input\n }], pagerNextPage: [{\n type: Input\n }], pagerPage: [{\n type: Input\n }], pagerItemsPerPage: [{\n type: Input\n }], pagerOf: [{\n type: Input\n }], pagerItems: [{\n type: Input\n }], pagerPageNumberInputTitle: [{\n type: Input\n }], filter: [{\n type: Input\n }], filterInputLabel: [{\n type: Input\n }], filterMenuTitle: [{\n type: Input\n }], filterMenuOperatorsDropDownLabel: [{\n type: Input\n }], filterMenuLogicDropDownLabel: [{\n type: Input\n }], filterEqOperator: [{\n type: Input\n }], filterNotEqOperator: [{\n type: Input\n }], filterIsNullOperator: [{\n type: Input\n }], filterIsNotNullOperator: [{\n type: Input\n }], filterIsEmptyOperator: [{\n type: Input\n }], filterIsNotEmptyOperator: [{\n type: Input\n }], filterStartsWithOperator: [{\n type: Input\n }], filterContainsOperator: [{\n type: Input\n }], filterNotContainsOperator: [{\n type: Input\n }], filterEndsWithOperator: [{\n type: Input\n }], filterGteOperator: [{\n type: Input\n }], filterGtOperator: [{\n type: Input\n }], filterLteOperator: [{\n type: Input\n }], filterLtOperator: [{\n type: Input\n }], filterIsTrue: [{\n type: Input\n }], filterIsFalse: [{\n type: Input\n }], filterBooleanAll: [{\n type: Input\n }], filterAfterOrEqualOperator: [{\n type: Input\n }], filterAfterOperator: [{\n type: Input\n }], filterBeforeOperator: [{\n type: Input\n }], filterBeforeOrEqualOperator: [{\n type: Input\n }], filterFilterButton: [{\n type: Input\n }], filterClearButton: [{\n type: Input\n }], filterAndLogic: [{\n type: Input\n }], filterOrLogic: [{\n type: Input\n }], loading: [{\n type: Input\n }], gridLabel: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], setColumnPosition: [{\n type: Input\n }], columns: [{\n type: Input\n }], lock: [{\n type: Input\n }], unlock: [{\n type: Input\n }], stick: [{\n type: Input\n }], unstick: [{\n type: Input\n }], sortable: [{\n type: Input\n }], sortAscending: [{\n type: Input\n }], sortDescending: [{\n type: Input\n }], sortedAscending: [{\n type: Input\n }], sortedDescending: [{\n type: Input\n }], sortedDefault: [{\n type: Input\n }], columnsApply: [{\n type: Input\n }], columnsReset: [{\n type: Input\n }], detailExpand: [{\n type: Input\n }], detailCollapse: [{\n type: Input\n }], filterDateToday: [{\n type: Input\n }], filterDateToggle: [{\n type: Input\n }], filterNumericDecrement: [{\n type: Input\n }], filterNumericIncrement: [{\n type: Input\n }], selectionCheckboxLabel: [{\n type: Input\n }], selectAllCheckboxLabel: [{\n type: Input\n }], groupCollapse: [{\n type: Input\n }], groupExpand: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends GridMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoGridLocalizedMessages]\", providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoGridLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst createControl = (source) => (acc, key) => {\n acc[key] = new FormControl(source[key]);\n return acc;\n};\nconst validateColumnsField = (columns) => expandColumns(columns.toArray())\n .filter(isColumnComponent)\n .filter(({ field }) => !isValidFieldName(field))\n .forEach(({ field }) => console.warn(`\n Grid column field name '${field}' does not look like a valid JavaScript identifier.\n Identifiers can contain only alphanumeric characters (including \"$\" or \"_\"), and may not start with a digit.\n Please use only valid identifier names to ensure error-free operation.\n `));\nconst handleExpandCollapseGroupsService = (service, expandEmitter, collapseEmitter, map) => (service.changes.pipe(filter(({ group }) => isPresent(group)))\n .subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));\nconst handleExpandCollapseDetailsService = (service, expandEmitter, collapseEmitter, map) => (service.changes.pipe(filter(({ dataItem }) => isPresent(dataItem)))\n .subscribe((x) => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x))));\nconst isInEditedCell = (element, gridElement) => closest(element, matchesClasses('k-grid-edit-cell')) &&\n closest(element, matchesNodeName('kendo-grid')) === gridElement;\n/**\n * Represents the Kendo UI Grid component for Angular.\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\nclass GridComponent {\n constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx) {\n this.supportService = supportService;\n this.selectionService = selectionService;\n this.cellSelectionService = cellSelectionService;\n this.wrapper = wrapper;\n this.groupInfoService = groupInfoService;\n this.groupsService = groupsService;\n this.changeNotification = changeNotification;\n this.detailsService = detailsService;\n this.editService = editService;\n this.filterService = filterService;\n this.pdfService = pdfService;\n this.responsiveService = responsiveService;\n this.renderer = renderer;\n this.excelService = excelService;\n this.ngZone = ngZone;\n this.scrollSyncService = scrollSyncService;\n this.domEvents = domEvents;\n this.columnResizingService = columnResizingService;\n this.changeDetectorRef = changeDetectorRef;\n this.columnReorderService = columnReorderService;\n this.columnInfoService = columnInfoService;\n this.navigationService = navigationService;\n this.sortService = sortService;\n this.scrollRequestService = scrollRequestService;\n this.localization = localization;\n this.ctx = ctx;\n /**\n * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count\n * ([more information and example]({% slug databinding_grid %})).\n */\n this.data = [];\n /**\n * Defines the scroll mode used by the Grid.\n *\n * The available options are:\n * - `none`—Renders no scrollbar.\n * - `scrollable`—The default scroll mode. It requires the setting of the `height` option.\n * - `virtual`—Displays no pager and renders a portion of the data (optimized rendering) while the user is scrolling the content.\n */\n this.scrollable = 'scrollable';\n /**\n * Enables the single-row [selection]({% slug selection_grid %}) of the Grid.\n */\n this.selectable = false;\n /**\n * A function that defines how to track changes for the data rows.\n *\n * By default, the Grid tracks changes by the index of the data item.\n * Edited rows are tracked by reference.\n * In some cases, you might need to override the default behavior,\n * for example, when you implement editing with immutable data items.\n *\n * The following example demonstrates how to track items only by index.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n * import { GridItem } from '@progress/kendo-angular-grid';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n *\n * public trackBy(index: number, item: GridItem): any {\n * console.log(item);\n * return index;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n this.trackBy = defaultTrackBy;\n /**\n * If set to `true`, the grid will render only the columns in the current viewport.\n */\n this.virtualColumns = false;\n /**\n * Enables the [filtering]({% slug filtering_grid %}) of the Grid columns that have their `field` option set.\n */\n this.filterable = false;\n /**\n * Enables the [sorting]({% slug sorting_grid %}) of the Grid columns that have their `field` option set.\n */\n this.sortable = false;\n /**\n * Configures the pager of the Grid ([see example]({% slug paging_grid %})).\n *\n * The available options are:\n * - `buttonCount: Number`—Sets the maximum numeric buttons count before the buttons are collapsed. Defaults to `10`.\n * - `info: Boolean`—Toggles the information about the current page and the total number of records. Defaults to `true`.\n * - `type: PagerType`—Accepts the `numeric` (buttons with numbers) and `input` (input for typing the page number) values. Defaults to `'numeric'`.\n * - `pageSizes: Boolean` or `Array`—Shows a menu for selecting the page size. Defaults to `false`.\n * - `previousNext: Boolean`—Toggles the **Previous** and **Next** buttons. Defaults to `true`.\n * - `responsive: Boolean`—Toggles the built-in responsive behavior of the Pager. Defaults to `true`.\n */\n this.pageable = false;\n /**\n * If set to `true`, the user can group the Grid by dragging the column header cells.\n * By default, grouping is disabled ([see example]({% slug groupingbasics_grid %})).\n */\n this.groupable = false;\n /**\n * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.\n * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.\n */\n this.navigable = false;\n /**\n * Indicates whether the Grid columns will be resized during initialization so that\n * they fit their headers and row content. Defaults to `false`.\n * Columns with `autoSize` set to `false` are excluded.\n * To dynamically update the column width to match the new content,\n * refer to [this example]({% slug resizing_columns_grid %}).\n */\n this.autoSize = false;\n /**\n * If set to `true`, the user can resize columns by dragging the edges (resize handles) of their header cells\n * ([see example]({% slug resizing_columns_grid %})).\n *\n * @default false\n */\n this.resizable = false;\n /**\n * If set to `true`, the user can reorder columns by dragging their header cells\n * ([see example]({% slug reordering_columns_grid %})).\n *\n * @default false\n */\n this.reorderable = false;\n /**\n * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug databinding_grid %})).\n *\n * @default false\n */\n this.loading = false;\n /**\n * Specifies if the column menu of the columns will be displayed ([see example]({% slug columnmenu_grid %})).\n *\n * @default false\n */\n this.columnMenu = false;\n /**\n * Specifies if the header of the grid will be hidden. The header is visible by default.\n *\n * > The header includes column headers and the [filter row]({% slug filtering_grid %}#toc-filter-row).\n */\n this.hideHeader = false;\n /**\n * Fires when the Grid filter is modified through the UI.\n * You have to handle the event yourself and filter the data.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the page of the Grid is changed ([see example]({% slug paging_grid %})).\n * You have to handle the event yourself and page the data.\n */\n this.pageChange = new EventEmitter();\n /**\n * Fires when the grouping of the Grid is changed.\n * You have to handle the event yourself and group the data ([see example]({% slug groupingbasics_grid %})).\n */\n this.groupChange = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the sorting of the Grid is changed ([see example]({% slug sorting_grid %})).\n * You have to handle the event yourself and sort the data.\n */\n this.sortChange = new EventEmitter();\n /**\n * Fires when the user selects a Grid row.\n * Emits the [SelectionEvent]({% slug api_grid_selectionevent %}#toc-selectionchange).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the data state of the Grid is changed.\n */\n this.dataStateChange = new EventEmitter();\n /**\n * Fires when the user expands a group header.\n */\n this.groupExpand = new EventEmitter();\n /**\n * Fires when the user collapses a group header.\n */\n this.groupCollapse = new EventEmitter();\n /**\n * Fires when the user expands a master row.\n */\n this.detailExpand = new EventEmitter();\n /**\n * Fires when the user collapses a master row.\n */\n this.detailCollapse = new EventEmitter();\n /**\n * Fires when the user clicks the **Edit** command button to edit a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-editing-records)).\n */\n this.edit = new EventEmitter();\n /**\n * Fires when the user clicks the **Cancel** command button to close a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-cancelling-editing)).\n */\n this.cancel = new EventEmitter();\n /**\n * Fires when the user clicks the **Save** command button to save changes in a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-saving-records)).\n */\n this.save = new EventEmitter();\n /**\n * Fires when the user clicks the **Remove** command button to remove a row\n * ([see example]({% slug editing_template_forms_grid %}#toc-removing-records)).\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the user clicks the **Add** command button to add a new row\n * ([see example]({% slug editing_template_forms_grid %}#toc-adding-records)).\n */\n this.add = new EventEmitter();\n /**\n * Fires when the user leaves an edited cell ([see example]({% slug editing_incell_grid %}#toc-basic-concepts)).\n */\n this.cellClose = new EventEmitter();\n /**\n * Fires when the user clicks a cell ([see example]({% slug editing_incell_grid %}#toc-basic-concepts)).\n */\n this.cellClick = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the user clicks the **Export to PDF** command button.\n */\n this.pdfExport = new EventEmitter();\n /**\n * Fires when the user clicks the **Export to Excel** command button.\n */\n this.excelExport = new EventEmitter();\n /**\n * Fires when the user completes the resizing of the column.\n */\n this.columnResize = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the user completes the reordering of the column.\n */\n this.columnReorder = new EventEmitter();\n /**\n * Fires when the user changes the visibility of the columns from the column menu or column chooser.\n */\n this.columnVisibilityChange = new EventEmitter();\n /**\n * Fires when the user changes the locked state of the columns from the column menu or by reordering the columns.\n */\n this.columnLockedChange = new EventEmitter();\n /**\n * Fires when the user changes the sticky state of the columns from the column menu.\n */\n this.columnStickyChange = new EventEmitter();\n /**\n * Fires when the user scrolls to the last record on the page and enables endless scrolling\n * ([see example]({% slug scrollmmodes_grid %}#toc-endless-scrolling)).\n * You have to handle the event yourself and page the data.\n */\n this.scrollBottom = new EventEmitter();\n /**\n * Fires when the grid content is scrolled.\n * For performance reasons, the event is triggered outside the Angular zone. Enter the Angular zone if you make any changes that require change detection.\n */\n this.contentScroll = new EventEmitter();\n /**\n * A query list of all declared columns.\n */\n this.columns = new QueryList();\n this.footer = new QueryList();\n this.selectionDirective = false;\n this.columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {\n column.matchesMedia = this.matchesMedia(column);\n return column.isVisible;\n }));\n this.view = new DataCollection(() => new DataResultIterator(this.data, this.skip, this.hasGroupFooters));\n this.shouldGenerateColumns = true;\n this._sort = new Array();\n this._group = new Array();\n this._skip = 0;\n this.cachedWindowWidth = 0;\n this._rowSelected = null;\n this._cellSelected = null;\n this.rtl = false;\n this._rowClass = () => null;\n validatePackage(packageMetadata);\n this.ctx.grid = this;\n this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n this.groupInfoService.registerColumnsContainer(() => this.columnList);\n this.columnInfoService.init(this.columnsContainer, () => this.columnList);\n this.columnVisibilityChangeSubscription = this.columnInfoService.visibilityChange.subscribe((changed) => {\n this.columnVisibilityChange.emit(new ColumnVisibilityChangeEvent(changed));\n });\n this.columnLockedChangeSubscription = this.columnInfoService.lockedChange.subscribe((changed) => {\n this.columnLockedChange.emit(new ColumnLockedChangeEvent(changed));\n });\n this.columnStickyChangeSubscription = this.columnInfoService.stickyChange.subscribe((changed) => {\n this.columnStickyChange.emit(new ColumnStickyChangeEvent(changed));\n });\n this.groupExpandCollapseSubscription = handleExpandCollapseGroupsService(groupsService, this.groupExpand, this.groupCollapse, ({ group, groupIndex, parentGroup }) => ({ group, groupIndex, parentGroup }));\n this.detailsServiceSubscription = handleExpandCollapseDetailsService(detailsService, this.detailExpand, this.detailCollapse, args => args);\n this.filterSubscription = this.filterService.changes.subscribe(x => {\n this.filterChange.emit(x);\n });\n this.sortSubscription = this.sortService.changes.subscribe(x => {\n this.sortChange.emit(x);\n });\n this.attachStateChangesEmitter();\n this.attachEditHandlers();\n this.attachDomEventHandlers();\n this.pdfSubscription = this.pdfService.exportClick.subscribe(this.emitPDFExportEvent.bind(this));\n this.excelSubscription = this.excelService.exportClick.subscribe(this.saveAsExcel.bind(this));\n this.columnsContainerChange();\n this.handleColumnResize();\n this.columnList = new ColumnList(this.columns);\n this.columnReorderSubscription = this.columnReorderService\n .changes.subscribe(this.reorder.bind(this));\n this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));\n }\n /**\n * Defines the number of records to be skipped by the pager.\n * Required by the [paging]({% slug paging_grid %}) functionality.\n */\n get skip() {\n return this._skip;\n }\n set skip(value) {\n if (typeof value === 'number' && value >= 0) {\n this._skip = value;\n }\n }\n /**\n * The descriptors by which the data will be sorted ([see example]({% slug sorting_grid %})).\n */\n set sort(value) {\n if (isArray(value)) {\n this._sort = value;\n }\n }\n get sort() {\n return this._sort;\n }\n /**\n * The descriptors by which the data will be grouped ([see example]({% slug groupingbasics_grid %})).\n */\n set group(value) {\n if (isArray(value)) {\n this._group = value;\n }\n }\n /**\n */\n get group() {\n return this._group;\n }\n /**\n * @hidden\n */\n get showTopToolbar() {\n return this.toolbarTemplate && ['top', 'both'].indexOf(this.toolbarTemplate.position) > -1;\n }\n /**\n * @hidden\n */\n get showBottomToolbar() {\n return this.toolbarTemplate && ['bottom', 'both'].indexOf(this.toolbarTemplate.position) > -1;\n }\n /**\n * @hidden\n */\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n /**\n * @hidden\n */\n get showTopPager() {\n const position = this.pageable.position;\n return !this.isVirtual && this.pageable !== false && ['top', 'both'].indexOf(position) > -1;\n }\n /**\n * @hidden\n */\n get showBottomPager() {\n const position = this.pageable.position;\n return !this.isVirtual && this.pageable !== false && position !== 'top';\n }\n /**\n * @hidden\n */\n get hasPager() {\n return this.showTopPager || this.showBottomPager;\n }\n /**\n * @hidden\n */\n get showGroupPanel() {\n return this.groupable && this.groupable.enabled !== false;\n }\n /**\n * @hidden\n */\n get groupableEmptyText() {\n return this.groupable.emptyText;\n }\n /**\n * @hidden\n */\n get marqueeSelection() {\n return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;\n }\n /**\n * @hidden\n *\n * An alias for `navigable` for users who migrate from Kendo UI for jQuery.\n */\n set navigatable(value) {\n this.navigable = value;\n }\n /**\n * @hidden\n */\n get navigatable() {\n return this.navigable;\n }\n /**\n * Defines a function that is executed for every data row in the component.\n *\n * @example\n * ```ts\n * import { Component, ViewEncapsulation } from '@angular/core';\n * import { RowClassArgs } from '@progress/kendo-angular-grid';\n *\n * _@Component({\n * selector: 'my-app',\n * encapsulation: ViewEncapsulation.None,\n * styles: [`\n * .k-grid tr.even { background-color: #f45c42; }\n * .k-grid tr.odd { background-color: #41f4df; }\n * `],\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n *\n * public rowCallback(context: RowClassArgs) {\n * const isEven = context.index % 2 === 0;\n * return {\n * even: isEven,\n * odd: !isEven\n * };\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n set rowClass(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`rowClass must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._rowClass = fn;\n }\n get rowClass() {\n return this._rowClass;\n }\n /**\n * Defines a function that is executed for every data row in the component,\n * and determines whether the row will be sticky, i.e. always visible after scrolling.\n */\n set rowSticky(fn) {\n if (isDevMode && isPresent(fn) && typeof fn !== 'function') {\n throw new Error(`rowSticky must be a function, but received ${JSON.stringify(fn)}.`);\n }\n if (isPresent(fn)) {\n this._rowSticky = fn;\n }\n }\n get rowSticky() {\n return this._rowSticky;\n }\n /**\n * Defines a Boolean function that is executed for each data row in the component\n * ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-rows)).\n * Determines whether the row will be selected.\n */\n set rowSelected(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`rowSelected must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._rowSelected = fn;\n }\n get rowSelected() {\n return this._rowSelected;\n }\n /**\n * Defines a function that determines the selected state of a data cell.\n * Returns an object with `selected` and `item` properties.\n * The cell is marked as selected only if the `selected` property equals `true`.\n *\n * The function is executed for each data cell and may be called more than once\n * as part of a change detection cycle. ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-cells))\n */\n set cellSelected(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`cellSelected must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._cellSelected = fn;\n }\n get cellSelected() {\n return this._cellSelected;\n }\n /**\n * Returns the currently focused cell (if any).\n */\n get activeCell() {\n return this.navigationService.activeCell;\n }\n /**\n * Returns the currently focused row (if any).\n */\n get activeRow() {\n return this.navigationService.activeRow;\n }\n get dir() {\n return this.direction;\n }\n get hostClasses() {\n return true;\n }\n get lockedClasses() {\n return this.lockedLeafColumns.length > 0;\n }\n get virtualClasses() {\n return this.isVirtual;\n }\n get noScrollbarClass() {\n return this.scrollbarWidth === 0;\n }\n get detailTemplate() {\n if (this._customDetailTemplate) {\n return this._customDetailTemplate;\n }\n return this.detailTemplateChildren ? this.detailTemplateChildren.first : undefined;\n }\n set detailTemplate(detailTemplate) {\n this._customDetailTemplate = detailTemplate;\n }\n get cellLoadingTemplate() {\n if (this._cellLoadingTemplate) {\n return this._customDetailTemplate;\n }\n return this.cellLoadingTemplateChildren ? this.cellLoadingTemplateChildren.first : undefined;\n }\n set cellLoadingTemplate(cellLoadingTemplate) {\n this._cellLoadingTemplate = cellLoadingTemplate;\n }\n get loadingTemplate() {\n if (this._loadingTemplate) {\n return this._loadingTemplate;\n }\n return this.loadingTemplateChildren ? this.loadingTemplateChildren.first : undefined;\n }\n set loadingTemplate(loadingTemplate) {\n this._loadingTemplate = loadingTemplate;\n }\n get noRecordsTemplate() {\n if (this._customNoRecordsTemplate) {\n return this._customNoRecordsTemplate;\n }\n return this.noRecordsTemplateChildren ? this.noRecordsTemplateChildren.first : undefined;\n }\n set noRecordsTemplate(customNoRecordsTemplate) {\n this._customNoRecordsTemplate = customNoRecordsTemplate;\n }\n get pagerTemplate() {\n if (this._customPagerTemplate) {\n return this._customPagerTemplate;\n }\n return this.pagerTemplateChildren ? this.pagerTemplateChildren.first : undefined;\n }\n set pagerTemplate(customPagerTemplate) {\n this._customPagerTemplate = customPagerTemplate;\n }\n get toolbarTemplate() {\n if (this._customToolbarTemplate) {\n return this._customToolbarTemplate;\n }\n return this.toolbarTemplateChildren ? this.toolbarTemplateChildren.first : undefined;\n }\n set toolbarTemplate(customToolbarTemplate) {\n this._customToolbarTemplate = customToolbarTemplate;\n }\n get scrollbarWidth() {\n return this.supportService.scrollbarWidth;\n }\n get headerPadding() {\n if (isUniversal()) {\n return \"\";\n }\n const padding = Math.max(0, this.scrollbarWidth) + 'px';\n const right = this.rtl ? 0 : padding;\n const left = this.rtl ? padding : 0;\n return `0 ${right} 0 ${left}`;\n }\n get hasGroupFooters() {\n return this.columnsContainer.hasGroupFooter;\n }\n get showFooter() {\n return this.columnsContainer.hasFooter;\n }\n get showGroupFooters() {\n return this.groupable && this.groupable.showFooter;\n }\n get ariaRowCount() {\n return this.totalColumnLevels + 1 + this.view.total;\n }\n get ariaColCount() {\n return this.columnsContainer.leafColumnsToRender.length;\n }\n get isVirtual() {\n return this.scrollable === 'virtual';\n }\n get isScrollable() {\n return this.scrollable !== 'none';\n }\n get visibleColumns() {\n return this.columnsContainer.allColumns;\n }\n get lockedColumns() {\n return this.columnsContainer.lockedColumns;\n }\n get nonLockedColumns() {\n return this.columnsContainer.nonLockedColumns;\n }\n get lockedLeafColumns() {\n return this.columnsContainer.lockedLeafColumns;\n }\n get stickyColumns() {\n return this.columns.filter(column => column.sticky);\n }\n get nonLockedLeafColumns() {\n return this.columnsContainer.nonLockedLeafColumns;\n }\n get leafColumns() {\n return this.columnsContainer.leafColumns;\n }\n get totalColumnLevels() {\n return this.columnsContainer.totalLevels;\n }\n get headerColumns() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.viewportColumns;\n }\n return this.nonLockedColumns;\n }\n get headerLeafColumns() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.leafViewportColumns;\n }\n return this.nonLockedLeafColumns;\n }\n get lockedWidth() {\n const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;\n return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);\n }\n get nonLockedWidth() {\n if ((!this.rtl && this.lockedLeafColumns.length) || this.virtualColumns) {\n return !this.virtualColumns ? this.columnsContainer.unlockedWidth :\n this.leafViewportColumns.reduce((acc, column) => acc + (column.width || 0), 0);\n }\n return undefined;\n }\n get selectableSettings() {\n if (this.selectionService) {\n return this.selectionService.options;\n }\n return undefined;\n }\n get columnMenuTemplate() {\n const template = this.columnMenuTemplates.first;\n return template ? template.templateRef : null;\n }\n get totalCount() {\n if (this.isVirtual || !isPresent(this.pageSize)) {\n return this.view.total;\n }\n return this.pageSize;\n }\n /**\n * Expands the specified master row ([see example]({% slug hierarchy_grid %})).\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded state internally using the data row index.\n *\n * For new development, use the [kendoGridDetailsExpandBy directive]({% slug api_grid_expanddetailsdirective %})\n * or provide an isDetailExpanded callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %})\n * for examples on how to control the expanded state.\n *\n * @param index - The data row index of the master row.\n */\n expandRow(index) {\n this.toggleDetailRowLegacy(index, true);\n }\n /**\n * Collapses the specified master row ([see example]({% slug hierarchy_grid %})).\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded state internally using the data row index.\n *\n * For new development, use the [kendoGridDetailsExpandBy directive]({% slug api_grid_expanddetailsdirective %})\n * or provide an isDetailExpanded callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %})\n * for examples on how to control the expanded state.\n *\n * @param index - The data row index of the master row.\n */\n collapseRow(index) {\n this.toggleDetailRowLegacy(index, false);\n }\n /**\n * Expands a group header item for the given index. For example,\n * `0_1` expands the second inner group of the first master group.\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded group state internally using the hierarchical group index.\n *\n * > * When you use the [kendoGridGroupBinding]({% slug api_grid_groupbindingdirective %}) directive,\n * > the `expandGroup` method is not supported.\n * > * When a Grid is pageable, the indexes of the groups are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).\n *\n * @param {string} index - The underscore separated hierarchical index of the group.\n */\n expandGroup(index) {\n this.toggleGroupRowLegacy(index, true);\n }\n /**\n * Collapses a group header item for the given index. For example,\n * `0_1` collapses the second inner group of the first master group.\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded group state internally using the hierarchical group index.\n *\n * > * When you use the [kendoGridGroupBinding]({% slug api_grid_groupbindingdirective %}) directive,\n * > the `collapseGroup` method is not supported.\n * > * When a Grid is pageable, the indexes of the groups are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).\n *\n * @param {string} index - The underscore separated hierarchical index of the group.\n */\n collapseGroup(index) {\n this.toggleGroupRowLegacy(index, false);\n }\n /**\n * @hidden\n */\n resetGroupsState() {\n this.groupsService.reset();\n }\n /**\n * @hidden\n */\n expandGroupChildren(groupIndex) {\n this.groupsService.expandChildren(groupIndex);\n }\n /**\n * @hidden\n */\n onDataChange() {\n this.autoGenerateColumns();\n this.changeNotification.notify();\n this.pdfService.dataChanged.emit();\n if (isPresent(this.defaultSelection)) {\n this.defaultSelection.reset();\n }\n this.initSelectionService();\n this.updateNavigationMetadata();\n }\n ngOnChanges(changes) {\n if (isChanged$1(\"data\", changes)) {\n this.onDataChange();\n }\n if (this.lockedLeafColumns.length && anyChanged([\"pageSize\", \"skip\", \"sort\", \"group\"], changes)) {\n this.changeNotification.notify();\n }\n if (anyChanged([\"pageSize\", \"scrollable\", 'virtualColumns'], changes)) {\n this.updateNavigationMetadata();\n }\n if (isChanged$1(\"virtualColumns\", changes)) {\n this.viewportColumns = this.leafViewportColumns = null;\n }\n if (isChanged$1(\"height\", changes, false)) {\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', `${this.height}px`);\n }\n if (isChanged$1(\"filterable\", changes) && this.lockedColumns.length) {\n this.syncHeaderHeight(this.ngZone.onStable.asObservable().pipe(take(1)));\n }\n if (anyChanged([\"columnMenu\", \"sortable\", \"filterable\"], changes, false)) {\n this.columnMenuOptions = this.columnMenu && Object.assign({\n filter: Boolean(this.filterable),\n sort: Boolean(this.sortable)\n }, this.columnMenu);\n }\n if (isChanged$1(\"scrollable\", changes) && this.isScrollable) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.attachScrollSync());\n }\n if (isChanged$1(\"selectable\", changes) && this.shouldResetSelection(changes.selectable)) {\n if (this.defaultSelection) {\n this.defaultSelection.reset();\n }\n else if (this.selectionDirective) {\n this.selectionDirective.reset();\n }\n }\n if (isChanged$1('groupable', changes, true)) {\n this.groupable = changes.groupable.currentValue;\n }\n }\n ngAfterViewInit() {\n this.attachScrollSync();\n this.attachElementEventHandlers();\n this.updateNavigationMetadata();\n this.applyAutoSize();\n }\n ngAfterContentChecked() {\n this.columnsContainer.refresh();\n this.verifySettings();\n this.initSelectionService();\n }\n ngAfterContentInit() {\n this.shouldGenerateColumns = !this.columns.length;\n this.autoGenerateColumns();\n this.columnList = new ColumnList(this.columns);\n this.columnsChangeSubscription = this.columns.changes.subscribe(() => this.verifySettings());\n }\n ngOnInit() {\n if (this.navigable) {\n this.navigationService.init(this.navigationMetadata());\n }\n }\n ngOnDestroy() {\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (this.stateChangeSubscription) {\n this.stateChangeSubscription.unsubscribe();\n }\n if (this.groupExpandCollapseSubscription) {\n this.groupExpandCollapseSubscription.unsubscribe();\n }\n if (this.detailsServiceSubscription) {\n this.detailsServiceSubscription.unsubscribe();\n }\n if (this.editServiceSubscription) {\n this.editServiceSubscription.unsubscribe();\n }\n if (this.pdfSubscription) {\n this.pdfSubscription.unsubscribe();\n }\n if (this.filterSubscription) {\n this.filterSubscription.unsubscribe();\n }\n if (this.sortSubscription) {\n this.sortSubscription.unsubscribe();\n }\n if (this.columnsChangeSubscription) {\n this.columnsChangeSubscription.unsubscribe();\n }\n if (this.excelSubscription) {\n this.excelSubscription.unsubscribe();\n }\n if (this.columnsContainerChangeSubscription) {\n this.columnsContainerChangeSubscription.unsubscribe();\n }\n if (this.scrollSyncService) {\n this.scrollSyncService.destroy();\n }\n if (this.detachElementEventHandlers) {\n this.detachElementEventHandlers();\n }\n if (this.defaultSelection) {\n this.defaultSelection.destroy();\n }\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n }\n if (this.footerChangeSubscription) {\n this.footerChangeSubscription.unsubscribe();\n }\n this.ngZone = null;\n if (this.columnResizingSubscription) {\n this.columnResizingSubscription.unsubscribe();\n }\n if (this.columnReorderSubscription) {\n this.columnReorderSubscription.unsubscribe();\n }\n if (this.localizationSubscription) {\n this.localizationSubscription.unsubscribe();\n }\n if (this.columnVisibilityChangeSubscription) {\n this.columnVisibilityChangeSubscription.unsubscribe();\n }\n if (this.columnLockedChangeSubscription) {\n this.columnLockedChangeSubscription.unsubscribe();\n }\n if (this.columnStickyChangeSubscription) {\n this.columnStickyChangeSubscription.unsubscribe();\n }\n if (this.focusElementSubscription) {\n this.focusElementSubscription.unsubscribe();\n }\n this.columnRangeChangeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n attachScrollSync() {\n if (isUniversal()) {\n return;\n }\n if (this.header) {\n this.scrollSyncService.registerEmitter(this.header.nativeElement, \"header\");\n }\n if (this.footer) {\n this.footerChangeSubscription = observe(this.footer)\n .subscribe(footers => footers\n .map(footer => footer.nativeElement)\n .filter(isPresent)\n .forEach(element => this.scrollSyncService.registerEmitter(element, \"footer\")));\n }\n }\n /**\n * @hidden\n */\n get ariaLabel() {\n return this.localization.get('gridLabel');\n }\n /**\n * Switches the specified table row in the edit mode ([see example]({% slug editing_template_forms_grid %}#toc-editing-records)).\n *\n * @param rowIndex - The data row index that will be switched in the edit mode.\n * @param group - The [FormGroup]({{ site.data.urls.angular['formgroupapi'] }})\n * that describes the edit form.\n * @param options - Additional options configuring the focus target once the editor opens.\n */\n editRow(rowIndex, group, options) {\n this.editService.editRow(rowIndex, group);\n if (isPresent(options) && options.skipFocus) {\n return;\n }\n const row = `tr[data-kendo-grid-item-index=\"${rowIndex}\"]`;\n const columnIndex = options && options.columnIndex;\n const target = isNaN(columnIndex) ? row : `${row} td[data-kendo-grid-column-index=\"${columnIndex}\"]`;\n this.focusEditElement(target);\n }\n /**\n * Closes the editor for a given row ([see example]({% slug editing_template_forms_grid %}#toc-cancelling-editing)).\n *\n * @param {number} index - The row index that will be switched out of the edit mode. If no index is provided, it is assumed\n * that the new item editor will be closed.\n */\n closeRow(index) {\n this.editService.close(index);\n }\n /**\n * Creates a new row editor ([see example]({% slug editing_template_forms_grid %}#toc-adding-records)).\n *\n * @param {FormGroup} group - The [FormGroup]({{ site.data.urls.angular['formgroupapi'] }}) that describes\n * the edit form. If called with a data item, it will build the `FormGroup` from the data item fields.\n */\n addRow(group) {\n const isFormGroup = group instanceof FormGroup;\n if (!isFormGroup) {\n const fields = Object.keys(group).reduce(createControl(group), {}); // FormBuilder?\n group = new FormGroup(fields);\n }\n this.editService.addRow(group);\n this.focusEditElement('.k-grid-add-row');\n }\n /**\n * Puts the cell that is specified by the table row and column in edit mode.\n *\n * @param {number} rowIndex - The data row index that will be switched in the edit mode.\n * @param {number|string|any} column - The leaf column index, or the field name or the column instance that should be edited.\n * @param {FormGroup} group - The [FormGroup]({{ site.data.urls.angular['formgroupapi'] }})\n * that describes the edit form.\n */\n editCell(rowIndex, column, group) {\n const instance = this.columnInstance(column);\n this.editService.editCell(rowIndex, instance, group);\n this.focusEditElement('.k-grid-edit-cell');\n }\n /**\n * Closes the current cell in edit mode and fires\n * the [cellClose]({% slug api_grid_gridcomponent %}#toc-cellclose) event.\n *\n * @return {boolean} Indicates whether the edited cell was closed.\n * A `false` value indicates that the\n * [cellClose]({% slug api_grid_gridcomponent %}#toc-cellclose) event was prevented.\n */\n closeCell() {\n return !this.editService.closeCell();\n }\n /**\n * Closes the current cell in edit mode.\n */\n cancelCell() {\n this.editService.cancelCell();\n }\n /**\n * Returns a flag which indicates if a row or a cell is currently edited.\n *\n * @return {boolean} A flag which indicates if a row or a cell is currently edited.\n */\n isEditing() {\n return this.editService.isEditing();\n }\n /**\n * Returns a flag which indicates if a cell is currently edited.\n *\n * @return {boolean} A flag which indicates if a cell is currently being edited.\n */\n isEditingCell() {\n return this.editService.isEditingCell();\n }\n /**\n * Initiates the PDF export ([see example]({% slug pdfexport_grid %})).\n */\n saveAsPDF() {\n this.pdfService.save(this);\n }\n /**\n * Exports the Grid element to a Drawing [Group]({% slug api_kendo-drawing_group %}) by using the `kendo-grid-pdf` component options.\n * ([see example]({% slug pdfexport_grid %}#toc-exporting-multiple-grids-to-the-same-pdf)).\n *\n * @return {Promise} - A promise that will be resolved with the Drawing `Group`.\n */\n drawPDF() {\n const promise = createPromise();\n this.pdfService.draw(this, promise);\n return promise;\n }\n /**\n * Initiates the Excel export ([see example]({% slug excelexport_grid %})).\n */\n saveAsExcel() {\n this.excelService.save(this);\n }\n /**\n * Applies the minimum possible width for the specified column,\n * so that the whole text fits without wrapping. This method expects the Grid\n * to be resizable (set `resizable` to `true`).\n * Makes sense to execute this method only\n * after the Grid is already populated with data.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n *\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n autoFitColumn(column) {\n this.columnResizingService.autoFit(column);\n }\n /**\n * Adjusts the width of the specified columns to fit the entire content, including headers, without wrapping.\n * If no columns are specified, `autoFitColumns` is applied to all columns.\n *\n * This method requires the Grid to be resizable (set `resizable` to `true`).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n *\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n autoFitColumns(columns = this.columns) {\n let cols;\n if (columns instanceof QueryList) {\n cols = columns.toArray();\n }\n else {\n cols = columns;\n }\n this.columnResizingService.autoFit(...cols);\n }\n /**\n * @hidden\n */\n notifyPageChange(source, event) {\n if (source === \"list\" && !this.isVirtual) {\n return;\n }\n this.pageChange.emit(event);\n }\n /**\n * @hidden\n */\n notifyScrollBottom() {\n if (this.scrollable === 'none') {\n return;\n }\n if (hasObservers(this.scrollBottom)) {\n this.ngZone.run(() => this.scrollBottom.emit({ sender: this }));\n }\n }\n /**\n * @hidden\n */\n focusEditElement(containerSelector) {\n if (this.focusElementSubscription) {\n this.focusElementSubscription.unsubscribe();\n }\n this.ngZone.runOutsideAngular(() => {\n this.focusElementSubscription = this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const wrapper = this.wrapper.nativeElement;\n if (!this.setEditFocus(wrapper.querySelector(containerSelector)) && this.isLocked) {\n this.setEditFocus(wrapper.querySelector(`.k-grid-content ${containerSelector}`));\n }\n this.focusElementSubscription = null;\n });\n });\n }\n /**\n * Focuses the last active or the first cell of the Grid.\n *\n * @returns {NavigationCell} The focused cell.\n */\n focus() {\n this.assertNavigable();\n return this.navigationService.focusCell();\n }\n /**\n * Focuses the cell with the specified row and column index.\n *\n * The row index is based on the logical structure of the Grid and does not correspond to the data item index:\n * * Header rows are included, starting at index 0.\n * * Group headers and footers are included.\n * * The row indexing is absolute and does not change with paging.\n *\n * If the Grid is configured for scrolling, including virtual scrolling, the scroll position will be updated.\n * If the row is not present on the current page, the method will have no effect.\n *\n * @param rowIndex - The logical row index to focus. The top header row has an index 0.\n * @param colIndex - The column index to focus.\n * @returns {NavigationCell} The focused cell.\n *\n */\n focusCell(rowIndex, colIndex) {\n this.assertNavigable();\n return this.navigationService.focusCell(rowIndex, colIndex);\n }\n /**\n * Focuses the next cell, optionally wrapping to the next row.\n *\n * @param wrap - A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.\n * @returns {NavigationCell} The focused cell. If the focus is already on the last cell, returns `null`.\n */\n focusNextCell(wrap = true) {\n this.assertNavigable();\n return this.navigationService.focusNextCell(wrap);\n }\n /**\n * Focuses the previous cell. Optionally wraps to the previous row.\n *\n * @param wrap - A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.\n * @returns {NavigationCell} The focused cell. If the focus is already on the first cell, returns `null`.\n */\n focusPrevCell(wrap = true) {\n this.assertNavigable();\n return this.navigationService.focusPrevCell(wrap);\n }\n /**\n * Scrolls to the specified row and column ([see example]({% slug scrollmmodes_grid %}#toc-scrolling-to-a-specific-row-and-column-index)).\n */\n scrollTo(request) {\n this.scrollRequestService.scrollTo(request);\n }\n /**\n * Changes the position of the specified column.\n * The reordering of columns operates only on the level\n * which is inferred by the source column.\n * For the `reorderColumn` method to work properly,\n * the `source` column has to be visible.\n *\n * @param {ColumnBase} source - The column whose position will be changed.\n * @param {number} destIndex - The new position of the column.\n * @param {ColumnReorderConfig} options - Additional options.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n *\n * \n * \n *\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public gridData: any[] = products;\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n * ```\n */\n reorderColumn(source, destIndex, options = { before: false }) {\n const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));\n let target = columnsForLevel[destIndex];\n if (!target) {\n return;\n }\n const lastNonLocked = target.isLocked &&\n !source.isLocked &&\n this.columnsContainer.nonLockedColumns.length === 1;\n if (lastNonLocked) {\n return;\n }\n if (isSpanColumnComponent(target) && !options.before) {\n target = target.childColumns.last;\n }\n this.reorder({\n before: options.before,\n source: source,\n target: target\n });\n }\n /**\n * A function which determines if a specific row is expanded.\n */\n set isDetailExpanded(callback) {\n this.detailsService.userCallback = callback;\n }\n get isDetailExpanded() {\n return this.detailsService.userCallback;\n }\n /**\n * A function which determines if a specific group row is expanded.\n */\n set isGroupExpanded(callback) {\n this.groupsService.userCallback = callback;\n this.groupable = isPresent(callback);\n }\n get isGroupExpanded() {\n return this.groupsService.userCallback;\n }\n /**\n * @hidden\n */\n reorder({ target, source, before, changeContainer }) {\n this.ngZone.run(() => {\n const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));\n let newIndex = columnsForLevel.indexOf(target);\n if (target.parent && target.parent.isSpanColumn) {\n newIndex = columnsForLevel.indexOf(target.parent);\n if (before) {\n target = target.parent;\n }\n }\n let oldIndex = columnsForLevel.indexOf(source);\n if (changeContainer) {\n if (before && 0 < newIndex && oldIndex < newIndex) { // dropped before the first not locked column\n newIndex--;\n }\n else if (!before && oldIndex > newIndex) { // dropped after the last locked column\n newIndex++;\n }\n }\n const args = new ColumnReorderEvent({\n column: source,\n oldIndex: oldIndex,\n newIndex: newIndex\n });\n this.columnReorder.emit(args);\n if (args.isDefaultPrevented()) {\n return;\n }\n if (changeContainer) {\n this.columnLockedChange.emit(new ColumnLockedChangeEvent([source]));\n }\n this.updateColumnIndices({ columnsForLevel, source, target, before });\n if (source.locked !== target.locked) {\n source.locked = target.locked;\n }\n this.columnsContainer.refresh();\n this.changeDetectorRef.markForCheck();\n });\n }\n updateColumnIndices({ columnsForLevel, source, target, before }) {\n const expandedColumns = expandColumnsWithSpan(columnsForLevel);\n const sourceColumnIndex = expandedColumns.indexOf(source);\n let nextSourceIndex = 0;\n let nextIndex = 0;\n let toSkip = 1;\n // Possible only when called from the API.\n if (source.isSpanColumn) {\n toSkip += source.childColumns.length;\n }\n let i = 0;\n while (i < expandedColumns.length) {\n let column = expandedColumns[i];\n if (column === target) {\n nextSourceIndex = before ? nextIndex : nextIndex + 1;\n nextIndex = before ? nextIndex + toSkip : nextIndex;\n column.orderIndex = nextIndex;\n if (nextSourceIndex === nextIndex + 1) {\n nextIndex += toSkip;\n }\n }\n else if (column === source) {\n i += toSkip;\n continue;\n }\n else {\n column.orderIndex = nextIndex;\n }\n nextIndex++;\n i++;\n }\n for (i = sourceColumnIndex; i < sourceColumnIndex + toSkip; i++) {\n expandedColumns[i].orderIndex = nextSourceIndex++;\n }\n this.updateIndicesForLevel(source.level + 1);\n }\n updateIndicesForLevel(level) {\n const colsForParentLevel = this.allColumnsForLevel(level - 1);\n const colsForLevel = [];\n sortColumns(colsForParentLevel).forEach((c) => {\n if (c.isColumnGroup) {\n colsForLevel.push(...c.childrenArray.sort((a, b) => a.orderIndex - b.orderIndex));\n }\n });\n expandColumnsWithSpan(colsForLevel).map((c, i) => c.orderIndex = i);\n if (level < this.columnList.totalColumnLevels()) {\n this.updateIndicesForLevel(level + 1);\n }\n }\n allColumnsForLevel(level) {\n return this.columnList.toArray().filter(column => column.level === level);\n }\n initSelectionService() {\n if (!this.selectable) {\n this.selectionService.ngOnDestroy();\n this.cellSelectionService.ngOnDestroy();\n return;\n }\n if (!this.selectionDirective && !isPresent(this.defaultSelection)) {\n this.defaultSelection = new Selection(this.ctx, this.changeDetectorRef);\n }\n const cellSelectionMode = this.selectable['cell'];\n const activeService = cellSelectionMode ? this.cellSelectionService : this.selectionService;\n const inactiveService = cellSelectionMode ? this.selectionService : this.cellSelectionService;\n if (inactiveService.active) {\n inactiveService.ngOnDestroy();\n activeService.addSubscriptions();\n inactiveService.active = false;\n }\n activeService.active = true;\n activeService.init({\n cellSelected: cellSelectionMode ? this.cellSelected : undefined,\n rowSelected: cellSelectionMode ? undefined : this.rowSelected,\n selectable: this.selectable,\n view: this.view,\n columns: cellSelectionMode ? this.columnList.toArray() : undefined\n });\n if (!this.selectionDirective && !this.selectableSettings.enabled) {\n this.defaultSelection.reset();\n }\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (cellSelectionMode) {\n this.selectionSubscription = this.cellSelectionService.changes.subscribe((event) => {\n this.ngZone.run(() => this.selectionChange.emit(event));\n });\n }\n else {\n this.selectionSubscription = this.selectionService.changes.subscribe((event) => {\n this.ngZone.run(() => this.selectionChange.emit(event));\n });\n }\n }\n setEditFocus(element) {\n if (element) {\n return this.navigationService.tryFocus(element);\n }\n }\n columnInstance(column) {\n let instance;\n if (typeof column === 'number') {\n instance = this.columnsContainer.lockedLeafColumns.toArray()\n .concat(this.columnsContainer.nonLockedLeafColumns.toArray())[column];\n }\n else if (typeof column === 'string') {\n instance = this.columnList.filter((item) => item.field === column)[0];\n }\n else {\n instance = column;\n }\n if (!instance && isDevMode()) {\n throw new Error(`Invalid column ${column}`);\n }\n return instance;\n }\n verifySettings() {\n if (isDevMode()) {\n const locked = this.lockedLeafColumns.length || (this.columnMenu && this.columnMenu.lock);\n const stickyColumns = this.stickyColumns.length || (this.columnMenu && this.columnMenu.stick);\n if (locked && this.detailTemplate) {\n throw new Error('Having both detail template and locked columns is not supported.');\n }\n if (stickyColumns && this.detailTemplate) {\n throw new Error('Having both detail template and sticky columns is not supported.');\n }\n if (this.lockedLeafColumns.length && !this.nonLockedLeafColumns.length) {\n throw new Error('There should be at least one non-locked column');\n }\n if ((locked || this.virtualColumns) && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {\n throw new Error((locked ? 'Locked' : 'Virtual') + ' columns feature requires all columns to have set width.');\n }\n if (locked && !this.isScrollable) {\n throw new Error('Locked columns are only supported when scrolling is enabled.');\n }\n if (this.columnList.filter(isColumnGroupComponent).filter((x) => !x.hasChildren).length) {\n throw new Error('ColumnGroupComponent should contain ColumnComponent or CommandColumnComponent.');\n }\n if (this.columnList.filter(x => x.locked && x.parent && !x.parent.isLocked).length) {\n throw new Error('Locked child columns require their parent columns to be locked.');\n }\n if ((this.rowHeight || this.detailRowHeight) && !this.isVirtual) {\n throw new Error('Row height and detail row height settings require virtual scrolling mode to be enabled.');\n }\n if (stickyColumns && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {\n throw new Error('Sticky columns feature requires all columns to have set width.');\n }\n if (stickyColumns && !this.isScrollable) {\n throw new Error('Sticky columns are only supported when scrolling is enabled.');\n }\n if (stickyColumns && this.virtualColumns) {\n throw new Error('Having both sticky columns and column virtualization is not supported.');\n }\n if (this.rowSticky && this.scrollable === 'virtual') {\n throw new Error('Having both sticky rows and row virtualization (scrollable=\"virtual\") is not supported.');\n }\n if (this.rowSticky && this.groupable) {\n throw new Error('Having both sticky rows and grouping is not supported.');\n }\n validateColumnsField(this.columnList);\n }\n }\n autoGenerateColumns() {\n if (this.shouldGenerateColumns && !this.columns.length && this.view.length) {\n this.columns.reset(Object.keys(this.view.at(0)).map(field => {\n let column = new ColumnComponent();\n column.field = field;\n return column;\n }));\n }\n }\n attachStateChangesEmitter() {\n this.stateChangeSubscription =\n merge(this.pageChange.pipe(map(x => ({\n filter: this.filter, group: this.group, skip: x.skip, sort: this.sort, take: x.take\n }))), this.sortChange.pipe(map(sort => ({ filter: this.filter, group: this.group, skip: this.skip, sort: sort, take: this.pageSize }))), this.groupChange.pipe(map(group => ({\n filter: this.filter, group: group, skip: this.skip, sort: this.sort, take: this.pageSize\n }))), this.filterChange.pipe(map(filter => ({\n filter: filter, group: this.group, skip: 0, sort: this.sort, take: this.pageSize\n }))))\n .subscribe(x => {\n this.closeCell();\n this.cancelCell();\n this.dataStateChange.emit(x);\n });\n }\n attachEditHandlers() {\n if (!this.editService) {\n return;\n }\n this.editServiceSubscription = this.editService\n .changes.subscribe(this.emitCRUDEvent.bind(this));\n }\n emitCRUDEvent(args) {\n const { action, rowIndex, formGroup } = args;\n let dataItem = this.view.at(rowIndex - this.skip);\n if (action !== 'add' && !dataItem) {\n dataItem = formGroup.value;\n }\n this.closeCell();\n Object.assign(args, {\n dataItem: dataItem,\n sender: this\n });\n switch (action) {\n case 'add':\n this.add.emit(args);\n break;\n case 'cancel':\n this.cancel.emit(args);\n break;\n case 'edit':\n this.edit.emit(args);\n break;\n case 'remove':\n this.remove.emit(args);\n break;\n case 'save':\n this.save.emit(args);\n break;\n case 'cellClose':\n this.cellClose.emit(args);\n break;\n default: break;\n }\n }\n attachDomEventHandlers() {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe((args) => {\n this.cellClick.emit(Object.assign({ sender: this }, args));\n });\n }\n attachElementEventHandlers() {\n if (isUniversal()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const ariaRoot = this.ariaRoot.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n const resizeCheck = this.resizeCheck.bind(this);\n const resizeSubscription = this.renderer.listen('window', 'resize', resizeCheck);\n const orientationSubscription = this.renderer.listen('window', 'orientationchange', resizeCheck);\n const documentClickSubscription = this.renderer.listen('document', 'click', (args) => {\n const activeElement = document.activeElement;\n if (this.editService.shouldCloseCell() &&\n !closest(args.target, matchesClasses('k-animation-container k-grid-ignore-click')) &&\n !(activeElement &&\n (closest(activeElement, matchesClasses('k-animation-container')) ||\n isInEditedCell(activeElement, this.wrapper.nativeElement)))) {\n this.editService.closeCell(args);\n }\n });\n const windowBlurSubscription = this.renderer.listen('window', 'blur', (args) => {\n const activeElement = document.activeElement;\n if (activeElement && !(matchesNodeName('input')(activeElement) && activeElement.type === 'file' &&\n isInEditedCell(activeElement, this.wrapper.nativeElement))) {\n this.editService.closeCell(args);\n }\n this.domEvents.windowBlur.emit(args);\n });\n const clickSubscription = this.renderer.listen(wrapper, 'click', (args) => {\n this.domEvents.click.emit(args);\n });\n const keydownSubscription = this.renderer.listen(wrapper, 'keydown', (args) => {\n this.domEvents.keydown.emit(args);\n });\n // focusIn and focusOut are relative to the element with ARIA role \"grid\"\n let focused = false;\n const focusInSubscription = this.renderer.listen(ariaRoot, 'focusin', (args) => {\n this.domEvents.focus.emit(args);\n if (!focused) {\n this.domEvents.focusIn.emit(args);\n focused = true;\n }\n });\n const focusOutSubscription = this.renderer.listen(ariaRoot, 'focusout', (args) => {\n const next = args.relatedTarget || document.activeElement;\n const outside = !closest(next, (node) => node === ariaRoot);\n if (outside) {\n this.domEvents.focusOut.emit(args);\n focused = false;\n }\n });\n this.detachElementEventHandlers = () => {\n resizeSubscription();\n orientationSubscription();\n documentClickSubscription();\n windowBlurSubscription();\n clickSubscription();\n keydownSubscription();\n focusInSubscription();\n focusOutSubscription();\n };\n });\n }\n matchesMedia(c) {\n return this.responsiveService.matchesMedia(c.media);\n }\n resizeCheck() {\n if (window.innerWidth !== this.cachedWindowWidth) {\n this.cachedWindowWidth = window.innerWidth;\n let hasChanges = false;\n this.columnList.filterHierarchy(column => {\n const matchesMedia = this.matchesMedia(column);\n if (column.matchesMedia !== matchesMedia) {\n hasChanges = true;\n column.matchesMedia = matchesMedia;\n }\n return column.isVisible;\n });\n if (hasChanges) {\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n }\n emitPDFExportEvent() {\n const args = new PDFExportEvent();\n this.pdfExport.emit(args);\n if (!args.isDefaultPrevented()) {\n this.saveAsPDF();\n }\n }\n syncHeaderHeight(observable) {\n return observable\n .pipe(filter(() => isPresent(this.lockedHeader)))\n .subscribe(() => syncRowsHeight(this.lockedHeader.nativeElement.children[0], this.header.nativeElement.children[0]));\n }\n columnsContainerChange() {\n this.columnsContainerChangeSubscription =\n this.syncHeaderHeight(this.columnsContainer.changes.pipe(filter(() => this.lockedColumns.length > 0), switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1)))));\n }\n handleColumnResize() {\n const resizes = this.columnResizingService.changes;\n this.columnResizingSubscription = resizes.pipe(tap(e => {\n if (e.type === 'start') {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-grid-column-resizing');\n }\n else if (e.type === 'end') {\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-grid-column-resizing');\n }\n }), filter(e => e.type === 'start'), switchMap(() => resizes.pipe(\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(resizes.pipe(filter(e => e.type === 'triggerAutoFit'))), filter(e => e.type === 'end'))))\n .subscribe(this.notifyResize.bind(this));\n }\n notifyResize(e) {\n const args = e.resizedColumns\n .filter(item => isTruthy(item.column.resizable) && !item.column.isColumnGroup)\n .map(item => ({\n column: item.column,\n newWidth: item.column.width,\n oldWidth: item.oldWidth\n }));\n this.columnResize.emit(args);\n }\n assertNavigable() {\n if (isDevMode() && !this.navigable) {\n throw new Error('The Grid should be configured as [navigable]=\"true\" to control focus');\n }\n }\n navigationMetadata() {\n const isVirtual = this.isVirtual;\n const pageSize = this.pageSize;\n const dataRows = isVirtual ? this.view.total : pageSize;\n const addRowOffset = this.editService.hasNewItem ? 1 : 0;\n const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;\n const headerRows = this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;\n return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer);\n }\n updateNavigationMetadata() {\n this.navigationService.metadata = this.navigationMetadata();\n }\n applyAutoSize() {\n const cols = this.columns.filter((c) => this.autoSize ? c.autoSize !== false : c.autoSize);\n if (cols.length > 0) {\n this.ngZone.onStable.pipe(take(1)).subscribe(_ => this.autoFitColumns(cols));\n }\n }\n onColumnRangeChange(range) {\n const viewportColumns = this.viewportColumns = [];\n const leafViewportColumns = this.columnsContainer\n .nonLockedLeafColumns.toArray().slice(range.start, range.end + 1);\n for (let idx = 0; idx < leafViewportColumns.length; idx++) {\n let column = leafViewportColumns[idx];\n while (column.parent) {\n column = column.parent;\n }\n const toAdd = [column];\n while (toAdd.length) {\n column = toAdd.shift();\n viewportColumns.push(column);\n if (column.isColumnGroup) {\n toAdd.unshift.apply(toAdd, column.childrenArray);\n }\n }\n const lastFromGroup = viewportColumns[viewportColumns.length - 1];\n column = leafViewportColumns[idx];\n while (column !== lastFromGroup && idx < leafViewportColumns.length) {\n idx++;\n column = leafViewportColumns[idx];\n }\n }\n if (range.start > 0) {\n const first = leafViewportColumns[0];\n let offset = range.offset;\n let current = viewportColumns[0];\n let index = 0;\n while (current !== first) {\n offset -= current.isColumnGroup ? 0 : current.width;\n index++;\n current = viewportColumns[index];\n }\n if (offset > 0) {\n const totalLevels = this.columnsContainer.totalLevels;\n let previous;\n for (let idx = 0; idx <= totalLevels; idx++) {\n const offsetColumn = idx < totalLevels ? new ColumnGroupComponent(previous) : new ColumnBase(previous);\n previous = offsetColumn;\n offsetColumn.title = \"\\u00A0\";\n offsetColumn.width = offset;\n viewportColumns.unshift(offsetColumn);\n }\n }\n }\n this.leafViewportColumns = viewportColumns.filter(c => !c.isColumnGroup);\n }\n toggleDetailRowLegacy(index, expand) {\n const hasCallback = typeof this.isDetailExpanded === 'function';\n if (isDevMode() && hasCallback) {\n throw new Error('The expandRow and collapseRow methods should not be called when using the ' +\n 'kendoGridDetailsExpandBy directive or the isDetailExpanded callback. ' +\n 'These methods are provided only for backwards compatibility with legacy versions.');\n }\n if (!isDevMode() && hasCallback) {\n return;\n }\n if (this.detailsService.isExpanded(index, null) !== expand) {\n this.detailsService.toggleRow(index, null);\n }\n }\n toggleGroupRowLegacy(index, expand) {\n const hasCallback = typeof this.isGroupExpanded === 'function';\n if (isDevMode() && hasCallback) {\n throw new Error('The expandGroup and collapseGroup methods should not be called when using the ' +\n 'kendoGridExpandGroupBy directive or the isGroupExpanded callback. ' +\n 'These methods are provided only for backwards compatibility with legacy versions.');\n }\n if (!isDevMode() && hasCallback) {\n return;\n }\n if (this.groupsService.isExpanded({ groupIndex: index }) !== expand) {\n this.groupsService.toggleRow({ index });\n }\n }\n shouldResetSelection(selectableChanges) {\n const previousValue = selectableChanges.previousValue;\n if (!previousValue) {\n // Selection was disabled, no need to reset.\n return false;\n }\n const currentValue = selectableChanges.currentValue;\n if (!currentValue || currentValue.enabled === false) {\n // Selection disabled, reset.\n return true;\n }\n return previousValue.cell !== currentValue.cell;\n }\n}\nGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridComponent, deps: [{ token: BrowserSupportService }, { token: SelectionService }, { token: CellSelectionService }, { token: i0.ElementRef }, { token: GroupInfoService }, { token: GroupsService }, { token: ChangeNotificationService }, { token: DetailsService }, { token: EditService }, { token: FilterService }, { token: PDFService }, { token: ResponsiveService }, { token: i0.Renderer2 }, { token: ExcelService }, { token: i0.NgZone }, { token: ScrollSyncService }, { token: DomEventsService }, { token: ColumnResizingService }, { token: i0.ChangeDetectorRef }, { token: ColumnReorderService }, { token: ColumnInfoService }, { token: NavigationService }, { token: SortService }, { token: ScrollRequestService }, { token: i1.LocalizationService }, { token: ContextService }], target: i0.ɵɵFactoryTarget.Component });\nGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GridComponent, selector: \"kendo-grid\", inputs: { data: \"data\", pageSize: \"pageSize\", height: \"height\", rowHeight: \"rowHeight\", detailRowHeight: \"detailRowHeight\", skip: \"skip\", scrollable: \"scrollable\", selectable: \"selectable\", sort: \"sort\", trackBy: \"trackBy\", filter: \"filter\", group: \"group\", virtualColumns: \"virtualColumns\", filterable: \"filterable\", sortable: \"sortable\", pageable: \"pageable\", groupable: \"groupable\", navigable: \"navigable\", navigatable: \"navigatable\", autoSize: \"autoSize\", rowClass: \"rowClass\", rowSticky: \"rowSticky\", rowSelected: \"rowSelected\", cellSelected: \"cellSelected\", resizable: \"resizable\", reorderable: \"reorderable\", loading: \"loading\", columnMenu: \"columnMenu\", hideHeader: \"hideHeader\", isDetailExpanded: \"isDetailExpanded\", isGroupExpanded: \"isGroupExpanded\" }, outputs: { filterChange: \"filterChange\", pageChange: \"pageChange\", groupChange: \"groupChange\", sortChange: \"sortChange\", selectionChange: \"selectionChange\", dataStateChange: \"dataStateChange\", groupExpand: \"groupExpand\", groupCollapse: \"groupCollapse\", detailExpand: \"detailExpand\", detailCollapse: \"detailCollapse\", edit: \"edit\", cancel: \"cancel\", save: \"save\", remove: \"remove\", add: \"add\", cellClose: \"cellClose\", cellClick: \"cellClick\", pdfExport: \"pdfExport\", excelExport: \"excelExport\", columnResize: \"columnResize\", columnReorder: \"columnReorder\", columnVisibilityChange: \"columnVisibilityChange\", columnLockedChange: \"columnLockedChange\", columnStickyChange: \"columnStickyChange\", scrollBottom: \"scrollBottom\", contentScroll: \"contentScroll\" }, host: { properties: { \"attr.dir\": \"this.dir\", \"class.k-grid\": \"this.hostClasses\", \"class.k-grid-lockedcolumns\": \"this.lockedClasses\", \"class.k-grid-virtual\": \"this.virtualClasses\", \"class.k-grid-no-scrollbar\": \"this.noScrollbarClass\" } }, providers: [\n BrowserSupportService,\n LocalizationService,\n ColumnInfoService,\n SelectionService,\n CellSelectionService,\n DetailsService,\n GroupsService,\n GroupInfoService,\n ChangeNotificationService,\n EditService,\n PDFService,\n SuspendService,\n {\n provide: CELL_CONTEXT,\n useValue: EMPTY_CELL_CONTEXT\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.grid'\n },\n FilterService,\n ResponsiveService,\n PagerContextService,\n ExcelService,\n ScrollSyncService,\n ResizeService,\n LocalDataChangesService,\n DomEventsService,\n ColumnResizingService,\n SinglePopupService,\n DragAndDropService,\n DragHintService,\n DropCueService,\n ColumnReorderService,\n NavigationService,\n FocusRoot,\n IdService,\n ScrollRequestService,\n SortService,\n ContextService\n ], queries: [{ propertyName: \"columns\", predicate: ColumnBase }, { propertyName: \"detailTemplateChildren\", predicate: DetailTemplateDirective }, { propertyName: \"cellLoadingTemplateChildren\", predicate: CellLoadingTemplateDirective }, { propertyName: \"loadingTemplateChildren\", predicate: LoadingTemplateDirective }, { propertyName: \"noRecordsTemplateChildren\", predicate: NoRecordsTemplateDirective }, { propertyName: \"pagerTemplateChildren\", predicate: PagerTemplateDirective }, { propertyName: \"toolbarTemplateChildren\", predicate: ToolbarTemplateDirective }, { propertyName: \"columnMenuTemplates\", predicate: ColumnMenuTemplateDirective }], viewQueries: [{ propertyName: \"lockedHeader\", first: true, predicate: [\"lockedHeader\"], descendants: true }, { propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"ariaRoot\", first: true, predicate: [\"ariaRoot\"], descendants: true, static: true }, { propertyName: \"footer\", predicate: [\"footer\"], descendants: true }], exportAs: [\"kendoGrid\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n
\n \n
\n
\n \n \n \n \n \n
\n
0\"\n [lockedWidth]=\"lockedWidth + scrollbarWidth + 2\">\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n \n `, isInline: true, styles: [\" .k-grid .k-grid-aria-root {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto;\\n overflow: hidden;\\n }\\n\\n .k-grid .k-filter-row td {\\n white-space: nowrap;\\n }\"], components: [{ type: ToolbarComponent, selector: \"kendo-grid-toolbar\", inputs: [\"position\"] }, { type: PagerComponent, selector: \"kendo-pager\", inputs: [\"total\", \"skip\", \"pageSize\", \"options\", \"template\"], outputs: [\"pageChange\"] }, { type: GroupPanelComponent, selector: \"kendo-grid-group-panel\", inputs: [\"text\", \"groups\"], outputs: [\"change\"] }, { type: ColGroupComponent, selector: \"[kendoGridColGroup]\", inputs: [\"columns\", \"groups\", \"detailTemplate\"] }, { type: HeaderComponent, selector: \"[kendoGridHeader]\", inputs: [\"totalColumnLevels\", \"columns\", \"groups\", \"detailTemplate\", \"scrollable\", \"filterable\", \"sort\", \"filter\", \"sortable\", \"groupable\", \"lockedColumnsCount\", \"resizable\", \"reorderable\", \"columnMenu\", \"columnMenuTemplate\", \"totalColumnsCount\", \"tabIndex\"] }, { type: ListComponent, selector: \"kendo-grid-list\", inputs: [\"data\", \"groups\", \"total\", \"rowHeight\", \"stickyRowHeight\", \"detailRowHeight\", \"take\", \"skip\", \"columns\", \"detailTemplate\", \"noRecordsTemplate\", \"selectable\", \"groupable\", \"filterable\", \"rowClass\", \"rowSticky\", \"loading\", \"trackBy\", \"virtualColumns\", \"isVirtual\", \"cellLoadingTemplate\", \"loadingTemplate\"], outputs: [\"contentScroll\", \"pageChange\", \"scrollBottom\"] }, { type: FooterComponent, selector: \"[kendoGridFooter]\", inputs: [\"columns\", \"groups\", \"detailTemplate\", \"scrollable\", \"lockedColumnsCount\", \"logicalRowIndex\"] }, { type: TableBodyComponent, selector: \"[kendoGridTableBody]\", inputs: [\"columns\", \"allColumns\", \"groups\", \"detailTemplate\", \"noRecordsTemplate\", \"data\", \"skip\", \"selectable\", \"filterable\", \"noRecordsText\", \"isLocked\", \"isLoading\", \"isVirtual\", \"cellLoadingTemplate\", \"skipGroupDecoration\", \"showGroupFooters\", \"lockedColumnsCount\", \"totalColumnsCount\", \"virtualColumns\", \"trackBy\", \"rowSticky\", \"rowClass\"] }, { type: LoadingComponent, selector: \"[kendoGridLoading]\", inputs: [\"loadingTemplate\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoGridLocalizedMessages]\" }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TableDirective, selector: \"table\", inputs: [\"locked\", \"virtualColumns\"] }, { type: ResizableContainerDirective, selector: \"[kendoGridResizableContainer]\", inputs: [\"lockedWidth\", \"kendoGridResizableContainer\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: GridMarqueeDirective, selector: \"[kendoGridSelectionMarquee]\" }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridComponent, decorators: [{\n type: Component,\n args: [{\n encapsulation: ViewEncapsulation.None,\n exportAs: 'kendoGrid',\n providers: [\n BrowserSupportService,\n LocalizationService,\n ColumnInfoService,\n SelectionService,\n CellSelectionService,\n DetailsService,\n GroupsService,\n GroupInfoService,\n ChangeNotificationService,\n EditService,\n PDFService,\n SuspendService,\n {\n provide: CELL_CONTEXT,\n useValue: EMPTY_CELL_CONTEXT\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.grid'\n },\n FilterService,\n ResponsiveService,\n PagerContextService,\n ExcelService,\n ScrollSyncService,\n ResizeService,\n LocalDataChangesService,\n DomEventsService,\n ColumnResizingService,\n SinglePopupService,\n DragAndDropService,\n DragHintService,\n DropCueService,\n ColumnReorderService,\n NavigationService,\n FocusRoot,\n IdService,\n ScrollRequestService,\n SortService,\n ContextService\n ],\n selector: 'kendo-grid',\n styles: [\n // Styles for backwards compatibility with kendo-theme-default@v2.46.0 and earlier.\n ` .k-grid .k-grid-aria-root {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n overflow: hidden;\n }\n\n .k-grid .k-filter-row td {\n white-space: nowrap;\n }`\n ],\n template: `\n \n \n \n \n \n \n \n
\n \n
\n
\n \n \n \n \n \n
\n
0\"\n [lockedWidth]=\"lockedWidth + scrollbarWidth + 2\">\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BrowserSupportService }, { type: SelectionService }, { type: CellSelectionService }, { type: i0.ElementRef }, { type: GroupInfoService }, { type: GroupsService }, { type: ChangeNotificationService }, { type: DetailsService }, { type: EditService }, { type: FilterService }, { type: PDFService }, { type: ResponsiveService }, { type: i0.Renderer2 }, { type: ExcelService }, { type: i0.NgZone }, { type: ScrollSyncService }, { type: DomEventsService }, { type: ColumnResizingService }, { type: i0.ChangeDetectorRef }, { type: ColumnReorderService }, { type: ColumnInfoService }, { type: NavigationService }, { type: SortService }, { type: ScrollRequestService }, { type: i1.LocalizationService }, { type: ContextService }]; }, propDecorators: { data: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], height: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], skip: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], sort: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], filter: [{\n type: Input\n }], group: [{\n type: Input\n }], virtualColumns: [{\n type: Input\n }], filterable: [{\n type: Input\n }], sortable: [{\n type: Input\n }], pageable: [{\n type: Input\n }], groupable: [{\n type: Input\n }], navigable: [{\n type: Input\n }], navigatable: [{\n type: Input\n }], autoSize: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowSticky: [{\n type: Input\n }], rowSelected: [{\n type: Input\n }], cellSelected: [{\n type: Input\n }], resizable: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], loading: [{\n type: Input\n }], columnMenu: [{\n type: Input\n }], hideHeader: [{\n type: Input\n }], filterChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], groupChange: [{\n type: Output\n }], sortChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], dataStateChange: [{\n type: Output\n }], groupExpand: [{\n type: Output\n }], groupCollapse: [{\n type: Output\n }], detailExpand: [{\n type: Output\n }], detailCollapse: [{\n type: Output\n }], edit: [{\n type: Output\n }], cancel: [{\n type: Output\n }], save: [{\n type: Output\n }], remove: [{\n type: Output\n }], add: [{\n type: Output\n }], cellClose: [{\n type: Output\n }], cellClick: [{\n type: Output\n }], pdfExport: [{\n type: Output\n }], excelExport: [{\n type: Output\n }], columnResize: [{\n type: Output\n }], columnReorder: [{\n type: Output\n }], columnVisibilityChange: [{\n type: Output\n }], columnLockedChange: [{\n type: Output\n }], columnStickyChange: [{\n type: Output\n }], scrollBottom: [{\n type: Output\n }], contentScroll: [{\n type: Output\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase]\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-grid']\n }], lockedClasses: [{\n type: HostBinding,\n args: ['class.k-grid-lockedcolumns']\n }], virtualClasses: [{\n type: HostBinding,\n args: ['class.k-grid-virtual']\n }], noScrollbarClass: [{\n type: HostBinding,\n args: ['class.k-grid-no-scrollbar']\n }], detailTemplateChildren: [{\n type: ContentChildren,\n args: [DetailTemplateDirective]\n }], cellLoadingTemplateChildren: [{\n type: ContentChildren,\n args: [CellLoadingTemplateDirective]\n }], loadingTemplateChildren: [{\n type: ContentChildren,\n args: [LoadingTemplateDirective]\n }], noRecordsTemplateChildren: [{\n type: ContentChildren,\n args: [NoRecordsTemplateDirective]\n }], pagerTemplateChildren: [{\n type: ContentChildren,\n args: [PagerTemplateDirective]\n }], toolbarTemplateChildren: [{\n type: ContentChildren,\n args: [ToolbarTemplateDirective]\n }], columnMenuTemplates: [{\n type: ContentChildren,\n args: [ColumnMenuTemplateDirective]\n }], lockedHeader: [{\n type: ViewChild,\n args: ['lockedHeader', { static: false }]\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], footer: [{\n type: ViewChildren,\n args: ['footer']\n }], ariaRoot: [{\n type: ViewChild,\n args: ['ariaRoot', { static: true }]\n }], isDetailExpanded: [{\n type: Input\n }], isGroupExpanded: [{\n type: Input\n }] } });\n\n/**\n * A directive which encapsulates the in-memory handling of data operations such as [paging]({% slug paging_grid %}),\n * [sorting]({% slug sorting_grid %}), and [grouping]({% slug groupingbasics_grid %})\n * ([more information and examples]({% slug automaticoperations_grid %})).\n */\nclass DataBindingDirective {\n constructor(grid, changeDetector, localDataChangesService) {\n this.grid = grid;\n this.changeDetector = changeDetector;\n this.localDataChangesService = localDataChangesService;\n this.state = {\n skip: 0\n };\n this.originalData = [];\n if (localDataChangesService) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe(this.rebind.bind(this));\n }\n }\n /**\n * Defines the number of records that will be skipped by the pager.\n */\n set skip(value) {\n if (!isPresent(value)) {\n value = 0;\n }\n this.grid.skip = this.state.skip = value;\n }\n /**\n * Defines the descriptors by which the data will be sorted.\n */\n set sort(value) {\n this.grid.sort = this.state.sort = value;\n }\n /**\n * Defines the descriptor by which the data will be filtered.\n */\n set filter(value) {\n this.grid.filter = this.state.filter = value;\n }\n /**\n * Defines the page size used by the Grid pager.\n */\n set pageSize(value) {\n this.grid.pageSize = this.state.take = value;\n }\n /**\n * The descriptors by which the data will be grouped.\n */\n set group(value) {\n this.grid.group = this.state.group = value;\n }\n /**\n * The array of data which will be used to populate the Grid.\n */\n set data(value) {\n this.originalData = value || [];\n if (this.localDataChangesService) {\n this.localDataChangesService.data = value;\n }\n this.dataChanged = true;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.applyState(this.state);\n this.stateChangeSubscription = this.grid\n .dataStateChange\n .subscribe(this.onStateChange.bind(this));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.stateChangeSubscription) {\n this.stateChangeSubscription.unsubscribe();\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged([\"pageSize\", \"skip\", \"sort\", \"group\", \"filter\"], changes)) {\n this.rebind();\n }\n }\n ngDoCheck() {\n if (this.dataChanged) {\n this.updateGridData();\n }\n }\n /**\n * @hidden\n */\n onStateChange(state) {\n this.applyState(state);\n this.rebind();\n }\n /**\n * @hidden\n */\n rebind() {\n this.data = this.originalData;\n this.updateGridData();\n this.notifyDataChange();\n }\n /**\n * Notifies the Grid that its data has changed.\n */\n notifyDataChange() {\n this.grid.onDataChange();\n if (this.changeDetector) {\n this.changeDetector.markForCheck();\n }\n }\n process(state) {\n return process(this.originalData, state);\n }\n applyState({ skip, take, sort, group, filter }) {\n this.skip = skip;\n this.pageSize = take;\n this.sort = sort;\n this.group = group;\n this.filter = filter;\n }\n updateGridData() {\n this.grid.data = this.process(this.state);\n this.dataChanged = false;\n }\n}\nDataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nDataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DataBindingDirective, selector: \"[kendoGridBinding]\", inputs: { skip: \"skip\", sort: \"sort\", filter: \"filter\", pageSize: \"pageSize\", group: \"group\", data: [\"kendoGridBinding\", \"data\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridBinding]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, propDecorators: { skip: [{\n type: Input\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], group: [{\n type: Input\n }], data: [{\n type: Input,\n args: [\"kendoGridBinding\"]\n }] } });\n\n/**\n * A directive which stores the row selection state of the Grid in memory\n * ([see example]({% slug selection_grid %}#toc-during-data-operations)).\n */\nclass SelectionDirective extends Selection {\n constructor(ctx, cd) {\n super(ctx, cd);\n this.ctx = ctx;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.ctx.grid.selectable === false) {\n this.ctx.grid.selectable = true;\n }\n this.ctx.grid.selectionDirective = this;\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n super.destroy();\n }\n}\nSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionDirective, deps: [{ token: ContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectionDirective, selector: \"[kendoGridSelectBy]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSelectBy]'\n }]\n }], ctorParameters: function () { return [{ type: ContextService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * A directive which controls the expanded state of the master detail rows.\n */\nclass ExpandDetailsDirective {\n constructor(grid) {\n this.grid = grid;\n /**\n * Fires when the expandedDetailKeys are changed.\n */\n this.expandedDetailKeysChange = new EventEmitter();\n /**\n * Defines the collection that will store the expanded keys.\n */\n this.expandedDetailKeys = [];\n /**\n * Specifies if the items should be initially expanded.\n * When set to `true` items added to the `expandedDetailKeys` collection will be collapsed, and items that are not present in it will be expanded.\n *\n * @default false\n */\n this.initiallyExpanded = false;\n this.expandedState = new Set();\n this.subscriptions = new Subscription();\n this.grid.isDetailExpanded = this.isExpanded.bind(this);\n this.subscriptions.add(merge(this.grid.detailExpand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.grid.detailCollapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleState.bind(this)));\n }\n /**\n * Defines the item key that will be stored in the `expandedDetailKeys` collection ([see example]({% slug master_detail_expanded_state_grid %}#toc-built-in-directive)).\n */\n get expandDetailsKey() {\n return this._expandBy;\n }\n set expandDetailsKey(key) {\n if (isString(key)) {\n this._expandBy = getter(key);\n }\n else {\n this._expandBy = key;\n }\n }\n /**\n *\n * @hidden\n * A deprecated alias for setting the `expandDetailsKey` property.\n */\n get expandDetailBy() {\n return this.expandDetailsKey;\n }\n set expandDetailBy(key) {\n this.expandDetailsKey = key;\n }\n ngOnChanges(changes) {\n // skip reinitialization if the user data is the same as the last state change\n if (isPresent(changes.expandedDetailKeys) && this.lastExpandedState !== this.expandedDetailKeys) {\n this.expandedState = new Set(this.expandedDetailKeys);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n get keyGetter() {\n return this._expandBy || getter(undefined);\n }\n /**\n * @hidden\n */\n isExpanded(args) {\n const key = this.keyGetter(args.dataItem);\n const hasKey = this.expandedState.has(key);\n // when [initiallyExpanded]=\"true\" a present key means the corresponding detail row is collapsed\n return this.initiallyExpanded ? !hasKey : hasKey;\n }\n toggleState(args) {\n const key = this.keyGetter(args.dataItem);\n if (Boolean(this.initiallyExpanded) !== args.expand) {\n this.expandedState.add(key);\n }\n else {\n this.expandedState.delete(key);\n }\n this.notifyChange();\n }\n notifyChange() {\n this.lastExpandedState = Array.from(this.expandedState);\n this.expandedDetailKeysChange.emit(this.lastExpandedState);\n }\n}\nExpandDetailsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDetailsDirective, deps: [{ token: GridComponent }], target: i0.ɵɵFactoryTarget.Directive });\nExpandDetailsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandDetailsDirective, selector: \"[kendoGridExpandDetailsBy]\", inputs: { expandDetailsKey: [\"kendoGridExpandDetailsBy\", \"expandDetailsKey\"], expandDetailBy: \"expandDetailBy\", expandedDetailKeys: \"expandedDetailKeys\", initiallyExpanded: \"initiallyExpanded\" }, outputs: { expandedDetailKeysChange: \"expandedDetailKeysChange\" }, exportAs: [\"kendoGridExpandDetailsBy\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDetailsDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridExpandDetailsBy]',\n exportAs: 'kendoGridExpandDetailsBy'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }]; }, propDecorators: { expandedDetailKeysChange: [{\n type: Output\n }], expandDetailsKey: [{\n type: Input,\n args: ['kendoGridExpandDetailsBy']\n }], expandDetailBy: [{\n type: Input\n }], expandedDetailKeys: [{\n type: Input\n }], initiallyExpanded: [{\n type: Input\n }] } });\n\nconst mapParentGroup = (parentGroup) => {\n const parentGroupKeys = [];\n while (parentGroup) {\n parentGroupKeys.push({ field: parentGroup.group.field, value: parentGroup.group.value });\n parentGroup = parentGroup.parentGroup;\n }\n return parentGroupKeys;\n};\nconst DEFAULT_KEY_GETTER = (groupRowArgs) => ({\n field: groupRowArgs.group.field,\n value: groupRowArgs.group.value,\n parentGroupKeys: mapParentGroup(groupRowArgs.parentGroup)\n});\n/**\n * A directive which controls the expanded state of the group rows\n * ([see example]({% slug groups_expanded_state_grid %}#toc-built-in-directive)).\n */\nclass ExpandGroupDirective {\n constructor(grid) {\n this.grid = grid;\n /**\n * Fires when the expandedGroupKeys are changed.\n */\n this.expandedGroupKeysChange = new EventEmitter();\n /**\n * Specifies if the group items should be initially expanded.\n * @default false\n */\n this.groupsInitiallyExpanded = false;\n this.subscriptions = new Subscription();\n this.grid.isGroupExpanded = this.isExpanded.bind(this);\n this.subscriptions.add(merge(this.grid.groupExpand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.grid.groupCollapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleState.bind(this)));\n }\n /**\n * Defines the item format that will be stored in the `expandedGroupKeys`\n * ([see example]({% slug groups_expanded_state_grid %}#toc-custom-group-key-format)).\n */\n get expandGroupBy() {\n return this._expandGroupBy;\n }\n set expandGroupBy(key) {\n if (typeof key === 'function') {\n this._expandGroupBy = key;\n }\n }\n /**\n * Defines the collection that will store the expanded group keys.\n */\n get expandedGroupKeys() {\n return this._expandedGroupKeys;\n }\n set expandedGroupKeys(expandedGroups) {\n this._expandedGroupKeys = (expandedGroups || []).slice();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n get keyGetter() {\n return this.expandGroupBy || DEFAULT_KEY_GETTER;\n }\n /**\n * @hidden\n */\n isExpanded(groupArgs) {\n const itemIndex = this.getItemIndex(groupArgs);\n return itemIndex > -1 ? !this.groupsInitiallyExpanded : this.groupsInitiallyExpanded;\n }\n getItemIndex(groupArgs) {\n if (this.expandGroupBy) {\n return this.expandedGroupKeys.indexOf(this.keyGetter(groupArgs));\n }\n return this.expandedGroupKeys.findIndex(item => {\n let index = 0;\n let parentGroup = groupArgs.parentGroup;\n while (isPresent(parentGroup)) {\n if (!isPresent(item.parentGroupKeys) || !isPresent(item.parentGroupKeys[index]) ||\n parentGroup.group.value !== item.parentGroupKeys[index].value ||\n parentGroup.group.field !== item.parentGroupKeys[index].field) {\n return false;\n }\n parentGroup = parentGroup.parentGroup;\n index++;\n }\n return item.value === groupArgs.group.value && item.field === groupArgs.group.field;\n });\n }\n toggleState(groupArgs) {\n const key = this.keyGetter(groupArgs);\n if (Boolean(this.groupsInitiallyExpanded) !== groupArgs.expand) {\n this.expandedGroupKeys.push(key);\n }\n else {\n const index = this.expandedGroupKeys.indexOf(key);\n this.expandedGroupKeys.splice(index, 1);\n }\n this.expandedGroupKeysChange.emit(this.expandedGroupKeys.slice());\n }\n}\nExpandGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandGroupDirective, deps: [{ token: GridComponent }], target: i0.ɵɵFactoryTarget.Directive });\nExpandGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandGroupDirective, selector: \"[kendoGridExpandGroupBy]\", inputs: { expandGroupBy: [\"kendoGridExpandGroupBy\", \"expandGroupBy\"], expandedGroupKeys: \"expandedGroupKeys\", groupsInitiallyExpanded: \"groupsInitiallyExpanded\" }, outputs: { expandedGroupKeysChange: \"expandedGroupKeysChange\" }, exportAs: [\"kendoGridExpandGroupBy\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandGroupDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridExpandGroupBy]',\n exportAs: 'kendoGridExpandGroupBy'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }]; }, propDecorators: { expandedGroupKeysChange: [{\n type: Output\n }], expandGroupBy: [{\n type: Input,\n args: ['kendoGridExpandGroupBy']\n }], expandedGroupKeys: [{\n type: Input\n }], groupsInitiallyExpanded: [{\n type: Input\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_grid %}#toc-localization)).\n */\nclass CustomMessagesComponent extends GridMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-grid-messages\", providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: GridMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-grid-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n// eslint-disable no-access-missing-member\nconst stringOperators = localizeOperators({\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\"\n});\n/**\n * @hidden\n */\nclass AutoCompleteFilterCellComponent extends BaseFilterCellComponent {\n constructor(filterService, column, localization) {\n super(filterService);\n this.localization = localization;\n this.showOperators = true;\n this.defaultOperators = stringOperators(this.localization);\n this.column = column;\n }\n set valueField(value) {\n this._valueField = value;\n }\n get valueField() {\n return this._valueField ? this._valueField : this.column.field;\n }\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : \"contains\";\n }\n}\nAutoCompleteFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteFilterCellComponent, deps: [{ token: FilterService }, { token: ColumnComponent }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAutoCompleteFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AutoCompleteFilterCellComponent, selector: \"kendo-grid-autocomplete-filter-cell\", inputs: { showOperators: \"showOperators\", column: \"column\", filter: \"filter\", data: \"data\", valueField: \"valueField\" }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: FilterCellWrapperComponent, selector: \"kendo-grid-filter-wrapper-cell\", inputs: [\"showOperators\"] }, { type: i1$4.AutoCompleteComponent, selector: \"kendo-autocomplete\", inputs: [\"highlightFirst\", \"focusableId\", \"data\", \"value\", \"valueField\", \"placeholder\", \"popupSettings\", \"listHeight\", \"loading\", \"clearButton\", \"suggest\", \"disabled\", \"itemDisabled\", \"readonly\", \"tabindex\", \"tabIndex\", \"filterable\", \"virtual\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"filterChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoAutoComplete\"] }], directives: [{ type: FilterInputDirective, selector: \"[kendoFilterInput]\", inputs: [\"filterDelay\", \"columnLabel\", \"value\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteFilterCellComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-autocomplete-filter-cell',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FilterService }, { type: ColumnComponent }, { type: i1.LocalizationService }]; }, propDecorators: { showOperators: [{\n type: Input\n }], column: [{\n type: Input\n }], filter: [{\n type: Input\n }], data: [{\n type: Input\n }], valueField: [{\n type: Input\n }] } });\n\nconst exportedModules$5 = [\n ColumnComponent,\n ColumnGroupComponent,\n LogicalCellDirective,\n LogicalRowDirective,\n FocusableDirective,\n FooterTemplateDirective,\n ColGroupComponent,\n ResizableContainerDirective,\n TemplateContextDirective,\n FieldAccessorPipe,\n DetailTemplateDirective,\n SpanColumnComponent,\n TableDirective,\n LoadingComponent\n];\n/**\n * @hidden\n */\nclass SharedModule {\n static exports() {\n return [\n ColumnComponent,\n SpanColumnComponent,\n ColumnGroupComponent,\n FooterTemplateDirective,\n DetailTemplateDirective,\n FocusableDirective\n ];\n }\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [ColumnComponent,\n ColumnGroupComponent,\n LogicalCellDirective,\n LogicalRowDirective,\n FocusableDirective,\n FooterTemplateDirective,\n ColGroupComponent,\n ResizableContainerDirective,\n TemplateContextDirective,\n FieldAccessorPipe,\n DetailTemplateDirective,\n SpanColumnComponent,\n TableDirective,\n LoadingComponent], imports: [CommonModule], exports: [ColumnComponent,\n ColumnGroupComponent,\n LogicalCellDirective,\n LogicalRowDirective,\n FocusableDirective,\n FooterTemplateDirective,\n ColGroupComponent,\n ResizableContainerDirective,\n TemplateContextDirective,\n FieldAccessorPipe,\n DetailTemplateDirective,\n SpanColumnComponent,\n TableDirective,\n LoadingComponent, DraggableModule, EventsModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule], DraggableModule, EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$5],\n exports: [exportedModules$5, DraggableModule, EventsModule],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the `Contains` (**Contains**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass ContainsFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"contains\", localization); }\n}\nContainsFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContainsFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nContainsFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContainsFilterOperatorComponent, selector: \"kendo-filter-contains-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => ContainsFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContainsFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => ContainsFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-contains-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `DoesNotContain` (**Does not contain**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass DoesNotContainFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"doesnotcontain\", localization); }\n}\nDoesNotContainFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DoesNotContainFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDoesNotContainFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DoesNotContainFilterOperatorComponent, selector: \"kendo-filter-not-contains-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => DoesNotContainFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DoesNotContainFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => DoesNotContainFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-not-contains-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `EndsWith` (**Ends with**) string filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass EndsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"endswith\", localization); }\n}\nEndsWithFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EndsWithFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nEndsWithFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EndsWithFilterOperatorComponent, selector: \"kendo-filter-endswith-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EndsWithFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EndsWithFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EndsWithFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-endswith-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `Equal` (**Is equal to**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass EqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"eq\", localization); }\n}\nEqualFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EqualFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nEqualFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EqualFilterOperatorComponent, selector: \"kendo-filter-eq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EqualFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EqualFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EqualFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-eq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsEmpty` (**Is empty**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isempty\", localization); }\n}\nIsEmptyFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsEmptyFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsEmptyFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsEmptyFilterOperatorComponent, selector: \"kendo-filter-isempty-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsEmptyFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsEmptyFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsEmptyFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isempty-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsNotEmpty` (**Is not empty**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsNotEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnotempty\", localization); }\n}\nIsNotEmptyFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotEmptyFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsNotEmptyFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsNotEmptyFilterOperatorComponent, selector: \"kendo-filter-isnotempty-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotEmptyFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotEmptyFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotEmptyFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isnotempty-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsNotNull` (**Is not null**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsNotNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnotnull\", localization); }\n}\nIsNotNullFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotNullFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsNotNullFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsNotNullFilterOperatorComponent, selector: \"kendo-filter-isnotnull-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotNullFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNotNullFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotNullFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isnotnull-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `IsNull` (**Is null**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass IsNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"isnull\", localization); }\n}\nIsNullFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNullFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nIsNullFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: IsNullFilterOperatorComponent, selector: \"kendo-filter-isnull-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNullFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IsNullFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNullFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-isnull-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `NotEqual` (**Is not equal to**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass NotEqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"neq\", localization); }\n}\nNotEqualFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotEqualFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNotEqualFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NotEqualFilterOperatorComponent, selector: \"kendo-filter-neq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => NotEqualFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotEqualFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => NotEqualFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-neq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `StartsWith` (**Starts with**) filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass StartsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"startswith\", localization); }\n}\nStartsWithFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StartsWithFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStartsWithFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StartsWithFilterOperatorComponent, selector: \"kendo-filter-startswith-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => StartsWithFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StartsWithFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => StartsWithFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-startswith-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Greater` (**Is greater than**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass GreaterFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"gt\", localization); }\n}\nGreaterFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGreaterFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GreaterFilterOperatorComponent, selector: \"kendo-filter-gt-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-gt-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the `GreaterOrEqualTo` (**Is greater than or equal to**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass GreaterOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"gte\", localization); }\n}\nGreaterOrEqualToFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterOrEqualToFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGreaterOrEqualToFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GreaterOrEqualToFilterOperatorComponent, selector: \"kendo-filter-gte-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterOrEqualToFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GreaterOrEqualToFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterOrEqualToFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-gte-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Less` (**Is less than**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass LessFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"lt\", localization); }\n}\nLessFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLessFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LessFilterOperatorComponent, selector: \"kendo-filter-lt-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-lt-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `LessOrEqualTo` (**Is less than or equal to**) numeric filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass LessOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"lte\", localization); }\n}\nLessOrEqualToFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessOrEqualToFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLessOrEqualToFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LessOrEqualToFilterOperatorComponent, selector: \"kendo-filter-lte-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessOrEqualToFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LessOrEqualToFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessOrEqualToFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-lte-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Greater` (**Is after**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass AfterFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"after\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"gt\"\n };\n }\n}\nAfterFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAfterFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AfterFilterOperatorComponent, selector: \"kendo-filter-after-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-after-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `GreaterOrEqualTo` (**Is after or equal to**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass AfterEqFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"after-eq\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"gte\"\n };\n }\n}\nAfterEqFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterEqFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAfterEqFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AfterEqFilterOperatorComponent, selector: \"kendo-filter-after-eq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterEqFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AfterEqFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterEqFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-after-eq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `LessOrEqualTo` (**Is before or equal to**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass BeforeEqFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"before-eq\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"lte\"\n };\n }\n}\nBeforeEqFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeEqFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBeforeEqFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BeforeEqFilterOperatorComponent, selector: \"kendo-filter-before-eq-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeEqFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeEqFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeEqFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-before-eq-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/*\n * Represents the `Less then` (**Is before**) date filter operator.\n *\n * For more information and examples, refer to:\n * * [Setting the default filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-default-filter-operator)\n * * [Setting the order of the filter operators]({% slug builtinfiltertemplate_grid %}#toc-setting-the-order-of-the-filter-operators)\n */\nclass BeforeFilterOperatorComponent extends FilterOperatorBase {\n constructor(localization) { super(\"before\", localization); }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"lt\"\n };\n }\n}\nBeforeFilterOperatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeFilterOperatorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBeforeFilterOperatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BeforeFilterOperatorComponent, selector: \"kendo-filter-before-operator\", providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeFilterOperatorComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BeforeFilterOperatorComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeFilterOperatorComponent)\n }\n ],\n selector: 'kendo-filter-before-operator',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst FILTER_OPERATORS = [\n FilterCellOperatorsComponent,\n ContainsFilterOperatorComponent,\n DoesNotContainFilterOperatorComponent,\n EndsWithFilterOperatorComponent,\n EqualFilterOperatorComponent,\n IsEmptyFilterOperatorComponent,\n IsNotEmptyFilterOperatorComponent,\n IsNotNullFilterOperatorComponent,\n IsNullFilterOperatorComponent,\n NotEqualFilterOperatorComponent,\n StartsWithFilterOperatorComponent,\n GreaterFilterOperatorComponent,\n GreaterOrEqualToFilterOperatorComponent,\n LessFilterOperatorComponent,\n LessOrEqualToFilterOperatorComponent,\n AfterFilterOperatorComponent,\n AfterEqFilterOperatorComponent,\n BeforeEqFilterOperatorComponent,\n BeforeFilterOperatorComponent\n];\nconst importedModules$4 = [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule\n];\nconst COMPONENTS$1 = [\n FilterInputDirective\n];\n/**\n * @hidden\n */\nclass SharedFilterModule {\n static exports() {\n return [\n ...FILTER_OPERATORS\n ];\n }\n}\nSharedFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, declarations: [FilterCellOperatorsComponent,\n ContainsFilterOperatorComponent,\n DoesNotContainFilterOperatorComponent,\n EndsWithFilterOperatorComponent,\n EqualFilterOperatorComponent,\n IsEmptyFilterOperatorComponent,\n IsNotEmptyFilterOperatorComponent,\n IsNotNullFilterOperatorComponent,\n IsNullFilterOperatorComponent,\n NotEqualFilterOperatorComponent,\n StartsWithFilterOperatorComponent,\n GreaterFilterOperatorComponent,\n GreaterOrEqualToFilterOperatorComponent,\n LessFilterOperatorComponent,\n LessOrEqualToFilterOperatorComponent,\n AfterFilterOperatorComponent,\n AfterEqFilterOperatorComponent,\n BeforeEqFilterOperatorComponent,\n BeforeFilterOperatorComponent, FilterInputDirective], imports: [CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule], exports: [FilterCellOperatorsComponent,\n ContainsFilterOperatorComponent,\n DoesNotContainFilterOperatorComponent,\n EndsWithFilterOperatorComponent,\n EqualFilterOperatorComponent,\n IsEmptyFilterOperatorComponent,\n IsNotEmptyFilterOperatorComponent,\n IsNotNullFilterOperatorComponent,\n IsNullFilterOperatorComponent,\n NotEqualFilterOperatorComponent,\n StartsWithFilterOperatorComponent,\n GreaterFilterOperatorComponent,\n GreaterOrEqualToFilterOperatorComponent,\n LessFilterOperatorComponent,\n LessOrEqualToFilterOperatorComponent,\n AfterFilterOperatorComponent,\n AfterEqFilterOperatorComponent,\n BeforeEqFilterOperatorComponent,\n BeforeFilterOperatorComponent, CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule, FilterInputDirective] });\nSharedFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, imports: [[...importedModules$4], CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DropDownListModule,\n AutoCompleteModule,\n InputsModule,\n DatePickerModule,\n PopupModule,\n SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedFilterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FILTER_OPERATORS, COMPONENTS$1],\n exports: [FILTER_OPERATORS, importedModules$4, COMPONENTS$1],\n imports: [...importedModules$4]\n }]\n }] });\n\nconst INTERNAL_COMPONENTS$2 = [\n FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n FilterCellHostDirective,\n FilterCellWrapperComponent,\n DateFilterCellComponent\n];\nconst ENTRY_COMPONENTS$1 = [\n StringFilterCellComponent,\n NumericFilterCellComponent,\n BooleanFilterCellComponent,\n DateFilterCellComponent\n];\n/**\n * @hidden\n */\nclass RowFilterModule {\n static exports() {\n return [\n FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n FilterCellOperatorsComponent,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n DateFilterCellComponent,\n SharedFilterModule.exports()\n ];\n }\n}\nRowFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRowFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, declarations: [FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n FilterCellHostDirective,\n FilterCellWrapperComponent,\n DateFilterCellComponent], imports: [SharedFilterModule], exports: [FilterRowComponent,\n FilterCellComponent,\n FilterCellTemplateDirective,\n StringFilterCellComponent,\n NumericFilterCellComponent,\n AutoCompleteFilterCellComponent,\n BooleanFilterCellComponent,\n FilterCellHostDirective,\n FilterCellWrapperComponent,\n DateFilterCellComponent, SharedFilterModule] });\nRowFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, imports: [[SharedFilterModule], SharedFilterModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowFilterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS$2],\n entryComponents: ENTRY_COMPONENTS$1,\n exports: [INTERNAL_COMPONENTS$2, SharedFilterModule],\n imports: [SharedFilterModule]\n }]\n }] });\n\nconst importedModules$3 = [\n CommonModule,\n InputsModule,\n LabelModule,\n DropDownsModule,\n ResizeSensorModule,\n SharedModule\n];\nconst INTERNAL_COMPONENTS$1 = [\n PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective\n];\n/**\n * @hidden\n */\nclass PagerModule {\n static exports() {\n return [\n PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective\n ];\n }\n}\nPagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, declarations: [PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective], imports: [CommonModule,\n InputsModule,\n LabelModule,\n DropDownsModule,\n ResizeSensorModule,\n SharedModule], exports: [PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n PagerDropDownListDirective,\n PagerInputDirective] });\nPagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, imports: [[...importedModules$3]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS$1],\n exports: [INTERNAL_COMPONENTS$1],\n imports: [...importedModules$3]\n }]\n }] });\n\nconst exported$1 = [\n DraggableColumnDirective,\n DropTargetDirective\n];\n/**\n * @hidden\n */\nclass DragAndDropModule {\n}\nDragAndDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragAndDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule, declarations: [DraggableColumnDirective,\n DropTargetDirective], exports: [DraggableColumnDirective,\n DropTargetDirective] });\nDragAndDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exported$1],\n exports: [exported$1]\n }]\n }] });\n\nconst exportedModules$4 = [\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderComponent,\n GroupPanelComponent,\n GroupIndicatorComponent\n];\n/**\n * @hidden\n */\nclass GroupModule {\n static exports() {\n return [\n GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective\n ];\n }\n}\nGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, declarations: [GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderComponent,\n GroupPanelComponent,\n GroupIndicatorComponent], imports: [CommonModule, SharedModule, DragAndDropModule], exports: [GroupHeaderTemplateDirective,\n GroupHeaderColumnTemplateDirective,\n GroupFooterTemplateDirective,\n GroupHeaderComponent,\n GroupPanelComponent,\n GroupIndicatorComponent] });\nGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, imports: [[CommonModule, SharedModule, DragAndDropModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$4],\n exports: [exportedModules$4],\n imports: [CommonModule, SharedModule, DragAndDropModule]\n }]\n }] });\n\nconst INTERNAL_COMPONENTS = [\n FilterMenuComponent,\n FilterMenuContainerComponent,\n FilterMenuInputWrapperComponent,\n StringFilterMenuInputComponent,\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n NumericFilterMenuInputComponent,\n DateFilterMenuInputComponent,\n DateFilterMenuComponent,\n FilterMenuHostDirective,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective\n];\nconst ENTRY_COMPONENTS = [\n StringFilterMenuComponent,\n NumericFilterMenuComponent,\n DateFilterMenuComponent,\n BooleanFilterMenuComponent\n];\n/**\n * @hidden\n */\nclass FilterMenuModule {\n static exports() {\n return [\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n DateFilterMenuComponent,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective,\n SharedFilterModule.exports()\n ];\n }\n}\nFilterMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFilterMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, declarations: [FilterMenuComponent,\n FilterMenuContainerComponent,\n FilterMenuInputWrapperComponent,\n StringFilterMenuInputComponent,\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n NumericFilterMenuInputComponent,\n DateFilterMenuInputComponent,\n DateFilterMenuComponent,\n FilterMenuHostDirective,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective], imports: [SharedFilterModule], exports: [FilterMenuComponent,\n FilterMenuContainerComponent,\n FilterMenuInputWrapperComponent,\n StringFilterMenuInputComponent,\n StringFilterMenuComponent,\n FilterMenuTemplateDirective,\n NumericFilterMenuComponent,\n NumericFilterMenuInputComponent,\n DateFilterMenuInputComponent,\n DateFilterMenuComponent,\n FilterMenuHostDirective,\n BooleanFilterMenuComponent,\n FilterMenuDropDownListDirective,\n BooleanFilterRadioButtonDirective, SharedFilterModule] });\nFilterMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, imports: [[SharedFilterModule], SharedFilterModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterMenuModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS],\n entryComponents: ENTRY_COMPONENTS,\n exports: [INTERNAL_COMPONENTS, SharedFilterModule],\n imports: [SharedFilterModule]\n }]\n }] });\n\n/**\n * Represents the component for selecting columns in the Grid. To enable the user to show or hide columns,\n * add the component inside a [ToolbarTemplate]({% slug api_grid_toolbartemplatedirective %}) directive.\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public data: any[] = [{ Field1: 'Foo', Field2: 'Bar' }];\n * }\n * ```\n */\nclass ColumnChooserComponent {\n constructor(localization, columnInfoService, popupService, ngZone, renderer, changeDetector) {\n this.localization = localization;\n this.columnInfoService = columnInfoService;\n this.popupService = popupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.changeDetector = changeDetector;\n /**\n * Specifies if the changes in the visibility of the column will be immediately applied.\n */\n this.autoSync = false;\n /**\n * Specifies if all columns can be hidden.\n */\n this.allowHideAll = true;\n }\n get columns() {\n return this.columnInfoService.leafNamedColumns;\n }\n ngOnDestroy() {\n this.close();\n }\n /**\n * @hidden\n */\n toggle(anchor, template) {\n if (!this.popupRef) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: anchor,\n content: template,\n positionMode: 'absolute',\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n popupAlign: { vertical: 'top', horizontal: direction }\n });\n this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.localization.rtl ? 'rtl' : 'ltr');\n this.ngZone.runOutsideAngular(() => this.closeClick = this.renderer.listen(\"document\", \"click\", ({ target }) => {\n if (!closest(target, node => node === this.popupRef.popupElement || node === anchor)) {\n this.close();\n }\n }));\n }\n else {\n this.close();\n }\n }\n /**\n * @hidden\n */\n onApply(changed) {\n this.close();\n if (changed.length) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n }\n /**\n * @hidden\n */\n onChange(changed) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n close() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n this.detachClose();\n }\n detachClose() {\n if (this.closeClick) {\n this.closeClick();\n this.closeClick = null;\n }\n }\n}\nColumnChooserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnChooserComponent, deps: [{ token: i1.LocalizationService }, { token: ColumnInfoService }, { token: i1$2.PopupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nColumnChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnChooserComponent, selector: \"kendo-grid-column-chooser\", inputs: { autoSync: \"autoSync\", allowHideAll: \"allowHideAll\" }, ngImport: i0, template: `\n \n \n {{ localization.get('columns') }}\n \n \n \n `, isInline: true, components: [{ type: ColumnListComponent, selector: \"kendo-grid-columnlist\", inputs: [\"columns\", \"autoSync\", \"allowHideAll\", \"applyText\", \"resetText\", \"actionsClass\", \"isLast\", \"isExpanded\", \"service\"], outputs: [\"reset\", \"apply\", \"columnChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnChooserComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-column-chooser',\n template: `\n \n \n {{ localization.get('columns') }}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: ColumnInfoService }, { type: i1$2.PopupService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { autoSync: [{\n type: Input\n }], allowHideAll: [{\n type: Input\n }] } });\n\nconst COMPONENTS = [\n ColumnListComponent,\n ColumnChooserComponent,\n ColumnMenuChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuComponent,\n ColumnMenuLockComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent\n];\n/**\n * @hidden\n */\nclass ColumnMenuModule {\n static exports() {\n return [\n ColumnChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuLockComponent,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent,\n ColumnMenuChooserComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuComponent\n ];\n }\n}\nColumnMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nColumnMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, declarations: [ColumnListComponent,\n ColumnChooserComponent,\n ColumnMenuChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuComponent,\n ColumnMenuLockComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent], imports: [CommonModule, FilterMenuModule], exports: [ColumnListComponent,\n ColumnChooserComponent,\n ColumnMenuChooserComponent,\n ColumnMenuFilterComponent,\n ColumnMenuItemComponent,\n ColumnMenuItemContentTemplateDirective,\n ColumnMenuSortComponent,\n ColumnMenuComponent,\n ColumnMenuLockComponent,\n ColumnMenuTemplateDirective,\n ColumnMenuContainerComponent,\n ColumnMenuItemDirective,\n ColumnMenuStickComponent,\n ColumnMenuPositionComponent] });\nColumnMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, imports: [[CommonModule, FilterMenuModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnMenuModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENTS],\n imports: [CommonModule, FilterMenuModule],\n exports: [COMPONENTS]\n }]\n }] });\n\nconst exportedModules$3 = [\n HeaderComponent,\n HeaderTemplateDirective,\n ColumnHandleDirective,\n SelectAllCheckboxDirective\n];\nconst importedModules$2 = [\n CommonModule,\n GroupModule,\n RowFilterModule,\n FilterMenuModule,\n SharedModule,\n DragAndDropModule,\n ColumnMenuModule\n];\n/**\n * @hidden\n */\nclass HeaderModule {\n static exports() {\n return [\n HeaderTemplateDirective,\n SelectAllCheckboxDirective\n ];\n }\n}\nHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, declarations: [HeaderComponent,\n HeaderTemplateDirective,\n ColumnHandleDirective,\n SelectAllCheckboxDirective], imports: [CommonModule,\n GroupModule,\n RowFilterModule,\n FilterMenuModule,\n SharedModule,\n DragAndDropModule,\n ColumnMenuModule], exports: [HeaderComponent,\n HeaderTemplateDirective,\n ColumnHandleDirective,\n SelectAllCheckboxDirective] });\nHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, imports: [[...importedModules$2]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$3],\n exports: [exportedModules$3],\n imports: [...importedModules$2]\n }]\n }] });\n\n/**\n * Represents the checkbox for selecting columns in the Grid. If the column is\n * defined as empty, it renders a default checkbox for row selection.\n * You can also define the content of the column inside an `` tag.\n * The input requires you to include the `SelectionCheckbox` option.\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `columnIndex`—The current column index.\n * - `rowIndex`—The current data row index. If inside a new item row, it will be `-1`.\n * - `dataItem`—The current data item.\n * - `column`—The current column instance.\n * - `isNew`—The state of the current item.\n *\n * For more examples, refer to:\n * - [Selecting or deselecting all items on a page]({% slug selection_grid %}#toc-select-all-feature)\n * - [Persisting the selection]({% slug selection_grid %}#toc-in-combination-with-the-select-all-feature)\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * Select row \n * \n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public gridData: any[];\n *\n * constructor() {\n * this.gridData = products;\n * }\n * }\n *\n * const products = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000,\n * \"Discontinued\": true\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000,\n * \"Discontinued\": false\n * }\n * ];\n *\n * ```\n */\nclass CheckboxColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n /*\n * @hidden\n */\n this.isCheckboxColumn = true;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n}\nCheckboxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckboxColumnComponent, deps: [{ token: ColumnBase, host: true, optional: true, skipSelf: true }, { token: IdService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCheckboxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckboxColumnComponent, selector: \"kendo-grid-checkbox-column\", inputs: { showSelectAll: \"showSelectAll\" }, providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CheckboxColumnComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: CellTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckboxColumnComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColumnBase,\n useExisting: forwardRef(() => CheckboxColumnComponent)\n }\n ],\n selector: 'kendo-grid-checkbox-column',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ColumnBase, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: IdService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { showSelectAll: [{\n type: Input\n }], template: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the `edit` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [edit]({% slug api_grid_gridcomponent %}#toc-edit) event\n * is triggered ([see example]({% slug editing_grid %})).\n *\n * > When the row is in the edit mode, the button with `kendoGridEditCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n */\nclass EditCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.beginEdit(this.rowIndex);\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nEditCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nEditCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditCommandDirective, selector: \"[kendoGridEditCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-edit-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-edit-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the `cancel` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [cancel]({% slug api_grid_gridcomponent %}#toc-cancel) event\n * is triggered ([see example]({% slug editing_grid %})).\n *\n * > When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n * You can control the content of the button based on the state of the row.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass CancelCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return !this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n if (this.isEdited) {\n this.editService.endEdit(this.rowIndex);\n }\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nCancelCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CancelCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCancelCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CancelCommandDirective, selector: \"[kendoGridCancelCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-cancel-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CancelCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridCancelCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-cancel-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the `save` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [save]({% slug api_grid_gridcomponent %}#toc-save) event\n * is triggered ([see example]({% slug editing_grid %})).\n *\n * > When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n * You can control the content of the button based on the state of the row.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass SaveCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return !this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n if (this.isEdited) {\n this.editService.save(this.rowIndex);\n }\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nSaveCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SaveCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nSaveCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SaveCommandDirective, selector: \"[kendoGridSaveCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-save-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SaveCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridSaveCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-save-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the `remove` command of the Grid. You can apply this directive to any `button` element\n * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [remove event]({% slug api_grid_gridcomponent %}#toc-remove)\n * is triggered ([see example]({% slug editing_reactive_forms_grid %})).\n *\n * > When the row is in the edit mode, the button with the `kendoGridRemoveCommand` is automatically hidden.\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass RemoveCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.remove(this.rowIndex);\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n}\nRemoveCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RemoveCommandDirective, deps: [{ token: EditService }, { token: CELL_CONTEXT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nRemoveCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RemoveCommandDirective, selector: \"[kendoGridRemoveCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"style.display\": \"this.visible\", \"class.k-grid-remove-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RemoveCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridRemoveCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: undefined, decorators: [{\n type: Inject,\n args: [CELL_CONTEXT]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { visible: [{\n type: HostBinding,\n args: ['style.display']\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-remove-command']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Represents the command for adding a new item to the Grid. You can apply this directive to any\n * `button` element inside a [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [add]({% slug api_grid_gridcomponent %}#toc-add) event is triggered\n * ([see example]({% slug editing_grid %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nclass AddCommandDirective extends Button {\n constructor(editService, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.editService = editService;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.beginAdd();\n }\n /**\n * @hidden\n */\n get commandClass() {\n return true;\n }\n}\nAddCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AddCommandDirective, deps: [{ token: EditService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nAddCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AddCommandDirective, selector: \"[kendoGridAddCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-grid-add-command\": \"this.commandClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AddCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridAddCommand]'\n }]\n }], ctorParameters: function () { return [{ type: EditService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], commandClass: [{\n type: HostBinding,\n args: ['class.k-grid-add-command']\n }] } });\n\nconst exported = [\n CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n EditTemplateDirective,\n TableBodyComponent,\n NoRecordsTemplateDirective,\n CellComponent,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective\n];\nconst importedModules$1 = [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n SharedModule,\n GroupModule,\n NumericTextBoxModule,\n DatePickerModule,\n ResizeSensorModule\n];\n/**\n * @hidden\n */\nclass BodyModule {\n static exports() {\n return [\n CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n NoRecordsTemplateDirective,\n EditTemplateDirective,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective\n ];\n }\n}\nBodyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBodyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, declarations: [CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n EditTemplateDirective,\n TableBodyComponent,\n NoRecordsTemplateDirective,\n CellComponent,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective], imports: [CommonModule,\n ReactiveFormsModule,\n FormsModule,\n SharedModule,\n GroupModule,\n NumericTextBoxModule,\n DatePickerModule,\n ResizeSensorModule], exports: [CommandColumnComponent,\n CheckboxColumnComponent,\n SelectionCheckboxDirective,\n CellTemplateDirective,\n EditTemplateDirective,\n TableBodyComponent,\n NoRecordsTemplateDirective,\n CellComponent,\n EditCommandDirective,\n CancelCommandDirective,\n SaveCommandDirective,\n RemoveCommandDirective,\n AddCommandDirective,\n CellLoadingTemplateDirective,\n LoadingTemplateDirective] });\nBodyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, imports: [[...importedModules$1]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BodyModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exported],\n exports: [exported],\n imports: [...importedModules$1]\n }]\n }] });\n\nconst exportedModules$2 = [\n FooterComponent\n];\nconst importedModules = [\n CommonModule,\n SharedModule\n];\n/**\n * @hidden\n */\nclass FooterModule {\n static exports() {\n return [];\n }\n}\nFooterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFooterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, declarations: [FooterComponent], imports: [CommonModule,\n SharedModule], exports: [FooterComponent] });\nFooterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, imports: [[...importedModules]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [exportedModules$2],\n exports: [exportedModules$2],\n imports: [...importedModules]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass LocalEditService {\n constructor(grid, localDataChangesService) {\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n create(item) {\n if (this.hasLocalData && this.grid.skip) {\n this.localDataChangesService.data.splice(this.grid.skip, 0, item);\n }\n else {\n this.data.unshift(item);\n }\n this.dataChanged();\n }\n update(_item) { } // eslint-disable-line no-empty\n remove(item) {\n const data = this.data;\n for (let idx = 0; idx < data.length; idx++) {\n if (item === data[idx]) {\n data.splice(idx, 1);\n this.dataChanged({ action: 'remove', item: item });\n break;\n }\n }\n }\n assignValues(target, source) {\n Object.assign(target, source);\n }\n dataChanged(args = {}) {\n if (this.hasLocalData) {\n this.localDataChangesService.changes.emit(args);\n }\n }\n get hasLocalData() {\n return Array.isArray(this.localDataChangesService.data);\n }\n get data() {\n if (this.hasLocalData) {\n return this.localDataChangesService.data;\n }\n const data = this.grid.data;\n if (Array.isArray(data)) {\n return data;\n }\n if (isDevMode()) {\n throw new Error('The default edit service of the editing directives works only when binding to plain array.' +\n 'Please provide an editService.');\n }\n return [];\n }\n}\n\n/**\n * @hidden\n */\nclass EditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n this.defaultEditService = this.createDefaultService();\n }\n // Consider adding support for the dependency injection of the service to allow for specifying a generic service without code.\n // The Input should still be kept.\n /**\n * The edit service that will handle the operations.\n */\n set editService(value) {\n this.userEditService = value;\n }\n get editService() {\n return this.userEditService || this.defaultEditService;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions = this.grid.add.subscribe(this.addHandler.bind(this));\n this.subscriptions.add(this.grid.remove.subscribe(this.removeHandler.bind(this)));\n this.subscriptions.add(this.grid.cancel.subscribe(this.cancelHandler.bind(this)));\n this.subscriptions.add(this.grid.save.subscribe(this.saveHandler.bind(this)));\n this.subscriptions.add(this.grid.dataStateChange.subscribe(this.onStateChange.bind(this)));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n createDefaultService() {\n return new LocalEditService(this.grid, this.localDataChangesService);\n }\n addHandler() {\n this.grid.addRow(this.createModel({ isNew: true }));\n }\n saveHandler(args) {\n const item = this.saveModel(args);\n if (item) {\n if (args.isNew) {\n this.editService.create(item);\n }\n else {\n this.editService.update(item);\n }\n }\n this.grid.closeRow(args.rowIndex);\n }\n cancelHandler({ rowIndex }) {\n this.closeEditor(rowIndex);\n }\n removeHandler({ dataItem }) {\n const removeItem = (shouldRemove) => {\n if (shouldRemove) {\n this.editService.remove(dataItem);\n }\n };\n if (this.removeConfirmation) {\n const result = this.removeConfirmation(dataItem);\n if (result instanceof Promise) {\n result.then(removeItem);\n }\n else if (result instanceof Observable) {\n result.pipe(take(1)).subscribe(removeItem);\n }\n else {\n removeItem(result);\n }\n }\n else {\n removeItem(true);\n }\n }\n onStateChange() {\n this.closeEditor();\n }\n closeEditor(rowIndex) {\n this.grid.closeRow(rowIndex);\n }\n}\nEditingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditingDirectiveBase, deps: [{ token: GridComponent }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nEditingDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EditingDirectiveBase, selector: \"[kendoGridEditingDirectiveBase]\", inputs: { editService: \"editService\", removeConfirmation: \"removeConfirmation\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EditingDirectiveBase, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridEditingDirectiveBase]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, propDecorators: { editService: [{\n type: Input\n }], removeConfirmation: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalRowEditService extends LocalEditService {\n update(_item) {\n this.dataChanged();\n }\n}\n\n/**\n * @hidden\n */\nclass RowEditingDirectiveBase extends EditingDirectiveBase {\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions\n .add(this.grid.edit.subscribe(this.editHandler.bind(this)));\n }\n createDefaultService() {\n return new LocalRowEditService(this.grid, this.localDataChangesService);\n }\n addHandler() {\n this.closeEditor();\n super.addHandler();\n }\n editHandler(args) {\n this.closeEditor();\n this.rowIndex = args.rowIndex;\n this.grid.editRow(args.rowIndex, this.createModel(args));\n }\n saveHandler(args) {\n super.saveHandler(args);\n this.clean();\n }\n closeEditor(rowIndex = this.rowIndex) {\n super.closeEditor(rowIndex);\n this.clean();\n }\n clean() {\n delete this.rowIndex;\n }\n}\nRowEditingDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowEditingDirectiveBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nRowEditingDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RowEditingDirectiveBase, selector: \"[kendoGridRowEditingDirectiveBase]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RowEditingDirectiveBase, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridRowEditingDirectiveBase]'\n }]\n }] });\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using\n * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-the-template-directive)).\n */\nclass TemplateEditingDirective extends RowEditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n editHandler(args) {\n super.editHandler(args);\n this.dataItem = args.dataItem;\n this.originalValues = {};\n this.editService.assignValues(this.originalValues, this.dataItem);\n }\n closeEditor(rowIndex) {\n if (this.dataItem) {\n this.editService.assignValues(this.dataItem, this.originalValues);\n }\n super.closeEditor(rowIndex);\n }\n createModel(args) {\n if (args.isNew) {\n return this.createNewItem();\n }\n }\n saveModel(args) {\n return args.dataItem;\n }\n clean() {\n super.clean();\n delete this.dataItem;\n }\n}\nTemplateEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateEditingDirective, deps: [{ token: GridComponent }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateEditingDirective, selector: \"[kendoGridTemplateEditing]\", inputs: { createNewItem: [\"kendoGridTemplateEditing\", \"createNewItem\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridTemplateEditing]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, propDecorators: { createNewItem: [{\n type: Input,\n args: ['kendoGridTemplateEditing']\n }] } });\n\n/**\n * @hidden\n */\nconst markAllAsTouched = (control) => {\n control.markAsTouched();\n if (control.hasOwnProperty('controls')) {\n let controls = control.controls;\n for (let inner in controls) {\n if (controls.hasOwnProperty(inner)) {\n markAllAsTouched(controls[inner]);\n }\n }\n }\n};\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using the\n * Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-the-reactive-directive)).\n */\nclass ReactiveEditingDirective extends RowEditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n createModel(args) {\n return this.createFormGroup(args);\n }\n saveModel({ dataItem, formGroup, isNew }) {\n if (!formGroup.dirty && !isNew) {\n return;\n }\n if (formGroup.valid) {\n this.editService.assignValues(dataItem, formGroup.value);\n return dataItem;\n }\n markAllAsTouched(formGroup);\n }\n}\nReactiveEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ReactiveEditingDirective, deps: [{ token: GridComponent }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nReactiveEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ReactiveEditingDirective, selector: \"[kendoGridReactiveEditing]\", inputs: { createFormGroup: [\"kendoGridReactiveEditing\", \"createFormGroup\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ReactiveEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridReactiveEditing]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }]; }, propDecorators: { createFormGroup: [{\n type: Input,\n args: ['kendoGridReactiveEditing']\n }] } });\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using the in-cell\n * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-the-incell-directive)).\n */\nclass InCellEditingDirective extends EditingDirectiveBase {\n constructor(grid, localDataChangesService, cdr) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n this.cdr = cdr;\n }\n // Need mixin\n createModel(args) {\n return this.createFormGroup(args);\n }\n saveModel({ dataItem, formGroup, isNew }) {\n if (!formGroup.dirty && !isNew) {\n return;\n }\n if (formGroup.valid) {\n this.editService.assignValues(dataItem, formGroup.value);\n return dataItem;\n }\n markAllAsTouched(formGroup);\n }\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions.add(this.grid.cellClick.subscribe(this.cellClickHandler.bind(this)));\n this.subscriptions.add(this.grid.cellClose.subscribe(this.cellCloseHandler.bind(this)));\n }\n removeHandler(args) {\n super.removeHandler(args);\n this.grid.cancelCell();\n }\n cellClickHandler(args) {\n if (!args.isEdited && args.type !== 'contextmenu') {\n this.grid.editCell(args.rowIndex, args.columnIndex, this.createFormGroup(args));\n this.cdr.markForCheck();\n }\n }\n cellCloseHandler(args) {\n const { formGroup, dataItem } = args;\n if (!formGroup.valid) {\n args.preventDefault();\n }\n else if (formGroup.dirty) {\n if (args.originalEvent && args.originalEvent.keyCode === Keys.Escape) {\n return;\n }\n this.editService.assignValues(dataItem, formGroup.value);\n this.editService.update(dataItem);\n }\n }\n}\nInCellEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InCellEditingDirective, deps: [{ token: GridComponent }, { token: LocalDataChangesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nInCellEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: InCellEditingDirective, selector: \"[kendoGridInCellEditing]\", inputs: { createFormGroup: [\"kendoGridInCellEditing\", \"createFormGroup\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InCellEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridInCellEditing]'\n }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: LocalDataChangesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { createFormGroup: [{\n type: Input,\n args: ['kendoGridInCellEditing']\n }] } });\n\nconst hasGroups = (items) => items && items.length && items[0].field && items[0].items;\nconst groupDescriptorsPresent = (descriptors) => isPresent(descriptors) && descriptors.length > 0;\nconst processGroups = (data, state) => process(data, state).data;\nconst removeParentDescriptors = (parents, owner) => g => g.field !== owner.field && !parents.some(y => y.field === g.field);\nconst findGroup = (groupIndex, groups) => {\n const parents = [];\n return {\n group: groupIndex.split(\"_\").reduce((acc, x) => {\n const idx = parseInt(x, 10);\n if (acc.items) {\n parents.push(acc);\n return acc.items[idx];\n }\n return isArray(acc) ? acc[idx] : acc;\n }, groups),\n parents\n };\n};\nconst findChildren = (data, parents) => {\n const filters = parents.map(p => ({ field: p.field, operator: \"eq\", value: p.value }));\n return filterBy(data, {\n filters: filters,\n logic: \"and\"\n });\n};\n/**\n * @hidden\n */\nconst count = (groups, includeFooters = false) => (groups.reduce((acc, group) => {\n if (!group.skipHeader) {\n acc++;\n }\n if (group.items) {\n const children = count(group.items, includeFooters);\n if (includeFooters && children && !group.hideFooter) {\n acc++;\n }\n acc += children;\n }\n return acc;\n}, 0));\n/**\n * @hidden\n */\nconst slice = (groups, skip, take, includeFooters = false) => {\n if (!isPresent(take)) {\n return groups;\n }\n const result = [];\n for (let idx = 0, length = groups.length; idx < length; idx++) {\n if (take <= 0) {\n break;\n }\n const group = groups[idx];\n const groupItems = group.items;\n let itemCount = count(groupItems, includeFooters);\n if (includeFooters && groupItems.length) {\n itemCount++;\n }\n const skipHeader = skip > 0;\n if (skip) {\n skip--;\n if (itemCount && skip >= itemCount) {\n skip -= itemCount;\n continue;\n }\n }\n if (!skipHeader || itemCount) {\n const items = [];\n let hideFooter = true;\n if (!skipHeader) {\n take--;\n }\n if (take) {\n if (hasGroups(groupItems)) {\n const children = slice(groupItems, skip, take, includeFooters);\n items.push(...children);\n take -= count(children, includeFooters);\n }\n else {\n items.push(...groupItems.slice(skip, Math.min(skip + take, groupItems.length)));\n take -= items.length;\n }\n if (take && includeFooters) {\n hideFooter = false;\n take--;\n }\n skip = 0;\n }\n result.push({\n aggregates: group.aggregates,\n field: group.field,\n hideFooter,\n items,\n offset: idx,\n skipHeader,\n value: group.value\n });\n }\n }\n return result;\n};\nconst skippedHeaders = (groupItem) => {\n let total = 0;\n while (groupItem) {\n if (groupItem.skipHeader) {\n total++;\n }\n groupItem = groupItem.items && groupItem.items[0] || null;\n }\n return total;\n};\n/**\n * A directive which encapsulates the in-memory handling of grouping with virtual scrolling.\n */\nclass GroupBindingDirective extends DataBindingDirective {\n constructor(grid, changeDetector, localDataChangesService) {\n super(grid, changeDetector, localDataChangesService);\n }\n /**\n * The array of data which will be used to populate the Grid.\n */\n set kendoGridGroupBinding(value) {\n this.groups = null;\n this.grid.resetGroupsState();\n this.data = value;\n }\n /**\n * @hidden\n */\n set data(value) {\n this.originalData = value || [];\n this.dataChanged = true;\n }\n /**\n * Defines the descriptors by which the data will be sorted.\n */\n set sort(value) {\n const clear = this.state.sort !== value;\n this.grid.sort = this.state.sort = value;\n if (clear) {\n this.groups = null;\n this.grid.resetGroupsState();\n }\n }\n /**\n * Defines the descriptor by which the data will be filtered.\n */\n set filter(value) {\n const clear = diffFilters(this.state.filter, value);\n if (clear) {\n this.state.filter = value;\n this.grid.filter = cloneFilters(value);\n this.groups = null;\n this.grid.resetGroupsState();\n }\n }\n /**\n * Defines the descriptors by which the data will be grouped.\n */\n set group(value) {\n // don't clear if no groups are present in previous and current value\n const groupsPresent = groupDescriptorsPresent(this.state.group) || groupDescriptorsPresent(value);\n const clear = this.state.group !== value && groupsPresent;\n this.grid.group = this.state.group = value;\n if (clear) {\n this.groups = null;\n this.grid.resetGroupsState();\n this.skip = 0;\n }\n }\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.grid.groupExpand.subscribe(this.groupExpand.bind(this));\n this.grid.groupCollapse.subscribe(this.groupCollapse.bind(this));\n }\n ngAfterContentInit() {\n if (isDevMode() && this.grid.isGroupExpanded) {\n throw new Error('Using the `kendoGridGroupBinding` directive in combination with the `kendoGridExpandGroupBy` directive ' +\n 'or the `isGroupExpanded` callback is not supported. To use grouping with the `kendoGridGroupBinding` directive, ' +\n 'set the Grid `groupable` property to `true`.');\n }\n }\n groupExpand({ groupIndex }) {\n this.grid.expandGroupChildren(groupIndex);\n const { group, parents } = findGroup(groupIndex, this.groups);\n if (!group.items.length) {\n const descriptors = this.state.group.filter(removeParentDescriptors(parents, group));\n const children = findChildren(this.originalData, parents.concat(group));\n group.items = processGroups(children, {\n filter: this.state.filter,\n group: descriptors,\n sort: this.state.sort\n });\n }\n this.grid.data = this.dataResult(this.state.skip, this.state.take);\n }\n groupCollapse({ groupIndex }) {\n const { group } = findGroup(groupIndex, this.groups);\n if (group) {\n group.items = [];\n }\n this.grid.data = this.dataResult(this.state.skip, this.state.take);\n }\n process(state) {\n if (state.group && state.group.length) {\n const groups = this.processGroups(state);\n this.grid.skip -= skippedHeaders(groups.data[0]);\n return groups;\n }\n else {\n this.groups = null;\n }\n return super.process(state);\n }\n processGroups(state) {\n if (!this.groups || !this.groups.length) {\n this.groups = processGroups(this.originalData, {\n filter: state.filter,\n group: state.group,\n sort: state.sort\n });\n }\n return this.dataResult(state.skip, state.take);\n }\n dataResult(skip, take) {\n const includeFooters = this.grid.showGroupFooters;\n return {\n data: slice(this.groups, skip, take, includeFooters),\n total: count(this.groups, includeFooters)\n };\n }\n applyState({ skip, take, sort, group, filter }) {\n this.skip = skip;\n this.state.take = take;\n // this.pageSize = take; // do need to update take as the process with slice correctly\n this.sort = sort;\n this.group = group;\n this.filter = filter;\n }\n}\nGroupBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupBindingDirective, deps: [{ token: GridComponent }, { token: i0.ChangeDetectorRef }, { token: LocalDataChangesService }], target: i0.ɵɵFactoryTarget.Directive });\nGroupBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupBindingDirective, selector: \"[kendoGridGroupBinding]\", inputs: { kendoGridGroupBinding: \"kendoGridGroupBinding\", sort: \"sort\", filter: \"filter\", group: \"group\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoGridGroupBinding]' }]\n }], ctorParameters: function () { return [{ type: GridComponent }, { type: i0.ChangeDetectorRef }, { type: LocalDataChangesService }]; }, propDecorators: { kendoGridGroupBinding: [{\n type: Input,\n args: [\"kendoGridGroupBinding\"]\n }], sort: [{\n type: Input\n }], filter: [{\n type: Input\n }], group: [{\n type: Input\n }] } });\n\nconst exportedModules$1 = [\n GridComponent,\n ToolbarTemplateDirective,\n ToolbarComponent,\n GridSpacerComponent,\n DataBindingDirective,\n SelectionDirective,\n CustomMessagesComponent,\n GroupBindingDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective,\n ...GroupModule.exports(),\n ...SharedModule.exports(),\n ...BodyModule.exports(),\n ...HeaderModule.exports(),\n ...FooterModule.exports(),\n ...PagerModule.exports(),\n ...RowFilterModule.exports(),\n ...FilterMenuModule.exports(),\n ...ColumnMenuModule.exports()\n];\nconst declarations$2 = [\n GridComponent,\n ListComponent,\n ToolbarComponent,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n DataBindingDirective,\n ToolbarTemplateDirective,\n SelectionDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective,\n GroupBindingDirective,\n GridMarqueeDirective,\n GridSpacerComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Grid component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Grid module\n * import { GridModule } from '@progress/kendo-angular-grid';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, GridModule], // import Grid module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass GridModule {\n}\nGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, declarations: [GridComponent,\n ListComponent,\n ToolbarComponent,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n DataBindingDirective,\n ToolbarTemplateDirective,\n SelectionDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective,\n GroupBindingDirective,\n GridMarqueeDirective,\n GridSpacerComponent], imports: [CommonModule,\n GroupModule,\n SharedModule,\n BodyModule,\n HeaderModule,\n FooterModule,\n PagerModule,\n RowFilterModule,\n FilterMenuModule,\n ResizeSensorModule,\n ColumnMenuModule], exports: [GridComponent,\n ToolbarTemplateDirective,\n ToolbarComponent,\n GridSpacerComponent,\n DataBindingDirective,\n SelectionDirective,\n CustomMessagesComponent,\n GroupBindingDirective,\n TemplateEditingDirective,\n ReactiveEditingDirective,\n InCellEditingDirective,\n ExpandDetailsDirective,\n ExpandGroupDirective, GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, ColumnComponent, SpanColumnComponent, ColumnGroupComponent, FooterTemplateDirective, DetailTemplateDirective, FocusableDirective, CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, NoRecordsTemplateDirective, EditTemplateDirective, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, HeaderTemplateDirective, SelectAllCheckboxDirective, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective, FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, FilterCellOperatorsComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent] });\nGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, imports: [[\n CommonModule,\n GroupModule,\n SharedModule,\n BodyModule,\n HeaderModule,\n FooterModule,\n PagerModule,\n RowFilterModule,\n FilterMenuModule,\n ResizeSensorModule,\n ColumnMenuModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GridModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$2],\n exports: [exportedModules$1],\n imports: [\n CommonModule,\n GroupModule,\n SharedModule,\n BodyModule,\n HeaderModule,\n FooterModule,\n PagerModule,\n RowFilterModule,\n FilterMenuModule,\n ResizeSensorModule,\n ColumnMenuModule\n ]\n }]\n }] });\n\nclass PDFMarginComponent extends PDFExportMarginComponent {\n}\nPDFMarginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFMarginComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nPDFMarginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFMarginComponent, selector: \"kendo-grid-pdf-margin\", usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFMarginComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-pdf-margin',\n template: ''\n }]\n }] });\n\n/**\n * Represents the PDF page template of the Grid that helps to customize the PDF pages. To define a page template,\n * nest an `` tag with the `kendoGridPDFTemplate` directive inside ``.\n *\n * The template context provides the following fields:\n * - `pageNumber`—Defines PDF page number.\n * - `totalPages`—Defines the total number of PDF pages.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
\n * Page {{ pageNum }} of {{ totalPages }}\n *
\n *
\n *
\n *
\n * `\n * })\n *\n * class AppComponent {\n * public gridData = [{\n * \"ProductID\": 1,\n * \"ProductName\": \"Chai\",\n * \"UnitPrice\": 18.0000\n * }, {\n * \"ProductID\": 2,\n * \"ProductName\": \"Chang\",\n * \"UnitPrice\": 19.0000\n * }\n * ];\n * }\n *\n * ```\n */\nclass PDFTemplateDirective extends PDFExportTemplateDirective {\n constructor(templateRef) {\n super(templateRef);\n }\n}\nPDFTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPDFTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFTemplateDirective, selector: \"[kendoGridPDFTemplate]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridPDFTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nconst HEADER_CLASS = 'k-grid-header';\n/**\n * @hidden\n */\nconst FOOTER_CLASS = 'k-grid-footer';\nconst GRID_LIST = 'KENDO-GRID-LIST';\nconst TABLE = 'TABLE';\nconst matchesList = matchesNodeName(GRID_LIST);\nconst matchesTable = matchesNodeName(TABLE);\nconst suffix = (locked) => locked ? 'locked' : 'wrap';\n/**\n * @hidden\n */\nclass GridQuery {\n constructor(element) {\n this.element = element;\n this.list = findElement(element, matchesList);\n }\n content(locked) {\n return findElement(this.list, matchesClasses(`k-grid-content${locked ? '-locked' : ''}`));\n }\n header(locked) {\n this.headerWrap = this.headerWrap || findElement(this.element, matchesClasses(HEADER_CLASS));\n return findElement(this.headerWrap, matchesClasses(`${HEADER_CLASS}-${suffix(locked)}`));\n }\n footer(locked) {\n this.footerWrap = this.footerWrap || findElement(this.element, matchesClasses(FOOTER_CLASS));\n return findElement(this.footerWrap, matchesClasses(`${FOOTER_CLASS}-${suffix(locked)}`));\n }\n table() {\n return findElement(this.element, matchesTable);\n }\n}\n\nconst FIRST_CLASS = 'k-first';\nconst INPUTS = ['input', 'select', 'textarea', 'option'];\n/** @hidden */\nconst cloneNode = (node) => {\n const clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n if (INPUTS.indexOf(String(node.nodeName).toLowerCase()) >= 0) {\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n clone.value = node.value;\n clone.checked = node.checked;\n clone.selected = node.selected;\n }\n let child = node.firstChild;\n while (child) {\n clone.appendChild(cloneNode(child));\n child = child.nextSibling;\n }\n return clone;\n};\nconst appendNodes = (element, nodes) => {\n const length = nodes.length;\n for (let idx = 0; idx < length; idx++) {\n element.appendChild(cloneNode(nodes[idx]));\n }\n};\nconst wrapTable = (table) => {\n const wrapper = document.createElement('div');\n wrapper.className = 'k-grid';\n wrapper.appendChild(table);\n return wrapper;\n};\nconst createTableElement = (sources) => {\n const sourceCount = sources.length;\n const element = cloneNode(sources[0]);\n const rowsCount = element.rows.length;\n if (sourceCount > 1) {\n for (let rowIdx = 0; rowIdx < rowsCount; rowIdx++) {\n for (let sourceIdx = 1; sourceIdx < sourceCount; sourceIdx++) {\n appendNodes(element.rows[rowIdx], sources[sourceIdx].rows[rowIdx].cells);\n }\n }\n }\n return element;\n};\nconst setFirstCellClass = (header, headers) => {\n if (headers.length > 1 && header.rows.length > 1) {\n for (let idx = 1; idx < header.rows.length; idx++) {\n const firstCellIndex = headers[0].rows[idx].cells.length;\n const cell = header.rows[idx].cells[firstCellIndex];\n if (String(cell.className).indexOf(FIRST_CLASS) === -1) {\n cell.className += ` ${FIRST_CLASS}`;\n }\n }\n }\n};\nconst createTable = (colGroups, headers, bodies, footers) => {\n const table = document.createElement('table');\n const colGroup = colGroups[0].cloneNode(true);\n for (let idx = 1; idx < colGroups.length; idx++) {\n appendNodes(colGroup, colGroups[idx].querySelectorAll('col'));\n }\n const header = createTableElement(headers);\n const body = createTableElement(bodies);\n header.className = HEADER_CLASS;\n setFirstCellClass(header, headers);\n table.appendChild(colGroup);\n table.appendChild(header);\n table.appendChild(body);\n if (footers.length) {\n const footer = createTableElement(footers);\n footer.className = FOOTER_CLASS;\n table.appendChild(footer);\n }\n return wrapTable(table);\n};\n/**\n * @hidden\n */\nconst exportElement = (wrapper) => {\n const query = new GridQuery(wrapper);\n const content = query.content();\n let result;\n if (content) {\n const colGroups = [content.querySelector('colgroup')];\n const headers = [query.header().querySelector('thead')];\n const bodies = [content.querySelector('tbody')];\n const footer = query.footer();\n const footers = [];\n if (footer) {\n footers.push(footer.querySelector('tfoot'));\n }\n const lockedContent = query.content(true);\n if (lockedContent) {\n colGroups.unshift(lockedContent.querySelector('colgroup'));\n headers.unshift(query.header(true).querySelector('thead'));\n bodies.unshift(lockedContent.querySelector('tbody'));\n if (footer) {\n footers.unshift(query.footer(true).querySelector('tfoot'));\n }\n }\n result = createTable(colGroups, headers, bodies, footers);\n }\n else {\n result = wrapTable(query.table().cloneNode(true));\n }\n return result;\n};\n\nconst createElement = (tagName, className) => {\n const element = document.createElement(tagName);\n if (className) {\n element.className = className;\n }\n return element;\n};\nconst createDiv = (className) => {\n return createElement('div', className);\n};\n/**\n * Configures the settings for the export of Grid in PDF ([see example]({% slug pdfexport_grid %})).\n */\nclass PDFComponent extends PDFExportComponent {\n constructor(pdfService, suspendService, ngZone, element) {\n super(element);\n this.pdfService = pdfService;\n this.suspendService = suspendService;\n this.ngZone = ngZone;\n /**\n * The delay in milliseconds before exporting the Grid content.\n * Useful for scenarios which involve exporting complex components used in the Grid\n * templates such as charts or data-bound components with asynchronous data retrieval ([see example]({% slug pdfexport_grid %}#toc-exporting-all-pages)).\n *\n * @default 0\n */\n this.delay = 0;\n this.columns = new QueryList();\n this.saveSubscription = pdfService.savePDF.subscribe(this.savePDF.bind(this));\n this.drawSubscription = pdfService.drawPDF.subscribe(this.drawPDF.bind(this));\n this.reset = this.reset.bind(this);\n this.draw = this.draw.bind(this);\n }\n ngOnDestroy() {\n this.saveSubscription.unsubscribe();\n this.drawSubscription.unsubscribe();\n this.reset();\n }\n /**\n * @hidden\n */\n saveAs(_) {\n throw new Error('Not supported. Use GridComponent.saveAsPDF');\n }\n /**\n * @hidden\n */\n export() {\n throw new Error('Not supported. Use GridComponent.drawPDF');\n }\n savePDF(component) {\n this.createPDF(component, this.draw);\n }\n drawPDF({ component, promise }) {\n this.createPDF(component, () => {\n this.createExportGroup(promise);\n });\n }\n createPDF(component, callback) {\n const pageSize = component.pageSize;\n const total = component.view.total;\n const columns = this.columns.toArray();\n if (columns.length) {\n this.originalColumns = component.columns.toArray();\n }\n this.component = component;\n this.suspendService.scroll = true;\n this.pdfService.exporting = true;\n this.initProgress();\n this.renderAllPages = this.allPages && pageSize < total;\n if (this.renderAllPages) {\n this.skip = component.skip;\n this.pageSize = pageSize;\n this.changePage(0, total, callback, columns);\n }\n else if (columns.length || component.virtualColumns) {\n this.changeColumns(columns, callback);\n }\n else {\n callback();\n }\n }\n initProgress() {\n const wrapperElement = this.component.wrapper.nativeElement;\n const progress = this.progress = createDiv('k-loading-pdf-mask');\n const overlay = cloneNode(wrapperElement);\n progress.appendChild(overlay);\n progress.appendChild(createDiv('k-loading-color'));\n progress.appendChild(createElement('span', 'k-i-loading k-icon'));\n this.originalHeight = wrapperElement.style.height;\n this.originalOverflow = wrapperElement.style.overflow;\n wrapperElement.style.height = wrapperElement.offsetHeight + 'px';\n wrapperElement.style.overflow = 'hidden';\n wrapperElement.appendChild(progress);\n this.applyScroll(overlay);\n }\n applyScroll(overlay) {\n const query = new GridQuery(this.component.wrapper.nativeElement);\n const content = query.content();\n if (content) {\n const overlayQuery = new GridQuery(overlay);\n const overlayContent = overlayQuery.content();\n overlayContent.scrollTop = content.scrollTop;\n overlayContent.scrollLeft = content.scrollLeft;\n overlayQuery.header().scrollLeft = query.header().scrollLeft;\n const footer = query.footer();\n if (footer) {\n overlayQuery.footer().scrollLeft = footer.scrollLeft;\n }\n const lockedContent = query.content(true);\n if (lockedContent) {\n const overlayLockedContent = overlayQuery.content(true);\n overlayLockedContent.scrollTop = lockedContent.scrollTop;\n overlayLockedContent.scrollLeft = lockedContent.scrollLeft;\n }\n }\n }\n draw() {\n this.createExportElement((element) => {\n this.save(element, this.fileName);\n });\n }\n createExportGroup(promise) {\n this.createExportElement((element) => {\n this.exportElement(element).then(group => promise.resolve(group));\n });\n }\n createExportElement(callback) {\n this.ngZone.runOutsideAngular(() => {\n const container = this.container = createDiv('k-grid-pdf-export-element');\n const element = exportElement(this.component.wrapper.nativeElement);\n container.appendChild(element);\n document.body.appendChild(container);\n callback(element);\n });\n }\n drawOptions() {\n const options = super.drawOptions();\n options._destructive = true;\n return options;\n }\n cleanup() {\n super.cleanup();\n this.pdfService.exporting = false;\n if (this.component) {\n const originalColumns = this.originalColumns;\n delete this.originalColumns;\n if (this.renderAllPages) {\n this.changePage(this.skip, this.pageSize, this.reset, originalColumns);\n }\n else if (originalColumns || this.component.virtualColumns) {\n this.changeColumns(originalColumns, this.reset);\n }\n else {\n this.reset();\n }\n }\n else {\n this.reset();\n }\n this.removeContainer();\n }\n removeContainer() {\n if (this.container) {\n document.body.removeChild(this.container);\n delete this.container;\n }\n }\n changePage(skip, _take, callback, columns) {\n this.ngZone.run(() => {\n this.pdfService.dataChanged.pipe(take(1)).subscribe(() => {\n if ((columns && columns.length) || this.component.virtualColumns) {\n this.changeColumns(columns, callback);\n }\n else {\n this.onStable(callback);\n }\n });\n this.component.notifyPageChange('pdf', { skip: skip, take: _take });\n });\n }\n changeColumns(columns, callback) {\n this.ngZone.run(() => {\n this.onStable(callback);\n if (columns && columns.length) {\n this.component.columns.reset(columns);\n }\n });\n }\n reset() {\n this.suspendService.scroll = false;\n this.renderAllPages = false;\n if (!this.component) {\n return;\n }\n const wrapperElement = this.component.wrapper.nativeElement;\n wrapperElement.removeChild(this.progress);\n wrapperElement.style.height = this.originalHeight;\n wrapperElement.style.overflow = this.originalOverflow;\n delete this.progress;\n delete this.component;\n }\n onStable(callback) {\n // not sure if it is an actual scenario. occurs in the tests.\n // onStable is triggered in the same pass without the change detection.\n // thus, the callback is called before the changes are applied without the timeout.\n setTimeout(() => {\n let onStable = this.ngZone.onStable.asObservable().pipe(take(1));\n if (this.delay > 0) {\n onStable = onStable.pipe(delay(this.delay));\n }\n onStable.subscribe(callback);\n }, 0);\n }\n}\nPDFComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFComponent, deps: [{ token: PDFService }, { token: SuspendService }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPDFComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFComponent, selector: \"kendo-grid-pdf\", inputs: { allPages: \"allPages\", delay: \"delay\" }, queries: [{ propertyName: \"marginComponent\", first: true, predicate: PDFMarginComponent, descendants: true }, { propertyName: \"pageTemplateDirective\", first: true, predicate: PDFTemplateDirective, descendants: true }, { propertyName: \"columns\", predicate: ColumnBase }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-pdf',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: PDFService }, { type: SuspendService }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { allPages: [{\n type: Input\n }], delay: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase]\n }], marginComponent: [{\n type: ContentChild,\n args: [PDFMarginComponent, { static: false }]\n }], pageTemplateDirective: [{\n type: ContentChild,\n args: [PDFTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Represents the `export-to-PDF` command of the Grid.\n * You can apply this directive to any `button` element inside a\n * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When the user clicks a button that is associated with the directive, the\n * [pdfExport]({% slug api_grid_gridcomponent %}#toc-pdfexport) event\n * fires ([see example]({% slug pdfexport_grid %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass PDFCommandDirective extends Button {\n constructor(pdfService, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.pdfService = pdfService;\n this.ngZone = ngZone;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.pdfService.exportClick.emit();\n }\n /**\n * @hidden\n */\n get pdfClass() {\n return true;\n }\n}\nPDFCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFCommandDirective, deps: [{ token: PDFService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nPDFCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFCommandDirective, selector: \"[kendoGridPDFCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-grid-pdf\": \"this.pdfClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridPDFCommand]'\n }]\n }], ctorParameters: function () { return [{ type: PDFService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], pdfClass: [{\n type: HostBinding,\n args: ['class.k-grid-pdf']\n }] } });\n\nconst exportedModules = [\n PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective\n];\nconst declarations$1 = [\n PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Grid PDF component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Grid and PDF modules\n * import { GridModule, PDFModule } from '@progress/kendo-angular-grid';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, GridModule, PDFModule], // import Grid and PDF modules\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PDFModule {\n}\nPDFModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPDFModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, declarations: [PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective], exports: [PDFComponent,\n PDFMarginComponent,\n PDFCommandDirective,\n PDFTemplateDirective] });\nPDFModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules]\n }]\n }] });\n\n/**\n * Arguments for the `excelExport` event.\n */\nclass ExcelExportEvent extends PreventableEvent {\n constructor(workbook) {\n super();\n this.workbook = workbook;\n }\n}\n\nconst fetchComponentData = (component) => {\n return {\n data: component.view.map(item => item),\n group: component.group\n };\n};\nconst toExcelColumn = (column) => {\n return {\n title: column.title,\n field: column.field,\n locked: Boolean(column.locked),\n width: column.width,\n level: column.level,\n hidden: !column.isVisible,\n groupHeaderTemplate: column.groupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate,\n groupFooterTemplate: column.groupFooterTemplate,\n footerTemplate: column.footerTemplate\n };\n};\nconst toExcelColumns = (columns) => {\n const result = [];\n sortColumns(columns)\n .forEach((column) => {\n if (column.isSpanColumn) {\n result.push(...toExcelColumns(column.childrenArray));\n }\n else {\n const excelColumn = toExcelColumn(column);\n if (column.isColumnGroup) {\n excelColumn.children = [excelColumn].concat(toExcelColumns(column.childrenArray));\n }\n result.push(excelColumn);\n }\n });\n return result;\n};\nconst componentColumns = (component) => {\n const columns = toExcelColumns(component.columns.toArray());\n return orderBy(columns, [{ field: 'locked', dir: 'desc' }]);\n};\n/**\n * Configures the settings for the export of Grid in Excel ([see example]({% slug excelexport_grid %})).\n */\nclass ExcelComponent {\n constructor(excelService, localization, zone) {\n this.localization = localization;\n this.zone = zone;\n /**\n * Specifies the file name of the exported Excel file.\n * @default \"Export.xlsx\"\n */\n this.fileName = 'Export.xlsx';\n /**\n * @hidden\n */\n this.columns = new QueryList();\n this.saveSubscription = excelService.saveToExcel.subscribe(this.save.bind(this));\n }\n ngOnDestroy() {\n this.saveSubscription.unsubscribe();\n if (this.dataSubscription) {\n this.dataSubscription.unsubscribe();\n }\n }\n save(component) {\n const data = (this.fetchData || fetchComponentData)(component);\n const exportData = (result) => {\n delete this.dataSubscription;\n this.exportData(component, result);\n };\n if (data instanceof Promise) {\n data.then(exportData);\n }\n else if (data instanceof Observable) {\n this.dataSubscription = data.pipe(take(1)).subscribe(exportData);\n }\n else {\n exportData(data);\n }\n }\n exportData(component, result) {\n const options = workbookOptions({\n columns: this.columns.length ? this.columns : componentColumns(component),\n data: result.data,\n group: result.group,\n filterable: this.filterable,\n creator: this.creator,\n date: this.date,\n paddingCellOptions: this.paddingCellOptions,\n headerPaddingCellOptions: this.headerPaddingCellOptions,\n rtl: this.localization.rtl,\n collapsible: this.collapsible\n });\n const args = new ExcelExportEvent(options);\n component.excelExport.emit(args);\n if (!args.isDefaultPrevented()) {\n this.zone.runOutsideAngular(() => this.saveFile(options));\n }\n }\n saveFile(options) {\n toDataURL(options).then((dataURL) => {\n saveAs(dataURL, this.fileName, {\n forceProxy: this.forceProxy,\n proxyURL: this.proxyURL\n });\n });\n }\n}\nExcelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelComponent, deps: [{ token: ExcelService }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nExcelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExcelComponent, selector: \"kendo-grid-excel\", inputs: { fileName: \"fileName\", filterable: \"filterable\", creator: \"creator\", date: \"date\", forceProxy: \"forceProxy\", proxyURL: \"proxyURL\", fetchData: \"fetchData\", paddingCellOptions: \"paddingCellOptions\", headerPaddingCellOptions: \"headerPaddingCellOptions\", collapsible: \"collapsible\" }, queries: [{ propertyName: \"columns\", predicate: ColumnBase$1, descendants: true }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-grid-excel',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: ExcelService }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { fileName: [{\n type: Input\n }], filterable: [{\n type: Input\n }], creator: [{\n type: Input\n }], date: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], fetchData: [{\n type: Input\n }], paddingCellOptions: [{\n type: Input\n }], headerPaddingCellOptions: [{\n type: Input\n }], collapsible: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [ColumnBase$1, { descendants: true }]\n }] } });\n\n/**\n * Represents the `export-to-Excel` command of the Grid. You can apply this\n * directive to any `button` element inside a\n * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When the user clicks a button associated with the directive, the\n * [excelExport]({% slug api_grid_gridcomponent %}#toc-excelexport) event\n * fires ([see example]({% slug excelexport_grid %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nclass ExcelCommandDirective extends Button {\n constructor(excelService, element, renderer, localization, ngZone) {\n super(element, renderer, null, localization, ngZone);\n this.excelService = excelService;\n this.ngZone = ngZone;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.excelService.exportClick.emit();\n }\n /**\n * @hidden\n */\n get excelClass() {\n return true;\n }\n}\nExcelCommandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelCommandDirective, deps: [{ token: ExcelService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nExcelCommandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExcelCommandDirective, selector: \"[kendoGridExcelCommand]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-grid-excel\": \"this.excelClass\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelCommandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoGridExcelCommand]'\n }]\n }], ctorParameters: function () { return [{ type: ExcelService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], excelClass: [{\n type: HostBinding,\n args: ['class.k-grid-excel']\n }] } });\n\nconst declarations = [ExcelComponent, ExcelCommandDirective];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Excel component of the Grid.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Grid and Excel modules\n * import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, GridModule, ExcelModule], // import Grid and Excel modules\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ExcelModule {\n}\nExcelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nExcelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, declarations: [ExcelComponent, ExcelCommandDirective], exports: [ExcelComponent, ExcelCommandDirective, ExcelExportModule] });\nExcelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, imports: [ExcelExportModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExcelModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [declarations, ExcelExportModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellTemplateDirective, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnLockedChangeEvent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, CommandColumnComponent, ContainsFilterOperatorComponent, CustomMessagesComponent, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DoesNotContainFilterOperatorComponent, EditCommandDirective, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridComponent, GridModule, GridSpacerComponent, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupIndicatorComponent, GroupModule, GroupPanelComponent, HeaderComponent, HeaderModule, HeaderTemplateDirective, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, RowEditingDirectiveBase, RowFilterModule, SaveCommandDirective, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SharedFilterModule, SharedModule, SinglePopupService, Skip, SpanColumnComponent, StartsWithFilterOperatorComponent, StringFilterCellComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateContextDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { isDevMode, Directive, Optional, EventEmitter, ElementRef, Component, Input, Output, HostBinding, ViewChild, ContentChild, ViewChildren, forwardRef, Inject, Injectable, HostListener, NgModule, ViewContainerRef, ContentChildren } from '@angular/core';\nimport { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, RadioControlValueAccessor } from '@angular/forms';\nimport { Subscription, fromEvent, interval, merge, BehaviorSubject, Subject } from 'rxjs';\nimport { take, filter, concatMap, startWith, takeUntil, skip, debounceTime, throttleTime } from 'rxjs/operators';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';\nimport * as i3 from '@progress/kendo-angular-common';\nimport { Keys, guid, hasObservers, anyChanged, isDocumentAvailable, KendoInput, isChanged, DraggableModule, EventsModule, ResizeSensorModule, PreventableEvent, closest as closest$1 } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { browser, mobileOS, detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';\nimport * as i1$2 from '@progress/kendo-angular-intl';\nimport * as i1$3 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { parseColor as parseColor$1, Color, namedColors } from '@progress/kendo-drawing';\n\n/**\n * @hidden\n *\n * Checks if the value is `null` or `undefined`. Falsy values like '', 0, false, NaN, etc. are regarded as present.\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst areSame = (value1, value2) => value1 === value2 || (value1 === null && value2 === undefined) || (value1 === undefined && value2 === null);\n/**\n * @hidden\n */\nconst requiresZoneOnBlur = (ngControl) => ngControl &&\n (!ngControl.touched || (ngControl.control && ngControl.control.updateOn === 'blur'));\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds. If the number is NaN or null, the min is returned.\n *\n * @param contender Represents the number you want to fit into specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\nconst fitIntoBounds = (contender, min, max) => {\n if (!isPresent(contender) || isNaN(contender)) {\n return min;\n }\n return contender <= min ? min : contender >= max ? max : contender;\n};\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n case 'fillMode':\n return {\n toRemove: `k-${componentType}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${newValue}` : ''\n };\n default:\n break;\n }\n};\n\n/**\n * @hidden\n */\nconst MAX_PRECISION = 20;\n/**\n * @hidden\n */\nconst limitPrecision = (precision) => Math.min(precision, MAX_PRECISION);\n/**\n * @hidden\n */\nconst fractionLength = (value) => {\n return (String(value).split('.')[1] || \"\").length;\n};\nconst maxFractionLength = (value1, value2) => {\n return Math.max(fractionLength(value1), fractionLength(value2));\n};\n/**\n * @hidden\n */\nconst toFixedPrecision = (value, precision) => {\n const maxPrecision = limitPrecision(precision);\n return parseFloat(value.toFixed(maxPrecision));\n};\n/**\n * @hidden\n */\nconst add = (value1, value2) => {\n const maxPrecision = maxFractionLength(value1, value2);\n return toFixedPrecision(value1 + value2, maxPrecision);\n};\n/**\n * @hidden\n */\nconst subtract = (value1, value2) => {\n return add(value1, -value2);\n};\n/**\n * @hidden\n */\nconst multiply = (value1, value2) => {\n const maxPrecision = fractionLength(value1) + fractionLength(value2);\n return toFixedPrecision(value1 * value2, maxPrecision);\n};\n/**\n * @hidden\n */\nconst divide = (dividend, divisor) => {\n if (divisor === 0) {\n return NaN;\n }\n const power = maxFractionLength(dividend, divisor);\n const correctionValue = Math.pow(10, power);\n return ((correctionValue * dividend) / (correctionValue * divisor));\n};\n/**\n * @hidden\n */\nconst remainder = (dividend, divisor) => {\n return Math.abs(subtract(dividend, multiply(divisor, Math.floor(divide(dividend, divisor)))));\n};\n\n/**\n * @hidden\n */\nconst calculateFixedTrackSize = ({ max, min, smallStep, fixedTickWidth }) => ((max - min) / smallStep) * fixedTickWidth;\n/**\n * @hidden\n */\nconst calculateTrackSize = (wrapperWidth, offset, showButtons = true) => {\n const BUTTONS_COUNT = 2;\n const trackOffset = showButtons ? parseFloat(offset) * BUTTONS_COUNT : 0;\n const trackWidth = wrapperWidth - trackOffset;\n return Math.floor(trackWidth);\n};\n/**\n * @hidden\n */\nconst calculateTicksCount = (min = 0, max = 0, smallStep = 1) => {\n if (smallStep <= 0) {\n throw new Error('Invalid argument: smallStep must be a positive number');\n }\n const adjustedRange = Math.abs(subtract(max, min));\n const adjustedRatio = Math.floor(divide(adjustedRange, smallStep));\n const result = add(adjustedRatio, 1);\n return result;\n};\n/**\n * @hidden\n */\nconst calculateValueFromTick = (index, { max, min, smallStep, reverse, vertical }) => {\n const value = add(min, multiply(index, smallStep));\n return vertical || reverse ? Math.abs(subtract(value, max)) : value;\n};\n/**\n * @hidden\n */\nconst calculateHandlePosition = ({ trackWidth, min, max, reverse, value }) => {\n const step = trackWidth / Math.abs(max - min);\n let pos = isPresent(value) ? step * (value - min) : min;\n if (reverse) {\n pos = trackWidth - pos;\n }\n return Math.floor(pos);\n};\n/**\n * @hidden\n */\nconst decreaseValueToStep = (value, { max, min, smallStep, largeStep }, large = false) => {\n const step = large && largeStep ? multiply(smallStep, largeStep) : smallStep;\n const stepValue = subtract(value, min);\n let result;\n const stepRemainder = remainder(stepValue, step);\n if (stepRemainder === 0) {\n result = subtract(stepValue, step);\n }\n else {\n result = subtract(stepValue, stepRemainder);\n }\n return limitValue(add(result, min), min, max);\n};\n/**\n * @hidden\n */\nconst increaseValueToStep = (value, { max, min, smallStep, largeStep }, large = false) => {\n const step = large && largeStep ? multiply(smallStep, largeStep) : smallStep;\n const stepValue = subtract(value, min);\n const stepRemainder = remainder(stepValue, step);\n const result = add(subtract(stepValue, stepRemainder), step);\n return limitValue(add(result, min), min, max);\n};\n/**\n * @hidden\n */\nconst isStartHandle = (dragHandle) => dragHandle.id.indexOf('k-start-handle') > -1;\n/**\n * @hidden\n */\nconst snapValue = (value, options) => {\n const { smallStep, min, max } = options;\n const limited = limitValue(value, min, max);\n if (value !== limited) {\n return limited;\n }\n const left = decreaseValueToStep(value, options);\n const right = increaseValueToStep(value, options);\n if ((value - min) % smallStep === 0) {\n return value;\n }\n if (right - value <= (right - left) / 2) {\n return right;\n }\n return left;\n};\n/**\n * @hidden\n */\nconst trimValue = (max, min, value) => {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n return value;\n};\n/**\n * @hidden\n */\nconst trimValueRange = (max, min, value) => {\n return value ? [trimValue(max, min, value[0]), trimValue(max, min, value[1])] : [min, min];\n};\n/**\n * @hidden\n */\nconst identity = (value) => value;\n/**\n * @hidden\n */\nconst isSameRange = (value1, value2) => areSame(value1[0], value2[0]) && areSame(value1[1], value2[1]);\n/**\n * @hidden\n */\nconst elementOffset = (element) => {\n const box = element.getBoundingClientRect();\n const documentElement = document.documentElement;\n return {\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0),\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0)\n };\n};\n/**\n * @hidden\n */\nconst limitValue = (value, min, max) => {\n return Math.max(Math.min(value, max), min);\n};\n/**\n * @hidden\n */\nconst eventValue = (eventArgs, scaleElement, options) => {\n const { min, max, vertical, rtl } = options;\n const trackOffset = elementOffset(scaleElement);\n const offset = vertical ? eventArgs.pageY - trackOffset.top : eventArgs.pageX - trackOffset.left;\n const scale = (max - min) / (vertical ? scaleElement.clientHeight : scaleElement.clientWidth);\n const offsetValue = offset * scale;\n let value = rtl || vertical ? max - offsetValue : min + offsetValue;\n const stepFractionLength = fractionLength(options.smallStep);\n value = toFixedPrecision(value, stepFractionLength + 1);\n return snapValue(value, options);\n};\n/**\n * @hidden\n */\nconst isButton = (element) => {\n return element.className.indexOf('k-button-increase') >= 0 || element.className.indexOf('k-button-decrease') >= 0;\n};\n/**\n * @hidden\n */\nconst increment = (options) => {\n return increaseValueToStep(options.value, options);\n};\n/**\n * @hidden\n */\nconst decrement = (options) => {\n return decreaseValueToStep(options.value, options);\n};\n/**\n * @hidden\n */\nconst incrementLarge = (options) => {\n return increaseValueToStep(options.value, options, true);\n};\n/**\n * @hidden\n */\nconst decrementLarge = (options) => {\n return decreaseValueToStep(options.value, options, true);\n};\n/**\n * @hidden\n */\nconst validateValue = (value) => {\n if (isDevMode && value && value[0] > value[1]) {\n throw new Error('[RangeSlider] The start value should not be greater than the end value.');\n }\n};\n/**\n * @hidden\n */\nvar slidersUtil = {\n calculateFixedTrackSize,\n calculateValueFromTick,\n calculateTrackSize,\n calculateTicksCount,\n calculateHandlePosition,\n decreaseValueToStep,\n decrement,\n decrementLarge,\n eventValue,\n identity,\n increment,\n incrementLarge,\n isButton,\n isSameRange,\n isStartHandle,\n increaseValueToStep,\n trimValue,\n trimValueRange,\n snapValue,\n validateValue\n};\n\n/**\n * @hidden\n */\nclass SliderModelBase {\n constructor(props, wrapper, track, renderer) {\n this.props = props;\n this.wrapper = wrapper;\n this.track = track;\n this.renderer = renderer;\n this.props = props;\n this.wrapper = wrapper;\n this.track = track;\n this.tickSizes = this.getTickSizes();\n }\n resizeTrack() {\n const orientation = this.props.vertical ? 'height' : 'width';\n const altOrientation = this.props.vertical ? 'width' : 'height';\n const trackWidth = this.trackWidth();\n this.track.parentElement.style[orientation] = `${trackWidth}px`;\n this.track.parentElement.style[altOrientation] = '';\n }\n resizeTicks(ticksContainer, ticks) {\n const dimension = this.props.vertical ? \"height\" : \"width\";\n [...ticks].map((tick, index) => tick.style[dimension] = `${this.tickSizes[index]}px`);\n if (this.props.vertical) {\n this.adjustPadding(ticksContainer);\n }\n }\n resizeWrapper() {\n const dimension = this.props.vertical ? \"height\" : \"width\";\n const fixedTrackWidth = calculateFixedTrackSize(this.props);\n const wrapperParentEl = this.wrapper.parentElement;\n if (fixedTrackWidth) {\n wrapperParentEl.style[dimension] = \"auto\";\n }\n }\n trackWidth() {\n if (this.props.fixedTickWidth) {\n return calculateFixedTrackSize(this.props);\n }\n return this.elementSize(this.track.parentElement);\n }\n getTickSizes() {\n const { min, max, smallStep } = this.props;\n const count = calculateTicksCount(min, max, smallStep);\n const trackSize = this.trackWidth();\n const distStep = trackSize / subtract(max, min);\n const result = [];\n let usedSpace = 0;\n let endPoint = 0;\n for (let i = 0; i < count; i++) {\n if (i === 0 || i === count - 1) {\n endPoint += (smallStep / 2) * distStep;\n }\n else {\n endPoint += smallStep * distStep;\n }\n // ensure that the sum of the tick sizes does not exceed the track width\n endPoint = +endPoint.toFixed(2) - 0.01;\n const size = Math.round(endPoint - usedSpace);\n result.push(size);\n usedSpace += size;\n }\n if (usedSpace >= trackSize) {\n result[result.length - 1] -= 1;\n }\n return result;\n }\n adjustPadding(ticksContainer) {\n const totalTickSize = this.tickSizes.reduce((prev, curr) => prev + curr, 0);\n const trackWidth = this.trackWidth();\n const reminder = trackWidth - totalTickSize;\n if (reminder !== 0) {\n const padding = reminder + this.elementOffset(this.track);\n ticksContainer.style.paddingTop = `${padding}px`;\n }\n }\n elementOffset(element) {\n const { vertical } = this.props;\n const style = getComputedStyle(element);\n return parseInt(vertical ? style.bottom : style.left, 10);\n }\n elementSize(element) {\n const { vertical } = this.props;\n return vertical ? element.clientHeight : element.clientWidth;\n }\n}\n\n/**\n * @hidden\n */\nclass SliderModel extends SliderModelBase {\n positionHandle(dragHandle) {\n const { max, min, reverse, vertical } = this.props;\n const position = vertical ? 'bottom' : 'left';\n const trackWidth = this.trackWidth();\n const value = trimValue(max, min, this.props.value);\n this.handlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.handlePosition}px`);\n }\n positionSelection(selection) {\n const { reverse, vertical } = this.props;\n const dimension = vertical ? 'height' : 'width';\n let size = this.handlePosition;\n if (reverse) {\n size = this.trackWidth() - size;\n }\n this.renderer.setStyle(selection, dimension, `${size}px`);\n }\n}\n\nconst UNTOUCHED = 'ng-untouched';\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClass = (element, className) => Boolean(toClassList(element.className).find((name) => name === className));\n/**\n * @hidden\n */\nfunction invokeElementMethod(element, name, ...args) {\n if (element && element.nativeElement) {\n return element.nativeElement[name].apply(element.nativeElement, args);\n }\n}\n/**\n * @hidden\n */\nconst isUntouched = (element) => element && element.nativeElement && hasClass(element.nativeElement, UNTOUCHED);\n/**\n * @hidden\n */\nconst containsFocus = (hostElement, contender) => hostElement && contender && (hostElement === contender || hostElement.contains(contender));\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-inputs',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654098210,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the template for the labels of the Slider.\n * To define the labels template, nest an `` tag with the `kendoSliderLabelTemplate` directive inside\n * the `` tag. The template context is passed to the `label` value.\n *\n * @example\n * ```ts-no-run\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{value}}\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * }\n *\n * ```\n */\nclass LabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nLabelTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nLabelTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LabelTemplateDirective, selector: \"[kendoSliderLabelTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoSliderLabelTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass SliderBase {\n constructor(localizationService, injector, renderer, ngZone, changeDetector, hostElement) {\n this.localizationService = localizationService;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * Defines the title of the ticks ([see example]({% slug ticks_slider %}#toc-titles)). The default title\n * for each tick is its Slider value. If you use a callback function, the function accepts an argument\n * that holds the value of the component and returns a string with the new title.\n */\n this.title = identity;\n /**\n * Denotes the location of the tick marks in the Slider ([see example]({% slug ticks_slider %}#toc-placement)).\n *\n * The available options are:\n * * `before`—The tick marks are located to the top side of the horizontal track or to the left side of a vertical track.\n * * `after`—The tick marks are located to the bottom side of the horizontal track or to the right side of the vertical track.\n * * `both`— (Default) The tick marks are located on both sides of the track.\n * * `none`—The tick marks are not visible. The actual elements are not added to the DOM tree.\n */\n this.tickPlacement = 'both';\n /**\n * If `vertical` is set to `true`, the orientation of the Slider changes from horizontal to vertical\n * ([see example]({% slug orientation_slider %})).\n */\n this.vertical = false;\n /**\n * The minimum value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * The attribute accepts both integers and floating-point numbers.\n */\n this.min = 0;\n /**\n * The maximum value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * The attribute accepts both integers and floating-point numbers.\n */\n this.max = 10;\n /**\n * The step value of the Slider ([see example]({% slug predefinedsteps_slider %}#toc-small-steps)).\n * Accepts positive values only. Can be an integer or a floating-point number.\n */\n this.smallStep = 1;\n /**\n * Specifies that every nth tick will be large and will have a label\n * ([see example]({% slug predefinedsteps_slider %}#toc-large-steps)).\n * Accepts positive integer values only.\n */\n this.largeStep = null;\n /**\n * Determines whether the Slider is disabled ([see example]({% slug disabledstate_slider %})).\n */\n this.disabled = false;\n /**\n * Determines whether the Slider is in its read-only state ([see example]({% slug readonly_slider %})).\n */\n this.readonly = false;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the Slider.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the component.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the component is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.sliderClass = true;\n this.subscriptions = new Subscription();\n /**\n * @hidden\n */\n this.ifEnabled = (callback, event) => {\n if (!this.isDisabled) {\n callback.call(this, event);\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get horizontalClass() {\n return !this.vertical;\n }\n get verticalClass() {\n return this.vertical;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n ngOnInit() {\n this.subscriptions.add(this.localizationService\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.sizeComponent();\n }));\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n get reverse() {\n return this.localizationService.rtl && !this.vertical;\n }\n get keyBinding() {\n const reverse = this.reverse;\n return {\n [Keys.ArrowLeft]: reverse ? increment : decrement,\n [Keys.ArrowRight]: reverse ? decrement : increment,\n [Keys.ArrowDown]: decrement,\n [Keys.ArrowUp]: increment,\n [Keys.PageUp]: incrementLarge,\n [Keys.PageDown]: decrementLarge,\n [Keys.Home]: ({ min }) => min,\n [Keys.End]: ({ max }) => max\n };\n }\n resetStyles(elements) {\n elements.forEach(el => {\n if (el) {\n if (this.vertical) {\n this.renderer.removeStyle(el, 'width');\n this.renderer.removeStyle(el, 'left');\n this.renderer.removeStyle(el, 'right');\n }\n else {\n this.renderer.removeStyle(el, 'height');\n this.renderer.removeStyle(el, 'bottom');\n }\n this.renderer.removeStyle(el, 'padding-top');\n }\n });\n }\n}\nSliderBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderBase, deps: [{ token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nSliderBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderBase, selector: \"kendo-slider-base\", inputs: { title: \"title\", tickPlacement: \"tickPlacement\", vertical: \"vertical\", min: \"min\", max: \"max\", smallStep: \"smallStep\", largeStep: \"largeStep\", fixedTickWidth: \"fixedTickWidth\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-slider-horizontal\": \"this.horizontalClass\", \"class.k-slider-vertical\": \"this.verticalClass\", \"class.k-slider\": \"this.sliderClass\", \"class.k-state-disabled\": \"this.disabledClass\" } }, queries: [{ propertyName: \"labelTemplate\", first: true, predicate: LabelTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"wrapper\", first: true, predicate: [\"wrap\"], descendants: true, static: true }, { propertyName: \"track\", first: true, predicate: [\"track\"], descendants: true, static: true }, { propertyName: \"sliderSelection\", first: true, predicate: [\"sliderSelection\"], descendants: true, static: true }, { propertyName: \"ticksContainer\", first: true, predicate: [\"ticks\"], descendants: true, read: ElementRef }, { propertyName: \"ticks\", first: true, predicate: [\"ticks\"], descendants: true }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-slider-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { title: [{\n type: Input\n }], tickPlacement: [{\n type: Input\n }], vertical: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], smallStep: [{\n type: Input\n }], largeStep: [{\n type: Input\n }], fixedTickWidth: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-slider-horizontal']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-slider-vertical']\n }], sliderClass: [{\n type: HostBinding,\n args: ['class.k-slider']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], wrapper: [{\n type: ViewChild,\n args: ['wrap', { static: true }]\n }], track: [{\n type: ViewChild,\n args: ['track', { static: true }]\n }], sliderSelection: [{\n type: ViewChild,\n args: ['sliderSelection', { static: true }]\n }], ticksContainer: [{\n type: ViewChild,\n args: ['ticks', { read: ElementRef, static: false }]\n }], ticks: [{\n type: ViewChild,\n args: ['ticks', { static: false }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [LabelTemplateDirective, { static: false }]\n }] } });\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nclass SliderTick {\n constructor(value) {\n this.value = value;\n this.classes = {\n 'k-tick': true\n };\n }\n}\n/**\n * @hidden\n */\nclass SliderTicksComponent {\n constructor() {\n this.wrapperClasses = 'k-reset k-slider-items';\n this.ticks = [];\n }\n ngOnChanges(_) {\n this.createTicks();\n }\n createTicks() {\n const count = calculateTicksCount(this.min, this.max, this.step);\n const largeStep = this.largeStep;\n const tickValueProps = {\n max: this.max,\n min: this.min,\n smallStep: this.step\n };\n let result = [];\n for (let i = 0; i < count; i++) {\n result.push(new SliderTick(calculateValueFromTick(i, tickValueProps)));\n if (largeStep && i % largeStep === 0) {\n result[i].large = true;\n result[i].classes['k-tick-large'] = true;\n }\n }\n if (result.length > 0) {\n Object.assign(result[0].classes, this.endTickClasses(true));\n Object.assign(result[result.length - 1].classes, this.endTickClasses(false));\n }\n this.ticks = result;\n }\n endTickClasses(first) {\n return {\n 'k-first': (first && !this.vertical) || (!first && this.vertical),\n 'k-last': (!first && !this.vertical) || (first && this.vertical)\n };\n }\n}\nSliderTicksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderTicksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nSliderTicksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderTicksComponent, selector: \"[kendoSliderTicks]\", inputs: { tickTitle: \"tickTitle\", vertical: \"vertical\", step: \"step\", largeStep: \"largeStep\", min: \"min\", max: \"max\", labelTemplate: \"labelTemplate\" }, host: { properties: { \"class\": \"this.wrapperClasses\" } }, viewQueries: [{ propertyName: \"tickElements\", predicate: [\"tickElement\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
  • \n \n \n \n \n \n  \n \n
  • \n\n \n {{ tickTitle(value) }}\n \n `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1$1.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i1$1.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i1$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderTicksComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoSliderTicks]',\n template: `\n
  • \n \n \n \n \n \n  \n \n
  • \n\n \n {{ tickTitle(value) }}\n \n `\n }]\n }], propDecorators: { wrapperClasses: [{\n type: HostBinding,\n args: ['class']\n }], tickTitle: [{\n type: Input\n }], vertical: [{\n type: Input\n }], step: [{\n type: Input\n }], largeStep: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], tickElements: [{\n type: ViewChildren,\n args: ['tickElement']\n }] } });\n\n/**\n * @hidden\n */\nclass SliderMessages extends ComponentMessages {\n}\nSliderMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nSliderMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderMessages, selector: \"kendo-slider-messages-base\", inputs: { decrement: \"decrement\", increment: \"increment\", dragHandle: \"dragHandle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-slider-messages-base'\n }]\n }], propDecorators: { decrement: [{\n type: Input\n }], increment: [{\n type: Input\n }], dragHandle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedSliderMessagesDirective extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSliderMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSliderMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSliderMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\", providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSliderMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => LocalizedSliderMessagesDirective)\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PRESSED$1 = 'k-pressed';\n/**\n * Represents the [Kendo UI Slider component for Angular]({% slug overview_slider %}).\n */\nclass SliderComponent extends SliderBase {\n constructor(localization, injector, renderer, ngZone, changeDetector, hostElement) {\n super(localization, injector, renderer, ngZone, changeDetector, hostElement);\n this.localization = localization;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines if the animation will be played on value change.\n * Regardless of this setting, no animation will be played during the initial rendering.\n */\n this.animate = true;\n /**\n * Renders the arrow side buttons of the Slider ([see example]({% slug sidebuttons_slider %}#toc-hidden-state)).\n * When `showButtons` is set to `false`, the buttons are not displayed.\n */\n this.showButtons = true;\n /**\n * The current value of the Slider when it is initially displayed.\n * The component can use either NgModel or the `value` binding but not both of them at the same time.\n */\n this.value = this.min;\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.onWrapClick = (args) => {\n const target = args.target;\n if (!this.isDisabled && !(isButton(target) || isButton(target.parentNode))) {\n const value = eventValue(args, this.track.nativeElement, this.getProps());\n this.changeValue(value);\n }\n invokeElementMethod(this.draghandle, 'focus');\n };\n /**\n * @hidden\n */\n this.onKeyDown = (e) => {\n const options = this.getProps();\n const { max, min } = options;\n const handler = this.keyBinding[e.keyCode];\n if (this.isDisabled || !handler) {\n return;\n }\n const value = handler(options);\n this.changeValue(trimValue(max, min, value));\n e.preventDefault();\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.decreaseValue = () => {\n this.changeValue(decreaseValueToStep(this.value, this.getProps()));\n };\n this.increaseValue = () => {\n this.changeValue(increaseValueToStep(this.value, this.getProps()));\n };\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n });\n }\n };\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n get currentValue() {\n return isPresent(this.value) ? this.value.toString() : '';\n }\n /**\n * Focuses the Slider.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.disabled) {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandle, 'focus');\n this.focusChangedProgrammatically = false;\n }\n }\n /**\n * Blurs the Slider.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandle, 'blur');\n this.handleBlur();\n this.focusChangedProgrammatically = false;\n }\n ngOnChanges(changes) {\n if (anyChanged(['value', 'fixedTickWidth', 'tickPlacement'], changes, true)) {\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this.sizeComponent(false);\n });\n }\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.showButtons) {\n this.setValueChangeInterval(this.increaseButton.nativeElement, () => this.increaseValue());\n this.setValueChangeInterval(this.decreaseButton.nativeElement, () => this.decreaseValue());\n }\n this.sizeComponent(false);\n if (this.ticks) {\n this.ticks.tickElements\n .changes\n .subscribe(() => this.sizeComponent(false));\n }\n this.attachElementEventHandlers();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get incrementMessage() {\n return this.incrementTitle || this.localizationService.get('increment');\n }\n /**\n * @hidden\n */\n get decrementMessage() {\n return this.decrementTitle || this.localizationService.get('decrement');\n }\n /**\n * @hidden\n */\n get dragHandleMessage() {\n return this.dragHandleTitle || this.localizationService.get('dragHandle');\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (args.originalEvent) {\n args.originalEvent.preventDefault();\n }\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n this.dragging = true;\n this.changeValue(eventValue(args, this.track.nativeElement, this.getProps()));\n }\n /**\n * @hidden\n */\n onHandleRelease() {\n this.dragging = false; //needed for animation\n this.renderer.addClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n this.changeDetector.markForCheck();\n this.value = value;\n this.sizeComponent(this.animate);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n changeValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.sizeComponent(this.animate);\n this.changeDetector.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n sizeComponent(animate) {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const track = this.track.nativeElement;\n const selectionEl = this.sliderSelection.nativeElement;\n const dragHandleEl = this.draghandle.nativeElement;\n const ticks = this.ticks ? this.ticksContainer.nativeElement : null;\n if (!animate) {\n this.renderer.removeClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n this.resetStyles([track, selectionEl, dragHandleEl, ticks, this.hostElement.nativeElement]);\n const props = this.getProps();\n const model = new SliderModel(props, wrapper, track, this.renderer);\n model.resizeTrack();\n if (this.ticks) { //for case when tickPlacement: none\n model.resizeTicks(this.ticksContainer.nativeElement, this.ticks.tickElements.map(element => element.nativeElement));\n }\n model.positionHandle(dragHandleEl);\n model.positionSelection(selectionEl);\n if (!animate) {\n this.hostElement.nativeElement.getBoundingClientRect();\n this.renderer.addClass(this.hostElement.nativeElement, 'k-slider-transitions');\n }\n if (this.fixedTickWidth) {\n model.resizeWrapper();\n }\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n this.isFocused = value;\n }\n }\n set dragging(value) {\n if (this.isDragged !== value && this.sliderSelection && this.draghandle) {\n const sliderSelection = this.sliderSelection.nativeElement;\n const draghandle = this.draghandle.nativeElement;\n if (value) {\n this.renderer.addClass(sliderSelection, PRESSED$1);\n this.renderer.addClass(draghandle, PRESSED$1);\n }\n else {\n this.renderer.removeClass(sliderSelection, PRESSED$1);\n this.renderer.removeClass(draghandle, PRESSED$1);\n }\n this.isDragged = value;\n }\n }\n setValueChangeInterval(element, callback) {\n this.ngZone.runOutsideAngular(() => {\n const mousedown = fromEvent(element, 'mousedown');\n const mouseup = fromEvent(element, 'mouseup');\n const mouseout = fromEvent(element, 'mouseout');\n const subscription = mousedown.pipe(filter((e) => e.button === 0 && !this.isDisabled), concatMap(() => interval(150).pipe(startWith(-1), takeUntil(merge(mouseup, mouseout))))).subscribe(() => {\n if (!this.isFocused) {\n invokeElementMethod(this.draghandle, 'focus');\n }\n callback();\n });\n this.subscriptions.add(subscription);\n });\n }\n getProps() {\n return {\n buttons: this.showButtons,\n disabled: this.disabled,\n fixedTickWidth: this.fixedTickWidth,\n largeStep: this.largeStep,\n max: this.max,\n min: this.min,\n readonly: this.readonly,\n reverse: this.reverse,\n rtl: this.localizationService.rtl,\n smallStep: this.smallStep,\n value: trimValue(this.max, this.min, this.value),\n vertical: this.vertical\n };\n }\n attachElementEventHandlers() {\n const hostElement = this.hostElement.nativeElement;\n let tabbing = false;\n let cursorInsideWrapper = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onFocus.emit();\n }\n this.focused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n if (args.relatedTarget !== this.draghandle.nativeElement) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n}\nSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderComponent, selector: \"kendo-slider\", inputs: { focusableId: \"focusableId\", dragHandleTitle: \"dragHandleTitle\", incrementTitle: \"incrementTitle\", animate: \"animate\", decrementTitle: \"decrementTitle\", showButtons: \"showButtons\", value: \"value\", tabIndex: \"tabIndex\" }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.slider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent) }\n ], viewQueries: [{ propertyName: \"draghandle\", first: true, predicate: [\"draghandle\"], descendants: true, static: true }, { propertyName: \"decreaseButton\", first: true, predicate: [\"decreaseButton\"], descendants: true }, { propertyName: \"increaseButton\", first: true, predicate: [\"increaseButton\"], descendants: true }], exportAs: [\"kendoSlider\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n
    \n \n
    \n
      \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n `, isInline: true, components: [{ type: SliderTicksComponent, selector: \"[kendoSliderTicks]\", inputs: [\"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"] }, { type: i3.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSlider',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.slider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => SliderComponent) }\n ],\n selector: 'kendo-slider',\n template: `\n \n
    \n \n
    \n
      \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], dragHandleTitle: [{\n type: Input\n }], incrementTitle: [{\n type: Input\n }], animate: [{\n type: Input\n }], decrementTitle: [{\n type: Input\n }], showButtons: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], draghandle: [{\n type: ViewChild,\n args: ['draghandle', { static: true }]\n }], decreaseButton: [{\n type: ViewChild,\n args: ['decreaseButton', { static: false }]\n }], increaseButton: [{\n type: ViewChild,\n args: ['increaseButton', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass RangeSliderModel extends SliderModelBase {\n positionHandle(dragHandle) {\n if (!dragHandle.id) {\n return;\n }\n const { max, min, reverse, vertical } = this.props;\n const position = vertical ? 'bottom' : 'left';\n const trackWidth = this.trackWidth();\n const value = isStartHandle(dragHandle) ? trimValueRange(max, min, this.props.value)[0]\n : trimValueRange(max, min, this.props.value)[1];\n if (isStartHandle(dragHandle)) {\n this.startHandlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.startHandlePosition}px`);\n }\n else {\n this.endHandlePosition = calculateHandlePosition({\n min,\n max,\n reverse,\n value,\n trackWidth\n });\n this.renderer.setStyle(dragHandle, position, `${this.endHandlePosition}px`);\n }\n }\n positionSelection(dragHandle, selection) {\n const { reverse, vertical } = this.props;\n const dimension = vertical ? 'height' : 'width';\n const position = vertical ? 'bottom' : reverse ? 'right' : 'left';\n const size = Math.abs(this.endHandlePosition - this.startHandlePosition);\n const currentSelectionPosition = vertical ? dragHandle.style.bottom : dragHandle.style.left;\n this.renderer.setStyle(selection, dimension, `${size}px`);\n this.renderer.setStyle(selection, position, reverse ? this.trackWidth() - parseFloat(currentSelectionPosition) + 'px'\n : parseFloat(currentSelectionPosition) + 'px');\n }\n}\n\n/**\n * @hidden\n */\nclass RangeSliderMessages extends ComponentMessages {\n}\nRangeSliderMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nRangeSliderMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RangeSliderMessages, selector: \"kendo-rangeslider-messages-base\", inputs: { dragHandleStart: \"dragHandleStart\", dragHandleEnd: \"dragHandleEnd\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-rangeslider-messages-base'\n }]\n }], propDecorators: { dragHandleStart: [{\n type: Input\n }], dragHandleEnd: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedRangeSliderMessagesDirective extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedRangeSliderMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedRangeSliderMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedRangeSliderMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedRangeSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\", providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedRangeSliderMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => LocalizedRangeSliderMessagesDirective)\n }\n ],\n selector: '[kendoSliderLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PRESSED = 'k-pressed';\n/**\n * Represents the [Kendo UI RangeSlider component for Angular]({% slug overview_rangeslider %}).\n */\nclass RangeSliderComponent extends SliderBase {\n constructor(localization, injector, renderer, ngZone, changeDetector, hostElement) {\n super(localization, injector, renderer, ngZone, changeDetector, hostElement);\n this.localization = localization;\n this.injector = injector;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.startHandleId = `k-start-handle-${guid()}`;\n /**\n * @hidden\n */\n this.endHandleId = `k-end-handle-${guid()}`;\n /**\n * @hidden\n */\n this.focusableId = this.startHandleId;\n this.handleZIndex = 0;\n this.activeHandle = 'startHandle';\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.onWrapClick = (args) => {\n if (!this.isDisabled) {\n this.value = this.value || [this.min, this.min];\n const trackValue = eventValue(args, this.track.nativeElement, this.getProps());\n let newRangeValue;\n const [startValue, endValue] = newRangeValue = this.value;\n if (trackValue <= startValue) {\n newRangeValue = [trackValue, endValue];\n this.activeHandle = 'startHandle';\n }\n else if (startValue < trackValue && trackValue < endValue) {\n if (trackValue < (startValue + endValue) / 2) {\n newRangeValue = [trackValue, endValue];\n this.activeHandle = 'startHandle';\n }\n else {\n newRangeValue = [startValue, trackValue];\n this.activeHandle = 'endHandle';\n }\n }\n else if (trackValue >= endValue) {\n newRangeValue = [startValue, trackValue];\n this.activeHandle = 'endHandle';\n }\n const activeHandle = this.activeHandle === 'startHandle' ? this.draghandleStart : this.draghandleEnd;\n invokeElementMethod(activeHandle, 'focus');\n this.changeValue(newRangeValue);\n }\n };\n /**\n * @hidden\n */\n this.onKeyDown = (e) => {\n this.value = this.value || [this.min, this.min];\n const options = this.getProps();\n const { max, min } = options;\n const handler = this.keyBinding[e.keyCode];\n if (this.isDisabled || !handler) {\n return;\n }\n this.renderer.setStyle(e.target, 'zIndex', ++this.handleZIndex);\n const startHandleIsActive = isStartHandle(e.target);\n const value = handler(Object.assign(Object.assign({}, options), { value: startHandleIsActive ? this.value[0] : this.value[1] }));\n if (startHandleIsActive) {\n if (value > this.value[1]) {\n this.value[1] = value;\n }\n }\n else {\n if (value < this.value[0]) {\n this.value[0] = value;\n }\n }\n const trimmedValue = trimValue(max, min, value);\n const newValue = startHandleIsActive ? [trimmedValue, this.value[1]]\n : [this.value[0], trimmedValue];\n this.changeValue(newValue);\n e.preventDefault();\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n });\n }\n };\n }\n /**\n * Focuses the RangeSlider.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n this.focusChangedProgrammatically = true;\n invokeElementMethod(this.draghandleStart, 'focus');\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the RangeSlider.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const activeHandle = this.activeHandle === 'startHandle' ? this.draghandleStart : this.draghandleEnd;\n invokeElementMethod(activeHandle, 'blur');\n this.handleBlur();\n this.focusChangedProgrammatically = false;\n }\n ngOnInit() {\n if (!this.value) {\n this.value = [this.min, this.max];\n }\n super.ngOnInit();\n }\n ngOnChanges(changes) {\n if (anyChanged(['value', 'fixedTickWidth', 'tickPlacement'], changes, true)) {\n if (changes.value && changes.value.currentValue) {\n validateValue(changes.value.currentValue);\n }\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this.sizeComponent();\n });\n }\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.sizeComponent();\n if (this.ticks) {\n this.ticks.tickElements\n .changes\n .subscribe(() => this.sizeComponent());\n }\n this.attachElementEventHandlers();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get valueText() {\n return this.value ? `${this.value[0]} - ${this.value[1]}` : '';\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (args.originalEvent) {\n args.originalEvent.preventDefault();\n }\n const target = args.originalEvent.target;\n this.draggedHandle = target;\n this.renderer.setStyle(target, 'zIndex', ++this.handleZIndex);\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n this.value = this.value || [this.min, this.min];\n const target = args.originalEvent.target;\n const lastCoords = this.draggedHandle.getBoundingClientRect();\n this.lastHandlePosition = { x: lastCoords.left, y: lastCoords.top };\n this.dragging = { value: true, target };\n const mousePos = {\n x: (args.pageX - 0.5) - (lastCoords.width / 2),\n y: (args.pageY - (lastCoords.width / 2))\n };\n const left = mousePos.x < this.lastHandlePosition.x;\n const right = mousePos.x > this.lastHandlePosition.x;\n const up = mousePos.y > this.lastHandlePosition.y;\n const moveStartHandle = () => this.changeValue([eventValue(args, this.track.nativeElement, this.getProps()), this.value[1]]);\n const moveEndHandle = () => this.changeValue([this.value[0], eventValue(args, this.track.nativeElement, this.getProps())]);\n const moveBothHandles = () => this.changeValue([eventValue(args, this.track.nativeElement, this.getProps()), eventValue(args, this.track.nativeElement, this.getProps())]);\n const activeStartHandle = isStartHandle(this.draggedHandle);\n const vertical = this.vertical;\n const horizontal = !vertical;\n const forward = (vertical && up) || (this.reverse ? horizontal && right : horizontal && left);\n const incorrectValueState = this.value[0] > this.value[1];\n if (this.value[0] === this.value[1] || incorrectValueState) {\n if (forward) {\n // eslint-disable-next-line no-unused-expressions\n activeStartHandle ? moveStartHandle() : moveBothHandles();\n }\n else {\n // eslint-disable-next-line no-unused-expressions\n activeStartHandle ? moveBothHandles() : moveEndHandle();\n }\n }\n else {\n // eslint-disable-next-line no-unused-expressions\n activeStartHandle ? moveStartHandle() : moveEndHandle();\n }\n }\n /**\n * @hidden\n */\n onHandleRelease(args) {\n this.dragging = { value: false, target: args.originalEvent.target }; //needed for animation\n this.draggedHandle = undefined;\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n validateValue(value);\n this.value = value;\n this.sizeComponent();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n changeValue(value) {\n if (!this.value || !isSameRange(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n if (this.value) {\n this.valueChange.emit(value);\n }\n this.sizeComponent();\n });\n }\n }\n /**\n * @hidden\n */\n sizeComponent() {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const track = this.track.nativeElement;\n const selectionEl = this.sliderSelection.nativeElement;\n const dragHandleStartEl = this.draghandleStart.nativeElement;\n const dragHandleEndEl = this.draghandleEnd.nativeElement;\n const ticks = this.ticks ? this.ticksContainer.nativeElement : null;\n this.resetStyles([track, selectionEl, dragHandleStartEl, dragHandleEndEl, ticks, this.hostElement.nativeElement]);\n const props = this.getProps();\n const model = new RangeSliderModel(props, wrapper, track, this.renderer);\n model.resizeTrack();\n if (this.ticks) { //for case when tickPlacement: none\n model.resizeTicks(this.ticksContainer.nativeElement, this.ticks.tickElements.map(element => element.nativeElement));\n }\n model.positionHandle(dragHandleStartEl);\n model.positionHandle(dragHandleEndEl);\n model.positionSelection(dragHandleStartEl, selectionEl);\n if (this.fixedTickWidth) {\n model.resizeWrapper();\n }\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n this.isFocused = value;\n }\n }\n set dragging(data) {\n if (this.isDragged !== data.value && this.sliderSelection && this.draghandleStart && this.draghandleEnd) {\n const sliderSelection = this.sliderSelection.nativeElement;\n const draghandle = data.target;\n if (data.value) {\n this.renderer.addClass(sliderSelection, PRESSED);\n this.renderer.addClass(draghandle, PRESSED);\n }\n else {\n this.renderer.removeClass(sliderSelection, PRESSED);\n this.renderer.removeClass(draghandle, PRESSED);\n }\n this.isDragged = data.value;\n }\n }\n getProps() {\n return {\n disabled: this.disabled,\n fixedTickWidth: this.fixedTickWidth,\n largeStep: this.largeStep,\n max: this.max,\n min: this.min,\n readonly: this.readonly,\n reverse: this.reverse,\n rtl: this.localizationService.rtl,\n smallStep: this.smallStep,\n value: trimValueRange(this.max, this.min, this.value),\n vertical: this.vertical,\n buttons: false\n };\n }\n attachElementEventHandlers() {\n const hostElement = this.hostElement.nativeElement;\n let tabbing = false;\n let cursorInsideWrapper = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onFocus.emit();\n }\n this.focused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n if (args.relatedTarget !== this.draghandleStart.nativeElement && args.relatedTarget !== this.draghandleEnd.nativeElement) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n }\n}\nRangeSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nRangeSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RangeSliderComponent, selector: \"kendo-rangeslider\", inputs: { value: \"value\" }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rangeslider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RangeSliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent) }\n ], viewQueries: [{ propertyName: \"draghandleStart\", first: true, predicate: [\"draghandleStart\"], descendants: true, static: true }, { propertyName: \"draghandleEnd\", first: true, predicate: [\"draghandleEnd\"], descendants: true, static: true }], exportAs: [\"kendoRangeSlider\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n\n
    \n
    \n
      \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n `, isInline: true, components: [{ type: SliderTicksComponent, selector: \"[kendoSliderTicks]\", inputs: [\"tickTitle\", \"vertical\", \"step\", \"largeStep\", \"min\", \"max\", \"labelTemplate\"] }, { type: i3.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedRangeSliderMessagesDirective, selector: \"[kendoSliderLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoRangeSlider',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rangeslider' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RangeSliderComponent) },\n { provide: KendoInput, useExisting: forwardRef(() => RangeSliderComponent) }\n ],\n selector: 'kendo-rangeslider',\n template: `\n \n\n
    \n
    \n
      \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { value: [{\n type: Input\n }], draghandleStart: [{\n type: ViewChild,\n args: ['draghandleStart', { static: true }]\n }], draghandleEnd: [{\n type: ViewChild,\n args: ['draghandleEnd', { static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-switch-messages-base\", inputs: { on: \"on\", off: \"off\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-switch-messages-base'\n }]\n }], propDecorators: { on: [{\n type: Input\n }], off: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedSwitchMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSwitchMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSwitchMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSwitchMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedSwitchMessagesDirective, selector: \"[kendoSwitchLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSwitchMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSwitchMessagesDirective)\n }\n ],\n selector: '[kendoSwitchLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst FOCUSED$4 = 'k-focus';\nconst DEFAULT_SIZE$7 = 'medium';\nconst DEFAULT_THUMB_ROUNDED = 'full';\nconst DEFAULT_TRACK_ROUNDED = 'full';\n/**\n * Represents the [Kendo UI Switch component for Angular]({% slug overview_switch %}).\n */\nclass SwitchComponent {\n constructor(renderer, hostElement, localizationService, injector, changeDetector, ngZone) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.localizationService = localizationService;\n this.injector = injector;\n this.changeDetector = changeDetector;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the Switch is disabled ([see example]({% slug disabled_switch %})).\n */\n this.disabled = false;\n /**\n * Determines whether the Switch is in its read-only state ([see example]({% slug readonly_switch %})).\n */\n this.readonly = false;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the Switch.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.initialized = false;\n this.hostClickSubscription = new Subscription;\n this._checked = false;\n this._size = 'medium';\n this._trackRounded = 'full';\n this._thumbRounded = 'full';\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n /**\n * @hidden\n */\n this.handleFocus = () => {\n if (this.isFocused) {\n return;\n }\n this.focused = true;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = (event) => {\n const relatedTarget = event && event.relatedTarget;\n if (this.hostElement.nativeElement.contains(relatedTarget)) {\n return;\n }\n this.changeDetector.markForCheck();\n this.focused = false;\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n });\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n this.keyDownHandler = this.keyDownHandler.bind(this);\n this.clickHandler = this.clickHandler.bind(this);\n }\n /**\n * Sets the value of the Switch when it is initially displayed.\n */\n set checked(value) {\n this.setHostClasses(value);\n this._checked = value;\n }\n get checked() {\n return this._checked;\n }\n /**\n * Specifies the width and height of the Switch.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$7;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Specifies the border radius of the Switch thumb.\n *\n * The possible values are:\n * * `full` (default)\n * * `small`\n * * `medium`\n * * `large`\n * * `none`\n */\n set thumbRounded(thumbRounded) {\n const newThumbRounded = thumbRounded ? thumbRounded : DEFAULT_THUMB_ROUNDED;\n this.handleThumbClasses(newThumbRounded);\n this._thumbRounded = newThumbRounded;\n }\n get thumbRounded() {\n return this._thumbRounded;\n }\n /**\n * Specifies the border radius of the Switch track.\n *\n * The possible values are:\n * * `full` (default)\n * * `small`\n * * `medium`\n * * `large`\n * * `none`\n */\n set trackRounded(trackRounded) {\n const newTrackRounded = trackRounded ? trackRounded : DEFAULT_TRACK_ROUNDED;\n this.handleTrackClasses(newTrackRounded);\n this._trackRounded = newTrackRounded;\n }\n get trackRounded() {\n return this._trackRounded;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get ieClass() {\n return browser && browser.msie;\n }\n get ariaDisabled() {\n return this.disabled ? true : undefined;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get onLabelMessage() {\n return this.onLabel || this.localizationService.get('on');\n }\n /**\n * @hidden\n */\n get offLabelMessage() {\n return this.offLabel || this.localizationService.get('off');\n }\n get isEnabled() {\n return !this.disabled && !this.readonly;\n }\n ngOnInit() {\n if (this.hostElement) {\n const wrapper = this.hostElement.nativeElement;\n this.renderer.removeAttribute(wrapper, \"tabindex\");\n }\n this.localizationChangeSubscription = this.localizationService\n .changes\n .pipe(skip(1))\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.control = this.injector.get(NgControl, null);\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialized = true);\n }\n ngAfterViewInit() {\n const wrapper = this.hostElement.nativeElement;\n this.attachHostClickHandler();\n if (!this.checked && !wrapper.classList.contains('k-switch-off')) {\n this.renderer.addClass(wrapper, 'k-switch-off');\n }\n this.handleClasses(this.size, 'size');\n this.handleTrackClasses(this.trackRounded);\n this.handleThumbClasses(this.thumbRounded);\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.hostClickSubscription) {\n this.hostClickSubscription.unsubscribe();\n }\n }\n /**\n * Focuses the Switch.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.track) {\n return;\n }\n this.track.nativeElement.focus();\n }\n /**\n * Blurs the Switch.\n */\n blur() {\n if (!this.track) {\n return;\n }\n this.track.nativeElement.blur();\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.checked = value === null ? false : value;\n this.changeDetector.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n keyDownHandler(e) {\n const keyCode = e.keyCode;\n if (this.isEnabled && (keyCode === Keys.Space || keyCode === Keys.Enter)) {\n this.changeValue(!this.checked);\n e.preventDefault();\n }\n }\n /**\n * @hidden\n */\n clickHandler() {\n if (this.isEnabled) {\n this.changeValue(!this.checked);\n }\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n changeValue(value) {\n if (this.checked !== value) {\n this.ngZone.run(() => {\n this.checked = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const wrapper = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(wrapper, FOCUSED$4);\n }\n else {\n this.renderer.removeClass(wrapper, FOCUSED$4);\n }\n this.isFocused = value;\n }\n }\n attachHostClickHandler() {\n this.ngZone.runOutsideAngular(() => {\n this.hostClickSubscription.add(this.renderer.listen(this.hostElement.nativeElement, 'click', this.clickHandler));\n });\n }\n setHostClasses(value) {\n const wrapper = this.hostElement.nativeElement;\n if (value) {\n this.renderer.removeClass(wrapper, 'k-switch-off');\n this.renderer.addClass(wrapper, 'k-switch-on');\n }\n else {\n this.renderer.removeClass(wrapper, 'k-switch-on');\n this.renderer.addClass(wrapper, 'k-switch-off');\n }\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('switch', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleTrackClasses(value) {\n var _a, _b;\n const elem = (_a = this.hostElement) === null || _a === void 0 ? void 0 : _a.nativeElement;\n const track = (_b = this.track) === null || _b === void 0 ? void 0 : _b.nativeElement;\n if (!elem || !track) {\n return;\n }\n const classes = getStylingClasses('switch', 'rounded', this.trackRounded, value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n this.renderer.removeClass(track, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n this.renderer.addClass(track, classes.toAdd);\n }\n }\n handleThumbClasses(value) {\n var _a;\n const thumb = (_a = this.thumb) === null || _a === void 0 ? void 0 : _a.nativeElement;\n if (!thumb) {\n return;\n }\n const classes = getStylingClasses('switch', 'rounded', this.thumbRounded, value);\n if (classes.toRemove) {\n this.renderer.removeClass(thumb, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(thumb, classes.toAdd);\n }\n }\n}\nSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SwitchComponent, selector: \"kendo-switch\", inputs: { focusableId: \"focusableId\", onLabel: \"onLabel\", offLabel: \"offLabel\", checked: \"checked\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", size: \"size\", thumbRounded: \"thumbRounded\", trackRounded: \"trackRounded\", tabIndex: \"tabIndex\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-ie\": \"this.ieClass\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"class.k-switch\": \"this.hostClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.switch' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent)\n }\n ], viewQueries: [{ propertyName: \"track\", first: true, predicate: [\"track\"], descendants: true, static: true }, { propertyName: \"thumb\", first: true, predicate: [\"thumb\"], descendants: true, static: true }], exportAs: [\"kendoSwitch\"], ngImport: i0, template: `\n \n\n \n {{onLabelMessage}}\n {{offLabelMessage}}\n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedSwitchMessagesDirective, selector: \"[kendoSwitchLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSwitch',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.switch' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => SwitchComponent)\n }\n ],\n selector: 'kendo-switch',\n template: `\n \n\n \n {{onLabelMessage}}\n {{offLabelMessage}}\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { focusableId: [{\n type: Input\n }], onLabel: [{\n type: Input\n }], offLabel: [{\n type: Input\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], thumbRounded: [{\n type: Input\n }], trackRounded: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ieClass: [{\n type: HostBinding,\n args: ['class.k-ie']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-switch']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], track: [{\n type: ViewChild,\n args: ['track', { static: true }]\n }], thumb: [{\n type: ViewChild,\n args: ['thumb', { static: true }]\n }] } });\n\n/**\n * Represents the [Kendo UI TextBox directive]({% slug overview_textbox %}) for the Inputs components for Angular.\n * Used to style the textbox of any `input` element.\n *\n * @example\n * ```ts-no-run\n * \n * \n * \n * ```\n */\nclass TextBoxDirective {\n constructor(renderer, inputElement, ngZone) {\n this.renderer = renderer;\n this.inputElement = inputElement;\n this.ngZone = ngZone;\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.onFocus = new EventEmitter();\n /**\n * @hidden\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.onValueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillStart = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillEnd = new EventEmitter();\n this.listeners = [];\n }\n /**\n * @hidden\n */\n set value(text) {\n if (!this.inputElement) {\n return;\n }\n this.inputElement.nativeElement.value = (text === undefined || text === null) ? '' : text;\n this.onValueChange.emit();\n }\n /**\n * @hidden\n */\n get value() {\n return this.inputElement.nativeElement.value;\n }\n get id() {\n return this.inputElement.nativeElement.id;\n }\n set id(id) {\n this.renderer.setAttribute(this.inputElement.nativeElement, 'id', id);\n }\n ngAfterViewInit() {\n const input = this.inputElement.nativeElement;\n this.listeners = [\n this.renderer.listen(input, 'focus', () => this.onFocus.emit()),\n this.renderer.listen(input, 'blur', () => this.onBlur.emit())\n ];\n this.ngZone.runOutsideAngular(() => {\n this.renderer.listen(input, 'animationstart', (e) => {\n if (e.animationName === 'autoFillStart') {\n this.autoFillStart.emit();\n }\n else if (e.animationName === 'autoFillEnd') {\n this.autoFillEnd.emit();\n }\n });\n });\n }\n ngOnDestroy() {\n this.listeners.forEach(listener => listener());\n }\n}\nTextBoxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nTextBoxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxDirective, selector: \"input[kendoTextBox]\", inputs: { value: \"value\" }, host: { properties: { \"class.k-textbox\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-input-md\": \"this.hostClasses\", \"class.k-rounded-md\": \"this.hostClasses\", \"class.k-input-solid\": \"this.hostClasses\" } }, providers: [{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective)\n }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoTextBox]',\n providers: [{\n provide: KendoInput,\n useExisting: forwardRef(() => TextBoxDirective)\n }]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-input-md']\n }, {\n type: HostBinding,\n args: ['class.k-rounded-md']\n }, {\n type: HostBinding,\n args: ['class.k-input-solid']\n }], value: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI TextArea directive for the Inputs components for Angular]({% slug overview_textarea %}).\n * Provides floating labels to `textarea` elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass TextAreaDirective {\n constructor(renderer, element, zone, changeDetector, injector, rtl) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.changeDetector = changeDetector;\n this.injector = injector;\n this.elementClasses = true;\n this.autofillClass = true;\n /**\n * Fires each time the textarea value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Specifies if the `textarea` element will resize its height automatically\n * ([see example]({% slug overview_textarea %}#toc-auto-resizing)).\n *\n * @default false\n */\n this.autoSize = false;\n /**\n * @hidden\n */\n this.onFocus = new EventEmitter();\n /**\n * @hidden\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.onValueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillStart = new EventEmitter();\n /**\n * @hidden\n */\n this.autoFillEnd = new EventEmitter();\n this.listeners = [];\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this.direction = rtl ? 'rtl' : 'ltr';\n }\n get id() {\n return this.element.nativeElement.id;\n }\n set id(id) {\n this.renderer.setAttribute(this.element.nativeElement, 'id', id);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.elementValue = value;\n this.resize();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.setElementProperty('disabled', isDisabled);\n }\n ngOnInit() {\n const element = this.element.nativeElement;\n this.zone.runOutsideAngular(() => {\n this.listeners = [\n this.renderer.listen(element, 'focus', this.handleFocus.bind(this)),\n this.renderer.listen(element, 'blur', this.handleBlur.bind(this)),\n this.renderer.listen(element, 'animationstart', (e) => {\n if (e.animationName === 'autoFillStart') {\n this.autoFillStart.emit();\n }\n else if (e.animationName === 'autoFillEnd') {\n this.autoFillEnd.emit();\n }\n })\n ];\n if (isDocumentAvailable() && this.autoSize) {\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe((debounceTime(50)))\n .subscribe(() => this.resize());\n }\n this.inputSubscription = fromEvent(element, 'input')\n .subscribe(this.handleInput.bind(this));\n });\n this.control = this.injector.get(NgControl, null);\n }\n ngOnChanges(changes) {\n const element = this.element.nativeElement;\n if (changes.value) {\n this.elementValue = this.value;\n }\n if (changes.autoSize) {\n if (this.autoSize) {\n this.initialHeight = element.offsetHeight;\n this.renderer.setStyle(element, 'resize', 'none');\n }\n else {\n this.renderer.setStyle(element, 'overflow-y', 'auto');\n this.renderer.setStyle(element, 'resize', 'both');\n element.style.height = `${this.initialHeight}px`;\n }\n }\n this.zone.onStable.pipe(take(1)).subscribe(() => this.resize());\n }\n ngOnDestroy() {\n this.listeners.forEach(listener => listener());\n if (this.inputSubscription) {\n this.inputSubscription.unsubscribe();\n }\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n get elementValue() {\n if (this.element) {\n return this.element.nativeElement.value;\n }\n return '';\n }\n set elementValue(value) {\n this.setElementProperty('value', (value === undefined || value === null) ? '' : value);\n }\n setElementProperty(name, value) {\n if (this.element) {\n this.renderer.setProperty(this.element.nativeElement, name, value);\n }\n }\n resize() {\n if (!this.autoSize) {\n return;\n }\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, 'overflow-y', 'hidden');\n element.style.height = `${this.initialHeight}px`;\n const scrollHeight = element.scrollHeight;\n if (scrollHeight > this.initialHeight) {\n element.style.height = `${scrollHeight}px`;\n }\n }\n handleInput() {\n const value = this.elementValue;\n this.value = value;\n if (this.control || hasObservers(this.onValueChange) || hasObservers(this.valueChange)) {\n this.zone.run(() => {\n this.ngChange(value);\n this.onValueChange.emit(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n this.resize();\n }\n handleFocus() {\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleBlur() {\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n this.changeDetector.markForCheck();\n });\n }\n }\n}\nTextAreaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTextAreaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextAreaDirective, selector: \"textarea[kendoTextArea]\", inputs: { autoSize: \"autoSize\", value: \"value\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"class.k-textarea\": \"this.elementClasses\", \"class.k-input\": \"this.elementClasses\", \"class.k-input-md\": \"this.elementClasses\", \"class.k-rounded-md\": \"this.elementClasses\", \"class.k-input-solid\": \"this.elementClasses\", \"class.k-autofill\": \"this.autofillClass\", \"attr.dir\": \"this.direction\" } }, providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective)\n }], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaDirective),\n multi: true\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => TextAreaDirective)\n }],\n selector: 'textarea[kendoTextArea]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, propDecorators: { elementClasses: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-input-md']\n }, {\n type: HostBinding,\n args: ['class.k-rounded-md']\n }, {\n type: HostBinding,\n args: ['class.k-input-solid']\n }], autofillClass: [{\n type: HostBinding,\n args: ['class.k-autofill']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], valueChange: [{\n type: Output\n }], autoSize: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst createMaxValidator = (maxValue) => {\n return (c) => {\n if (!isPresent(maxValue) || !isPresent(c.value) || c.value <= maxValue) {\n return null;\n }\n return {\n maxError: {\n maxValue: maxValue,\n value: c.value\n }\n };\n };\n};\n\n/**\n * @hidden\n */\nconst createMinValidator = (minValue) => {\n return (c) => {\n if (!isPresent(minValue) || !isPresent(c.value) || c.value >= minValue) {\n return null;\n }\n return {\n minError: {\n minValue: minValue,\n value: c.value\n }\n };\n };\n};\n\n/**\n * @hidden\n */\nconst MIN_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/inputs/api/NumericTextBoxComponent/#toc-min';\n/**\n * @hidden\n */\nconst MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/inputs/api/NumericTextBoxComponent/#toc-max';\n/**\n * @hidden\n */\nconst POINT = \".\";\n/**\n * @hidden\n */\nconst INITIAL_SPIN_DELAY = 500;\n/**\n * @hidden\n */\nconst SPIN_DELAY = 50;\n/**\n * @hidden\n */\nconst EXPONENT_REGEX = /[eE][\\-+]?([0-9]+)/;\n\n/**\n * @hidden\n */\nconst numericRegex = (options) => {\n const { autoCorrect, decimals, min } = options;\n let separator = options.separator;\n if (separator === POINT) {\n separator = '\\\\' + separator;\n }\n const signPattern = autoCorrect && min !== null && min >= 0 ? '' : '-?';\n let numberPattern;\n if (decimals === 0) {\n numberPattern = '\\\\d*';\n }\n else {\n numberPattern = `(?:(?:\\\\d+(${separator}\\\\d*)?)|(?:${separator}\\\\d*))?`;\n }\n return new RegExp(`^${signPattern}${numberPattern}$`);\n};\n/**\n * @hidden\n */\nconst decimalPart = (value) => {\n return value >= 0 ? Math.floor(value) : Math.ceil(value);\n};\n/**\n * @hidden\n */\nconst noop = (_) => { }; // eslint-disable-line no-empty\n/**\n * @hidden\n */\nconst defined = (value) => {\n return typeof value !== 'undefined';\n};\n/**\n * @hidden\n */\nconst isNumber = (value) => {\n return !isNaN(value) && value !== null;\n};\n/**\n * @hidden\n */\nfunction pad(value, digits) {\n const count = digits - String(value).length;\n let result = value;\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = parseFloat(value + padString);\n }\n return result;\n}\n/**\n * @hidden\n */\nconst getDeltaFromMouseWheel = (e) => {\n let delta = 0;\n if (e.wheelDelta) {\n delta = e.wheelDelta / 120;\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n }\n else if (e.detail) {\n delta = Math.round(-e.detail / 3);\n }\n return delta;\n};\n/**\n * @hidden\n */\nconst getCaretPosition = (element) => element.selectionStart;\n/**\n * @hidden\n */\nconst extractSignificantNumericChars = (formattedString, separator) => {\n const significantCharacters = `${separator}0123456789-`;\n return formattedString.split('').reduce((acc, curr) => significantCharacters.includes(curr) ? ++acc : acc, 0);\n};\n/**\n * @hidden\n */\nconst isRightClick = (event) => {\n const isRightClickIE = event.button && event.button === 2;\n const isRightClickOther = event.which && event.which === 3;\n return isRightClickIE || isRightClickOther;\n};\n\n/**\n * @hidden\n */\nvar ArrowDirection;\n(function (ArrowDirection) {\n ArrowDirection[ArrowDirection[\"Down\"] = -1] = \"Down\";\n ArrowDirection[ArrowDirection[\"None\"] = 0] = \"None\";\n ArrowDirection[ArrowDirection[\"Up\"] = 1] = \"Up\";\n})(ArrowDirection || (ArrowDirection = {}));\n\n/**\n * @hidden\n */\nclass NumericTextBoxMessages extends ComponentMessages {\n}\nNumericTextBoxMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nNumericTextBoxMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericTextBoxMessages, selector: \"kendo-numerictextbox-messages-base\", inputs: { decrement: \"decrement\", increment: \"increment\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-numerictextbox-messages-base'\n }]\n }], propDecorators: { decrement: [{\n type: Input\n }], increment: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedNumericTextBoxMessagesDirective extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedNumericTextBoxMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedNumericTextBoxMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedNumericTextBoxMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedNumericTextBoxMessagesDirective, selector: \"[kendoNumericTextBoxLocalizedMessages]\", providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedNumericTextBoxMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => LocalizedNumericTextBoxMessagesDirective)\n }\n ],\n selector: '[kendoNumericTextBoxLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PARSABLE_OPTIONS = ['min', 'max', 'step', 'decimals'];\nconst PARSABLE_DEFAULTS = {\n decimals: null,\n max: null,\n min: null,\n step: 1\n};\nconst FOCUSED$3 = 'k-focus';\nconst DEFAULT_SIZE$6 = 'medium';\nconst DEFAULT_ROUNDED$5 = 'medium';\nconst DEFAULT_FILL_MODE$4 = 'solid';\n/**\n * Represents the [Kendo UI NumericTextBox component for Angular]({% slug overview_numerictextbox %}).\n */\nclass NumericTextBoxComponent {\n constructor(intl, renderer, localizationService, injector, ngZone, changeDetector, hostElement) {\n this.intl = intl;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.injector = injector;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the NumericTextBox is disabled ([see example]({% slug disabled_numerictextbox %})).\n */\n this.disabled = false;\n /**\n * Determines whether the NumericTextBox is in its read-only state ([see example]({% slug readonly_numerictextbox %})).\n */\n this.readonly = false;\n /**\n * Sets the title of the `input` element of the NumericTextBox.\n */\n this.title = '';\n /**\n * Specifies whether the value will be auto-corrected based on the minimum and maximum values\n * ([see example]({% slug precision_numerictextbox %})).\n */\n this.autoCorrect = false;\n /**\n * Specifies the number of decimals that the user can enter when the input is focused\n * ([see example]({% slug precision_numerictextbox %})).\n */\n this.decimals = null;\n /**\n * Specifies the value that is used to increment or decrement the component value\n * ([see example]({% slug predefinedsteps_numerictextbox %})).\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered\n * ([see example]({% slug spinbuttons_numerictextbox %})).\n */\n this.spinners = true;\n /**\n * Determines whether the built-in minimum or maximum validators are enforced when a form is validated.\n *\n * > The 4.2.0 Angular version introduces the `min` and `max` validation directives. As a result, even if you set `rangeValidation`\n * to `false`, the built-in Angular validators will be executed.\n */\n this.rangeValidation = true;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Determines whether the value of the NumericTextBox will be changed via scrolling. Defaults to `true`.\n *\n * @default true\n */\n this.changeValueOnScroll = true;\n /**\n * Determines whether the whole value will be selected when the NumericTextBox is clicked. Defaults to `true`.\n */\n this.selectOnFocus = true;\n /**\n * Specifies the value of the NumericTextBox\n * ([see example]({% slug formats_numerictextbox %})).\n */\n this.value = null;\n /**\n * Fires each time the user selects a new value ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred ([see example]({% slug overview_numerictextbox %}#toc-events)).\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.ArrowDirection = ArrowDirection;\n /**\n * @hidden\n */\n this.arrowDirection = ArrowDirection.None;\n this.hostClasses = true;\n this.inputValue = '';\n this.minValidateFn = noop;\n this.maxValidateFn = noop;\n this._format = \"n2\";\n this.isPasted = false;\n this.mouseDown = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.ngChange = noop;\n this.ngTouched = noop;\n this.ngValidatorChange = noop;\n this.domEvents = [];\n /**\n * @hidden\n */\n this.increasePress = (e) => {\n this.arrowPress(ArrowDirection.Up, e);\n };\n /**\n * @hidden\n */\n this.decreasePress = (e) => {\n this.arrowPress(ArrowDirection.Down, e);\n };\n /**\n * @hidden\n */\n this.releaseArrow = () => {\n clearTimeout(this.spinTimeout);\n if (this.arrowDirection !== ArrowDirection.None) {\n this.arrowDirection = ArrowDirection.None;\n this.changeDetector.detectChanges();\n }\n };\n /**\n * @hidden\n */\n this.handlePaste = () => {\n this.isPasted = true;\n };\n /**\n * @hidden\n */\n this.handleInput = () => {\n const input = this.numericInput.nativeElement;\n let { selectionStart, selectionEnd, value: inputValue } = input;\n if (this.pressedKey === Keys.NumpadDecimal) {\n inputValue = this.replaceNumpadDotValue();\n }\n if (this.isPasted) {\n inputValue = this.formatInputValue(this.intl.parseNumber(inputValue));\n }\n if (!this.isValid(inputValue)) {\n input.value = this.inputValue;\n this.setSelection(selectionStart - 1, selectionEnd - 1);\n return;\n }\n const parsedValue = this.intl.parseNumber(inputValue);\n let value = this.restrictDecimals(parsedValue);\n if (this.autoCorrect) {\n const limited = this.limitInputValue(value);\n value = limited.value;\n selectionStart = limited.selectionStart;\n selectionEnd = limited.selectionEnd;\n }\n if (parsedValue !== value || this.hasTrailingZeros(inputValue) || !this.focused) {\n this.setInputValue(value);\n this.setSelection(selectionStart, selectionEnd);\n }\n else {\n this.inputValue = inputValue;\n }\n if (this.isPasted) {\n input.value = this.inputValue;\n }\n this.updateValue(value);\n this.previousSelection = null;\n this.isPasted = false;\n };\n /**\n * @hidden\n */\n this.handleDragEnter = () => {\n if (!this.focused && !this.isDisabled) {\n this.setInputValue(this.value, true);\n }\n };\n /**\n * @hidden\n */\n this.handleMouseDown = () => {\n this.mouseDown = true;\n };\n /**\n * @hidden\n */\n this.handleFocus = () => {\n if (!this.focused) {\n this.focused = true;\n if (!this.isDisabled) {\n const shouldSelectAll = this.selectOnFocus || !this.mouseDown;\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n if (shouldSelectAll) {\n this.selectAll();\n }\n else {\n this.selectCaret();\n }\n }, 0);\n });\n }\n }\n this.mouseDown = false;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n //blur is thrown before input when dragging the input text in IE\n if (this.inputValue !== this.elementValue) {\n this.handleInput();\n }\n this.setInputValue();\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.onBlur.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleKeyDown = (e) => {\n if (this.isDisabled) {\n return;\n }\n let step;\n if (e.keyCode === Keys.ArrowDown) {\n step = -1;\n }\n else if (e.keyCode === Keys.ArrowUp) {\n step = 1;\n }\n if (step && this.step) {\n e.preventDefault();\n this.addStep(step);\n }\n const input = this.numericInput.nativeElement;\n this.previousSelection = {\n end: input.selectionEnd,\n start: input.selectionStart\n };\n this.pressedKey = e.keyCode;\n };\n /**\n * @hidden\n */\n this.handleWheel = (e) => {\n if (this.focused && !this.isDisabled && this.changeValueOnScroll) {\n e.preventDefault();\n const delta = getDeltaFromMouseWheel(e);\n this.addStep(delta);\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Specifies the number format which is used when the NumericTextBox is not focused\n * ([see example]({% slug formats_numerictextbox %})).\n * If `format` is set to `null` or `undefined`, the default format will be used.\n */\n get format() {\n const format = this._format;\n return format !== null && format !== undefined ? format : 'n2';\n }\n set format(value) {\n this._format = value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * The size property specifies padding of the NumericTextBox internal input element\n * ([see example]({% slug appearance_numerictextbox %}#toc-size)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$6;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the NumericTextBox\n * ([see example]({% slug appearance_numerictextbox %}#toc-rounded)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the NumericTextBox\n * ([see example]({% slug appearance_numerictextbox %}#toc-fillMode)).\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get disableClass() {\n return this.disabled;\n }\n ngOnInit() {\n this.subscriptions = this.localizationService\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n this.ngZone.runOutsideAngular(() => {\n this.domEvents.push(this.renderer.listen(this.hostElement.nativeElement, 'mousewheel', this.handleWheel.bind(this)));\n this.domEvents.push(this.renderer.listen(this.hostElement.nativeElement, 'DOMMouseScroll', this.handleWheel.bind(this)));\n });\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(PARSABLE_OPTIONS, changes, false)) {\n this.parseOptions(PARSABLE_OPTIONS.filter(option => changes[option]));\n }\n this.verifySettings();\n if (anyChanged(['min', 'max', 'rangeValidation'], changes, false)) {\n this.minValidateFn = this.rangeValidation ? createMinValidator(this.min) : noop;\n this.maxValidateFn = this.rangeValidation ? createMaxValidator(this.max) : noop;\n this.ngValidatorChange();\n }\n if (anyChanged(['autoCorrect', 'decimals', 'min'], changes)) {\n delete this.numericRegex;\n }\n if (anyChanged(['value', 'format'], changes, false)) {\n this.verifyValue(this.value);\n this.value = this.restrictModelValue(this.value);\n if (!this.focused || (this.intl.parseNumber(this.elementValue) !== this.value)) {\n this.setInputValue();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n clearTimeout(this.spinTimeout);\n this.domEvents.forEach(unbindHandler => unbindHandler());\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.ngValidatorChange = fn;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n let restrictedValue = this.restrictModelValue(value);\n this.value = restrictedValue;\n this.setInputValue();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * Focuses the NumericTextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n invokeElementMethod(this.numericInput, 'focus');\n }\n /**\n * Blurs the NumericTextBox.\n */\n blur() {\n invokeElementMethod(this.numericInput, 'blur');\n }\n /**\n * Notifies the `NumericTextBoxComponent` that the input value should be changed.\n * Can be used to update the input after setting the component properties directly.\n */\n notifyValueChange() {\n this.setInputValue();\n }\n /**\n * @hidden\n */\n get incrementTitle() {\n return this.localizationService.get('increment');\n }\n /**\n * @hidden\n */\n get decrementTitle() {\n return this.localizationService.get('decrement');\n }\n get decimalSeparator() {\n const numberSymbols = this.intl.numberSymbols();\n return numberSymbols.decimal;\n }\n get elementValue() {\n return this.numericInput.nativeElement.value;\n }\n set elementValue(value) {\n this.renderer.setProperty(this.numericInput.nativeElement, 'value', value);\n }\n get focused() {\n return this.isFocused;\n }\n get hasDecimals() {\n return this.decimals !== null && this.decimals >= 0;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const wrap = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(wrap, FOCUSED$3);\n }\n else {\n this.renderer.removeClass(wrap, FOCUSED$3);\n }\n this.isFocused = value;\n }\n }\n get isDisabled() {\n return this.disabled || this.readonly;\n }\n arrowPress(direction, e) {\n e.preventDefault();\n if (this.isDisabled || isRightClick(e)) {\n return;\n }\n if (!mobileOS) {\n this.focused = true;\n this.focus();\n }\n if (this.arrowDirection !== direction) {\n this.arrowDirection = direction;\n this.changeDetector.detectChanges();\n }\n if (this.step) {\n this.spin(direction, INITIAL_SPIN_DELAY);\n }\n else {\n this.setInputValue();\n }\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n replaceNumpadDotValue() {\n let value = this.inputValue || \"\";\n if (this.previousSelection) {\n const input = this.numericInput.nativeElement;\n const { selectionStart, selectionEnd } = input;\n const { start, end } = this.previousSelection;\n input.value = value = value.substring(0, start) + this.decimalSeparator + value.substring(end);\n this.setSelection(selectionStart, selectionEnd);\n }\n return value;\n }\n isValid(value) {\n if (!this.numericRegex) {\n this.numericRegex = numericRegex({\n autoCorrect: this.autoCorrect,\n decimals: this.decimals,\n min: this.min,\n separator: this.decimalSeparator\n });\n }\n return this.numericRegex.test(value);\n }\n spin(step, timeout) {\n clearTimeout(this.spinTimeout);\n this.spinTimeout = window.setTimeout(() => {\n this.spin(step, SPIN_DELAY);\n }, timeout);\n this.addStep(step);\n }\n addStep(step) {\n let value = add(this.value || 0, this.step * step);\n value = this.limitValue(value);\n value = this.restrictDecimals(value);\n this.setInputValue(value);\n this.updateValue(value);\n }\n setSelection(start, end) {\n if (this.focused) {\n invokeElementMethod(this.numericInput, 'setSelectionRange', start, end);\n }\n }\n limitValue(value) {\n let result = value;\n if (!this.isInRange(value)) {\n if (isNumber(this.max) && value > this.max) {\n result = this.max;\n }\n if (isNumber(this.min) && value < this.min) {\n result = this.min;\n }\n }\n return result;\n }\n limitInputValue(value) {\n let { selectionStart, selectionEnd, value: enteredValue } = this.numericInput.nativeElement;\n let limitedValue = value;\n let selectToEnd = false;\n if (!this.isInRange(value)) {\n const lengthChange = enteredValue.length - String(this.inputValue).length;\n const { min, max } = this;\n const hasMax = isNumber(max);\n const hasMin = isNumber(min);\n let padLimit, replaceNext;\n let correctedValue = value;\n if (selectionStart === 0 && this.inputValue.substr(1) === enteredValue) {\n return {\n selectionEnd: selectionEnd,\n selectionStart: selectionStart,\n value: null\n };\n }\n if (hasMax && value > max) {\n if (value > 0) {\n replaceNext = true;\n }\n else {\n padLimit = max;\n }\n }\n else if (hasMin && value < min) {\n if (value > 0) {\n padLimit = min;\n }\n else {\n replaceNext = true;\n }\n }\n if (padLimit) {\n const paddedValue = this.tryPadValue(value, padLimit);\n if (paddedValue && decimalPart(value) !== decimalPart(padLimit)) {\n correctedValue = paddedValue;\n selectToEnd = true;\n }\n }\n else if (replaceNext) {\n if (this.inputValue && selectionStart !== enteredValue.length) {\n correctedValue = parseFloat(enteredValue.substr(0, selectionStart) +\n enteredValue.substr(selectionStart + lengthChange));\n }\n }\n limitedValue = this.limitValue(correctedValue);\n selectToEnd = (selectToEnd || limitedValue !== correctedValue) && this.previousSelection &&\n (this.previousSelection.end - this.previousSelection.start + lengthChange) > 0;\n }\n return {\n selectionEnd: selectToEnd ? String(limitedValue).length : selectionEnd,\n selectionStart: selectionStart,\n value: limitedValue\n };\n }\n tryPadValue(value, limit) {\n const limitLength = String(Math.floor(limit)).length;\n const zeroPadded = pad(value, limitLength);\n const zeroPaddedNext = pad(value, limitLength + 1);\n let result;\n if (this.isInRange(zeroPadded)) {\n result = zeroPadded;\n }\n else if (this.isInRange(zeroPaddedNext)) {\n result = zeroPaddedNext;\n }\n return result;\n }\n isInRange(value) {\n return !isNumber(value) || ((!isNumber(this.min) || this.min <= value) && (!isNumber(this.max) || value <= this.max));\n }\n restrictModelValue(value) {\n let result = this.restrictDecimals(value, true);\n if (this.autoCorrect && this.limitValue(result) !== result) {\n result = null;\n }\n return result;\n }\n restrictDecimals(value, round) {\n let result = value;\n if (value && this.hasDecimals) {\n const decimals = this.decimals;\n const stringValue = String(value);\n if (round || EXPONENT_REGEX.test(stringValue)) {\n result = toFixedPrecision(value, decimals);\n }\n else {\n const parts = stringValue.split(POINT);\n let fraction = parts[1];\n if (fraction && fraction.length > decimals) {\n fraction = fraction.substr(0, decimals);\n result = parseFloat(`${parts[0]}${POINT}${fraction}`);\n }\n }\n }\n return result;\n }\n formatInputValue(value) {\n let stringValue = Object.is(value, -0) ? '-0' : String(value);\n const exponentMatch = EXPONENT_REGEX.exec(stringValue);\n if (exponentMatch) {\n stringValue = value.toFixed(limitPrecision(parseInt(exponentMatch[1], 10)));\n }\n return stringValue.replace(POINT, this.decimalSeparator);\n }\n formatValue(value, focused) {\n let formattedValue;\n if (value === null || !defined(value) || value === '') {\n formattedValue = '';\n }\n else if (focused && !this.readonly) {\n formattedValue = this.formatInputValue(value);\n }\n else {\n formattedValue = this.intl.formatNumber(value, this.format);\n }\n return formattedValue;\n }\n setInputValue(value = this.value, focused = this.focused) {\n const formattedValue = this.formatValue(value, focused);\n this.elementValue = formattedValue;\n this.inputValue = formattedValue;\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.min !== null && this.max !== null && this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK} and ${MAX_DOC_LINK}.`);\n }\n }\n verifyValue(value) {\n if (isDevMode() && value && typeof value !== 'number') {\n throw new Error(`The NumericTextBox component requires value of type Number and ${JSON.stringify(value)} was set.`);\n }\n }\n parseOptions(options) {\n for (let idx = 0; idx < options.length; idx++) {\n const name = options[idx];\n const value = this[name];\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n const valid = !isNaN(parsed);\n if (isDevMode() && !valid && value !== '') {\n throw new Error('The NumericTextBox component requires value of type Number or a String representing ' +\n `a number for the ${name} property and ${JSON.stringify(value)} was set.`);\n }\n this[name] = valid ? parsed : PARSABLE_DEFAULTS[name];\n }\n }\n }\n intlChange() {\n delete this.numericRegex;\n if (this.numericInput && (!this.focused || !this.isValid(this.elementValue))) {\n this.setInputValue();\n }\n }\n hasTrailingZeros(inputValue) {\n if (this.hasDecimals && this.focused) {\n const fraction = inputValue.split(this.decimalSeparator)[1];\n return fraction && fraction.length > this.decimals && fraction.lastIndexOf('0') === fraction.length - 1;\n }\n }\n selectAll() {\n this.setInputValue();\n this.setSelection(0, this.inputValue.length);\n }\n selectCaret() {\n const caretPosition = getCaretPosition(this.numericInput.nativeElement);\n const formattedValue = this.elementValue;\n const partialValue = formattedValue.substring(0, caretPosition);\n this.setInputValue();\n if (partialValue.length) {\n const significantCharsInFormattedValue = extractSignificantNumericChars(partialValue, this.decimalSeparator);\n const adjustedSignificantChars = this.adjustSignificantChars(formattedValue, significantCharsInFormattedValue);\n this.setSelection(adjustedSignificantChars, adjustedSignificantChars);\n }\n else {\n this.setSelection(0, 0);\n }\n }\n numberOfLeadingZeroes(formattedValue) {\n const separatorIndex = formattedValue.indexOf(this.decimalSeparator);\n const matchedLeadingZeroes = formattedValue.match(/^[^1-9]*?(0+)/);\n if (matchedLeadingZeroes) {\n const lengthOfMatch = matchedLeadingZeroes[0].length;\n const lengthOfLeadingZeroesMatch = matchedLeadingZeroes[1].length;\n return lengthOfMatch === separatorIndex ? lengthOfLeadingZeroesMatch - 1 : lengthOfLeadingZeroesMatch;\n }\n return 0;\n }\n adjustSignificantChars(formattedValue, significantChars) {\n const leadingZeroes = this.numberOfLeadingZeroes(formattedValue);\n if (leadingZeroes > 0) {\n return Math.max(0, significantChars - leadingZeroes);\n }\n return significantChars;\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nNumericTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxComponent, deps: [{ token: i1$2.IntlService }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNumericTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", autoCorrect: \"autoCorrect\", format: \"format\", max: \"max\", min: \"min\", decimals: \"decimals\", placeholder: \"placeholder\", step: \"step\", spinners: \"spinners\", rangeValidation: \"rangeValidation\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", changeValueOnScroll: \"changeValueOnScroll\", selectOnFocus: \"selectOnFocus\", value: \"value\", maxlength: \"maxlength\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-disabled\": \"this.disableClass\", \"class.k-input\": \"this.hostClasses\", \"class.k-numerictextbox\": \"this.hostClasses\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent) }\n ], viewQueries: [{ propertyName: \"numericInput\", first: true, predicate: [\"numericInput\"], descendants: true, static: true }], exportAs: [\"kendoNumericTextBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedNumericTextBoxMessagesDirective, selector: \"[kendoNumericTextBoxLocalizedMessages]\" }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoNumericTextBox',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.numerictextbox' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumericTextBoxComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => NumericTextBoxComponent) }\n ],\n selector: 'kendo-numerictextbox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$2.IntlService }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], autoCorrect: [{\n type: Input\n }], format: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], decimals: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], step: [{\n type: Input\n }], spinners: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], changeValueOnScroll: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], value: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], numericInput: [{\n type: ViewChild,\n args: ['numericInput', { static: true }]\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], disableClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-numerictextbox']\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass NumericTextBoxCustomMessagesComponent extends NumericTextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nNumericTextBoxCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNumericTextBoxCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NumericTextBoxCustomMessagesComponent, selector: \"kendo-numerictextbox-messages\", providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: NumericTextBoxMessages,\n useExisting: forwardRef(() => NumericTextBoxCustomMessagesComponent)\n }\n ],\n selector: 'kendo-numerictextbox-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nvar ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n // eslint-disable-next-line id-denylist\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nclass Result {\n constructor(value, rest, type = ResultType.Undefined) {\n this.value = value;\n this.rest = rest;\n this.type = type;\n }\n //map :: Functor f => f a ~> (a -> b) -> f b\n map(fn) {\n return new Result(fn(this.value), this.rest);\n }\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n chain(fn) {\n return fn(this.value, this.rest);\n }\n fold(s, _ /*we don't need it*/) {\n return s(this.value, this.rest);\n }\n concat(r) {\n return this.map((vs, _) => r.chain((v, __) => vs.concat([v])));\n }\n toString() {\n return `Result({ value: '${this.value}', rest: ${this.rest} })`;\n }\n}\n\n/**\n * @hidden\n */\nclass Stream {\n constructor(input = [], control = []) {\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n eof() {\n return this.inputCursor >= this.input.length;\n }\n // Get the first value from the input.\n next() {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n }\n peek() {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n }\n eat_input() {\n this.inputCursor++;\n }\n eat_control() {\n this.controlCursor++;\n }\n eat() {\n this.inputCursor++;\n this.controlCursor++;\n }\n}\n\nconst toArray = (value) => (value || '').split('');\nconst ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nclass Parser {\n constructor(parse) {\n this.parse = parse;\n }\n run(input, control = '') {\n if (input instanceof Stream) {\n return this.parse(input);\n }\n else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n }\n //map :: Functor f => f a ~> (a -> b) -> f b\n map(f) {\n return new Parser(stream => this.parse(stream).map(f));\n }\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n chain(f) {\n return new Parser(stream => this.parse(stream).chain((v, s) => f(v).run(s)));\n }\n isLiteral(c) {\n return this.run(c).type === ResultType.Literal;\n }\n}\n/**\n * @hidden\n */\nconst mask = ({ prompt, promptPlaceholder }) => rule => new Parser(stream => {\n while (!stream.eof()) {\n const { char, control } = stream.peek();\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n});\n/**\n * @hidden\n */\nconst literal = _token => new Parser(stream => {\n // let {char, control} = stream.peek();\n let char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n }\n // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n return new Result(_token, stream, ResultType.Literal);\n});\n/**\n * @hidden\n */\nconst unmask = prompt => rule => new Parser(stream => {\n while (!stream.eof()) {\n const { char, control } = stream.peek();\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result('', stream);\n});\n/**\n * @hidden\n */\nconst unliteral = _token => new Parser(stream => {\n if (stream.eof()) {\n return new Result('', stream);\n }\n const { char } = stream.peek();\n if (char === _token) {\n stream.eat();\n }\n return new Result(_token, stream);\n});\n/**\n * @hidden\n */\nconst token = (rules, creator) => new Parser(stream => {\n let { char } = stream.next();\n const rule = rules[char];\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n return new Result(creator.mask(rule), stream);\n});\n/**\n * @hidden\n */\nconst rawMask = ({ prompt, promptPlaceholder }) => new Parser(stream => {\n let { char } = stream.next();\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n return new Result(char, stream);\n});\n/**\n * @hidden\n */\nconst rawLiteral = includeLiterals => new Parser(stream => {\n let { char } = stream.next();\n if (includeLiterals) {\n return new Result(char, stream);\n }\n return new Result('', stream);\n});\n\n/**\n * @hidden\n */\nconst always = value => new Parser(stream => new Result(value, stream));\n/**\n * @hidden\n */\nconst append = (p1, p2) => p1.chain(vs => p2.map(v => vs.concat([v])));\n/**\n * @hidden\n */\nconst sequence = list => list.reduce((acc, parser) => append(acc, parser), always([]));\n/**\n * @hidden\n */\nconst greedy = parser => new Parser(stream => {\n let result = new Result([], stream);\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n return result;\n});\n\n/**\n * @hidden\n */\nclass MaskingService {\n constructor() {\n this.rules = {};\n this.prompt = \"_\";\n this.mask = \"\";\n this.promptPlaceholder = \" \";\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n update({ mask = '', prompt = '', promptPlaceholder = ' ', rules = {}, includeLiterals = false }) {\n this.mask = mask;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n }\n validationValue(maskedValue = '') {\n let value = maskedValue;\n sequence(this.validationTokens)\n .run(maskedValue)\n .fold(unmasked => {\n value = unmasked.join('');\n });\n return value;\n }\n rawValue(maskedValue = '') {\n let value = maskedValue;\n if (!this.rawTokens.length) {\n return value;\n }\n sequence(this.rawTokens)\n .run(maskedValue)\n .fold(unmasked => {\n value = unmasked.join('');\n });\n return value;\n }\n /**\n * @hidden\n */\n maskRaw(rawValue = '') {\n let value = rawValue;\n if (!this.maskTokens.length) {\n return value;\n }\n sequence(this.maskTokens)\n .run(rawValue)\n .fold(masked => {\n value = masked.join('');\n });\n return value;\n }\n maskInput(input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n return this.maskInserted(input, control, splitPoint);\n }\n maskInRange(pasted, oldValue, start, end) {\n let value = '';\n let selection = end;\n const beforeChange = oldValue.split('').slice(0, start);\n const afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end))\n .run(pasted)\n .fold(masked => {\n value = beforeChange\n .concat(masked)\n .concat(afterChange)\n .join('');\n });\n return {\n selection,\n value\n };\n }\n maskRemoved(input, control, splitPoint) {\n let value = '';\n let selection = splitPoint;\n const unchanged = input.split('').slice(splitPoint);\n const changed = input.split('').slice(0, splitPoint).join('');\n const take = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take))\n .run(changed, control)\n .fold(masked => {\n selection = this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection,\n value\n };\n }\n adjustPosition(input, selection) {\n const caretChar = input[selection];\n const isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n return selection;\n }\n maskInserted(input, control, splitPoint) {\n let value = '';\n let selection = splitPoint;\n const changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens)\n .run(changed, control)\n .chain(unmasked => {\n selection = unmasked.join('').length;\n const unchanged = control.slice(selection);\n return sequence(this.maskTokens)\n .run(unmasked.join('') + unchanged, control);\n })\n .fold(masked => {\n value = masked.join('');\n });\n return {\n selection,\n value\n };\n }\n get maskTokenCreator() {\n const { prompt, promptPlaceholder } = this;\n return {\n literal: rule => literal(rule),\n mask: rule => mask({ prompt, promptPlaceholder })(rule)\n };\n }\n get unmaskTokenCreator() {\n return {\n literal: rule => unliteral(rule),\n mask: rule => unmask(this.prompt)(rule)\n };\n }\n get rawTokenCreator() {\n const { prompt, promptPlaceholder, includeLiterals } = this;\n return {\n literal: _ => rawLiteral(includeLiterals),\n mask: _ => rawMask({ prompt, promptPlaceholder })\n };\n }\n get validationTokenCreator() {\n const { prompt } = this;\n return {\n literal: _ => rawLiteral(false),\n mask: _ => rawMask({ prompt, promptPlaceholder: '' })\n };\n }\n tokenize() {\n greedy(token(this.rules, this.maskTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator))\n .run(this.mask)\n .fold((tokens, _) => {\n this.validationTokens = tokens;\n });\n }\n}\nMaskingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMaskingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskingService, decorators: [{\n type: Injectable\n }] });\n\nconst resolvedPromise = Promise.resolve(null);\nconst FOCUSED$2 = 'k-focus';\nconst DEFAULT_SIZE$5 = 'medium';\nconst DEFAULT_ROUNDED$4 = 'medium';\nconst DEFAULT_FILL_MODE$3 = 'solid';\n/**\n * Represents the [Kendo UI MaskedTextBox component for Angular]({% slug overview_maskedtextbox %}).\n *\n * @example\n * ```ts-no-run\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public value: string = \"9580128055807792\";\n * public mask: string = \"0000-0000-0000-0000\";\n * }\n * ```\n */\nclass MaskedTextBoxComponent {\n constructor(service, renderer, hostElement, ngZone, injector, changeDetector, rtl) {\n this.service = service;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.injector = injector;\n this.changeDetector = changeDetector;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether the MaskedTextBox is disabled ([see example]({% slug disabled_maskedtextbox %})).\n */\n this.disabled = false;\n /**\n * Determines whether the MaskedTextBox is in its read-only state ([see example]({% slug readonly_maskedtextbox %})).\n */\n this.readonly = false;\n /**\n * Represents a prompt character for the masked value.\n * @default `_`\n */\n this.prompt = '_';\n /**\n * Indicates a character which represents an empty position in the raw value.\n * @default ' '\n */\n this.promptPlaceholder = ' ';\n /**\n * Indicates whether to include literals in the raw value ([see example]({% slug value_maskedtextbox %})).\n * @default false\n */\n this.includeLiterals = false;\n /**\n * Specifies if the mask should be shown on focus for empty value.\n */\n this.maskOnFocus = false;\n /**\n * Determines whether the built-in mask validator is enforced when a form is validated\n * ([see example]({% slug validation_maskedtextbox %})).\n * @default true\n */\n this.maskValidation = true;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires each time the user focuses the `input` element.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value changes.\n */\n this.valueChange = new EventEmitter();\n this.hostClasses = true;\n this.focusClick = false;\n this.defaultRules = {\n \"#\": /[\\d\\s\\+\\-]/,\n \"&\": /[\\S]/,\n \"0\": /[\\d]/,\n \"9\": /[\\d\\s]/,\n \"?\": /[a-zA-Z\\s]/,\n \"A\": /[a-zA-Z0-9]/,\n \"C\": /./,\n \"L\": /[a-zA-Z]/,\n \"a\": /[a-zA-Z0-9\\s]/\n };\n this.isPasted = false;\n this.selection = [0, 0];\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n /**\n * @hidden\n */\n this.handleFocus = () => {\n this.focused = true;\n if (this.maskOnFocus && this.emptyMask) {\n this.updateInput(this.service.maskRaw(this.value));\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => { this.setSelection(0, 0); }, 0);\n });\n }\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleClick = () => {\n if (this.focused && !this.focusClick) {\n this.focusClick = true;\n const { selectionStart, selectionEnd } = this.input.nativeElement;\n if (selectionStart === selectionEnd) {\n this.setFocusSelection();\n }\n }\n };\n /**\n * @hidden\n */\n this.handleBlur = () => {\n this.changeDetector.markForCheck();\n this.focused = false;\n this.focusClick = false;\n if (this.maskOnFocus && this.emptyMask) {\n this.updateInput(this.maskedValue);\n }\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.onTouched();\n this.onBlur.emit();\n });\n }\n };\n this.onChange = (_) => { };\n this.onTouched = () => { };\n validatePackage(packageMetadata);\n this.direction = rtl ? 'rtl' : 'ltr';\n this.updateService();\n }\n /**\n * The size property specifies the padding of the MaskedTextBox internal input element\n * ([see example]({% slug appearance_maskedtextbox %}#toc-size)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$5;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the MaskedTextBox\n * ([see example]({% slug appearance_maskedtextbox %}#toc-rounded)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the MaskedTexBox\n * ([see example]({% slug appearance_maskedtextbox %}#toc-fillMode)).\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$3;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Exposes the RegExp-based mask validation array ([see example]({% slug masks_maskedtextbox %})).\n */\n set rules(value) {\n this._rules = Object.assign({}, this.defaultRules, value);\n }\n get rules() {\n return this._rules || this.defaultRules;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n ngOnInit() {\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.control = this.injector.get(NgControl, null);\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the MaskedTextBox is empty.\n */\n isEmpty() {\n if (this.input) {\n return !Boolean(this.input.nativeElement.value);\n }\n }\n /**\n * @hidden\n */\n handleDragDrop() {\n return false;\n }\n /**\n * Focuses the MaskedTextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.input.nativeElement.focus();\n this.setFocusSelection();\n }\n /**\n * Blurs the MaskedTextBox.\n */\n blur() {\n if (!this.input) {\n return;\n }\n this.input.nativeElement.blur();\n }\n /**\n * @hidden\n */\n pasteHandler(e) {\n const { selectionStart, selectionEnd } = e.target;\n if (selectionEnd === selectionStart) {\n return;\n }\n this.isPasted = true;\n this.selection = [selectionStart, selectionEnd];\n }\n /**\n * @hidden\n */\n inputHandler(e) {\n const value = e.target.value;\n const [start, end] = this.selection;\n if (!this.mask) {\n this.updateValueWithEvents(value);\n this.isPasted = false;\n return;\n }\n let result;\n if (this.isPasted) {\n this.isPasted = false;\n const rightPart = this.maskedValue.length - end;\n const to = value.length - rightPart;\n result = this.service.maskInRange(value.slice(start, to), this.maskedValue, start, end);\n }\n else {\n result = this.service.maskInput(value, this.maskedValue || '', e.target.selectionStart);\n }\n this.updateInput(result.value, result.selection);\n this.updateValueWithEvents(result.value);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.value) {\n this.value = this.normalizeValue();\n }\n if (!this.mask) {\n this.updateInput(this.value);\n return;\n }\n const next = this.extractChanges(changes);\n this.updateService(next);\n const maskedValue = this.service.maskRaw(this.value);\n this.updateInput(maskedValue, null, true);\n if (changes.includeLiterals || isChanged('promptPlaceholder', changes)) {\n resolvedPromise.then(() => {\n this.updateValueWithEvents(this.maskedValue);\n });\n }\n }\n /**\n * @hidden\n * Writes a new value to the element.\n */\n writeValue(value) {\n this.value = this.normalizeValue(value);\n this.updateInput(this.service.maskRaw(this.value));\n if (this.includeLiterals) {\n this.updateValue(this.maskedValue);\n }\n }\n /**\n * @hidden\n * Sets the function that will be called when a `change` event is triggered.\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * @hidden\n * Sets the function that will be called when a `touch` event is triggered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n validate(_) {\n if (this.maskValidation === false || !this.mask) {\n return null;\n }\n if (!this.service.validationValue(this.maskedValue)) {\n return null;\n }\n if (this.maskedValue.indexOf(this.prompt) !== -1) {\n return {\n patternError: {\n mask: this.mask,\n maskedValue: this.maskedValue,\n value: this.value\n }\n };\n }\n return null;\n }\n /**\n * @hidden\n */\n updateValueWithEvents(maskedValue) {\n this.updateValue(maskedValue);\n if (hasObservers(this.valueChange)) {\n this.valueChange.emit(this.value);\n }\n }\n updateValue(value) {\n if (this.mask && !this.service.validationValue(value) && !this.includeLiterals) {\n this.value = '';\n }\n else {\n this.value = this.service.rawValue(value);\n }\n this.onChange(this.value);\n }\n updateInput(maskedValue = '', selection, isFromOnChanges) {\n if (isFromOnChanges && maskedValue === this.maskedValue) {\n return;\n }\n this.maskedValue = maskedValue;\n const value = this.maskOnFocus && !this.focused && this.emptyMask ? '' : maskedValue;\n this.renderer.setProperty(this.input.nativeElement, \"value\", value);\n if (selection !== undefined) {\n this.setSelection(selection, selection);\n }\n }\n extractChanges(changes) {\n return Object.keys(changes).filter(key => key !== 'rules').reduce((obj, key) => {\n obj[key] = changes[key].currentValue;\n return obj;\n }, {});\n }\n updateService(extra) {\n const config = Object.assign({\n includeLiterals: this.includeLiterals,\n mask: this.mask,\n prompt: this.prompt,\n promptPlaceholder: this.promptPlaceholder,\n rules: this.rules\n }, extra);\n this.service.update(config);\n }\n setSelection(start = this.selection[0], end = this.selection[1]) {\n if (this.focused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n get emptyMask() {\n return this.service.maskRaw() === this.maskedValue;\n }\n setFocusSelection() {\n const selectionStart = this.input.nativeElement.selectionStart;\n const index = this.maskedValue ? this.maskedValue.indexOf(this.prompt) : 0;\n if (index >= 0 && index < selectionStart) {\n this.selection = [index, index];\n this.setSelection();\n }\n }\n get focused() {\n return this.isFocused;\n }\n set focused(value) {\n if (this.isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value) {\n this.renderer.addClass(element, FOCUSED$2);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$2);\n }\n this.isFocused = value;\n }\n }\n normalizeValue(value = this.value) {\n const present = isPresent(value);\n if (present && typeof value !== 'string') {\n if (isDevMode()) {\n throw new Error('The MaskedTextBox component supports only string values.');\n }\n return String(value);\n }\n return present ? value : '';\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nMaskedTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxComponent, deps: [{ token: MaskingService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMaskedTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MaskedTextBoxComponent, selector: \"kendo-maskedtextbox\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", mask: \"mask\", value: \"value\", rules: \"rules\", prompt: \"prompt\", promptPlaceholder: \"promptPlaceholder\", includeLiterals: \"includeLiterals\", maskOnFocus: \"maskOnFocus\", maskValidation: \"maskValidation\", tabindex: \"tabindex\", tabIndex: \"tabIndex\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { listeners: { \"paste\": \"pasteHandler($event)\", \"input\": \"inputHandler($event)\" }, properties: { \"attr.dir\": \"this.direction\", \"class.k-input\": \"this.hostClasses\", \"class.k-maskedtextbox\": \"this.hostClasses\", \"class.k-disabled\": \"this.hostDisabledClass\" } }, providers: [\n MaskingService,\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent)\n }\n ], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], exportAs: [\"kendoMaskedTextBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMaskedTextBox',\n providers: [\n MaskingService,\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskedTextBoxComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MaskedTextBoxComponent)\n }\n ],\n selector: 'kendo-maskedtextbox',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: MaskingService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], mask: [{\n type: Input\n }], value: [{\n type: Input\n }], rules: [{\n type: Input\n }], prompt: [{\n type: Input\n }], promptPlaceholder: [{\n type: Input\n }], includeLiterals: [{\n type: Input\n }], maskOnFocus: [{\n type: Input\n }], maskValidation: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-maskedtextbox']\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], pasteHandler: [{\n type: HostListener,\n args: ['paste', ['$event']]\n }], inputHandler: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass SlidersCommonModule {\n}\nSlidersCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSlidersCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, declarations: [SliderTicksComponent,\n LabelTemplateDirective], imports: [CommonModule, DraggableModule, EventsModule, ResizeSensorModule], exports: [LabelTemplateDirective,\n SliderTicksComponent,\n DraggableModule,\n EventsModule,\n ResizeSensorModule] });\nSlidersCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, imports: [[CommonModule, DraggableModule, EventsModule, ResizeSensorModule], DraggableModule,\n EventsModule,\n ResizeSensorModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SlidersCommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SliderTicksComponent,\n LabelTemplateDirective\n ],\n exports: [\n LabelTemplateDirective,\n SliderTicksComponent,\n DraggableModule,\n EventsModule,\n ResizeSensorModule\n ],\n imports: [CommonModule, DraggableModule, EventsModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages.\n */\nclass SliderCustomMessagesComponent extends SliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSliderCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSliderCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SliderCustomMessagesComponent, selector: \"kendo-slider-messages\", providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: SliderMessages,\n useExisting: forwardRef(() => SliderCustomMessagesComponent)\n }\n ],\n selector: 'kendo-slider-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Slider component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { SliderModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, SliderModule], // import Slider module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass SliderModule {\n}\nSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, declarations: [SliderComponent,\n SliderCustomMessagesComponent,\n LocalizedSliderMessagesDirective], imports: [CommonModule, SlidersCommonModule], exports: [SliderComponent,\n SliderCustomMessagesComponent,\n LabelTemplateDirective,\n LocalizedSliderMessagesDirective] });\nSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, imports: [[CommonModule, SlidersCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SliderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SliderComponent,\n SliderCustomMessagesComponent,\n LocalizedSliderMessagesDirective\n ],\n exports: [\n SliderComponent,\n SliderCustomMessagesComponent,\n LabelTemplateDirective,\n LocalizedSliderMessagesDirective\n ],\n imports: [CommonModule, SlidersCommonModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages.\n */\nclass RangeSliderCustomMessagesComponent extends RangeSliderMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nRangeSliderCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nRangeSliderCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RangeSliderCustomMessagesComponent, selector: \"kendo-rangeslider-messages\", providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: RangeSliderMessages,\n useExisting: forwardRef(() => RangeSliderCustomMessagesComponent)\n }\n ],\n selector: 'kendo-rangeslider-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the RangeSlider component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { RangeSliderModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, RangeSliderModule], // import RangeSlider module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass RangeSliderModule {\n}\nRangeSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRangeSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, declarations: [RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective], imports: [CommonModule, SlidersCommonModule], exports: [RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective,\n LabelTemplateDirective] });\nRangeSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, imports: [[CommonModule, SlidersCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RangeSliderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective\n ],\n exports: [\n RangeSliderComponent,\n RangeSliderCustomMessagesComponent,\n LocalizedRangeSliderMessagesDirective,\n LabelTemplateDirective\n ],\n imports: [CommonModule, SlidersCommonModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages.\n */\nclass SwitchCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSwitchCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSwitchCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SwitchCustomMessagesComponent, selector: \"kendo-switch-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => SwitchCustomMessagesComponent)\n }\n ],\n selector: 'kendo-switch-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Switch component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Switch module\n * import { SwitchModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, SwitchModule], // import Switch module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass SwitchModule {\n}\nSwitchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSwitchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, declarations: [SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective], imports: [CommonModule, EventsModule, ResizeSensorModule], exports: [SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective] });\nSwitchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, imports: [[CommonModule, EventsModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SwitchModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective\n ],\n exports: [\n SwitchComponent,\n SwitchCustomMessagesComponent,\n LocalizedSwitchMessagesDirective\n ],\n imports: [CommonModule, EventsModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the NumericTextBox component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the NumericTextBox module\n * import { NumericTextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NumericTextBoxModule], // import NumericTextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass NumericTextBoxModule {\n}\nNumericTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNumericTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, declarations: [LocalizedNumericTextBoxMessagesDirective,\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent], imports: [CommonModule, EventsModule], exports: [NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent] });\nNumericTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumericTextBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n LocalizedNumericTextBoxMessagesDirective,\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent\n ],\n exports: [\n NumericTextBoxComponent,\n NumericTextBoxCustomMessagesComponent\n ],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the MaskedTextBox component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the MaskedTextBox module\n * import { MaskedTextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, MaskedTextBoxModule], // import MaskedTextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass MaskedTextBoxModule {\n}\nMaskedTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMaskedTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, declarations: [MaskedTextBoxComponent], imports: [CommonModule, EventsModule], exports: [MaskedTextBoxComponent] });\nMaskedTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MaskedTextBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MaskedTextBoxComponent],\n exports: [MaskedTextBoxComponent],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\n/**\n * @hidden\n *\n * Returns true if the used browser is Safari.\n */\nconst isSafari = (userAgent) => {\n const desktopBrowser = detectDesktopBrowser(userAgent);\n const mobileOS = detectMobileOS(userAgent);\n return (desktopBrowser && desktopBrowser.safari) || (mobileOS && mobileOS.browser === 'mobilesafari');\n};\n/**\n * @hidden\n *\n * Checks if input is Japanese IME\n */\nconst isJapanese = (input) => {\n const japaneseRegex = /[\\u3000-\\u303F]|[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\uFF00-\\uFFEF]|[\\u4E00-\\u9FAF]|[\\u2605-\\u2606]|[\\u2190-\\u2195]|\\u203B/g;\n return japaneseRegex.test(input);\n};\n\n/**\n * Specifies the adornments in the suffix container ([see examples]({% slug adornments_textbox %}#toc-suffixadornments)).\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass TextBoxSuffixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTextBoxSuffixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxSuffixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTextBoxSuffixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxSuffixTemplateDirective, selector: \"[kendoTextBoxSuffixTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxSuffixTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxSuffixTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Specifies the adornments in the prefix container ([see examples]({% slug adornments_textbox %}#toc-prefixadornments)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass TextBoxPrefixTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTextBoxPrefixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxPrefixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTextBoxPrefixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxPrefixTemplateDirective, selector: \"[kendoTextBoxPrefixTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxPrefixTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTextBoxPrefixTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass TextBoxMessages extends ComponentMessages {\n}\nTextBoxMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTextBoxMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxMessages, selector: \"kendo-textbox-messages-base\", inputs: { clear: \"clear\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-textbox-messages-base'\n }]\n }], propDecorators: { clear: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedTextBoxMessagesDirective extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedTextBoxMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedTextBoxMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedTextBoxMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedTextBoxMessagesDirective, selector: \"[kendoTextBoxLocalizedMessages]\", providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedTextBoxMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => LocalizedTextBoxMessagesDirective)\n }\n ],\n selector: '[kendoTextBoxLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst FOCUSED$1 = 'k-focus';\nconst DEFAULT_SIZE$4 = 'medium';\nconst DEFAULT_ROUNDED$3 = 'medium';\nconst DEFAULT_FILL_MODE$2 = 'solid';\nclass TextBoxComponent {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets the `title` attribute of the `input` element of the TextBox.\n */\n this.title = '';\n /**\n * Sets the disabled state of the component.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the `tabindex` of the TextBox.\n *\n * @default 0\n */\n this.tabindex = 0;\n /**\n * Provides a value for the TextBox.\n */\n this.value = null;\n /**\n * Determines whether the whole value will be selected when the TextBox is clicked. Defaults to `false`.\n *\n * @default false\n */\n this.selectOnFocus = false;\n /**\n * Specifies when the Success icon will be shown ([see example]({% slug validation_textbox %})).\n *\n * The possible values are:\n *\n * `boolean`—The Success icon is displayed, if the condition given by the developer is met.\n *\n * `initial`—The Success icon will be displayed when the component state is neither `invalid` nor `touched` or `dirty`.\n *\n * @default false\n */\n this.showSuccessIcon = false;\n /**\n * Specifies when the Error icon will be shown ([see example]({% slug validation_textbox %})).\n *\n * The possible values are:\n *\n * * `initial`—The Error icon will be displayed when the component state is\n * `invalid` and `touched` or `dirty`.\n * * `boolean`—The Error icon is displayed, if the condition given by the developer is met.\n *\n * @default false\n */\n this.showErrorIcon = false;\n /**\n * Specifies whether a Clear button will be rendered.\n *\n * @default false\n */\n this.clearButton = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_textbox %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.inputBlur = new EventEmitter();\n /**\n * Fires each time the user focuses the TextBox component.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log('Component is isFocused');\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the TextBox component gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log('Component is blurred');\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n this.hostClasses = true;\n this._isFocused = false;\n this.focusChangedProgrammatically = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n /**\n * @hidden\n */\n this.handleInputFocus = () => {\n if (!this.disabled) {\n if (this.selectOnFocus && this.value) {\n this.ngZone.run(() => {\n setTimeout(() => { this.selectAll(); });\n });\n }\n if (hasObservers(this.onFocus)) {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n if (hasObservers(this.inputFocus)) {\n if (!this.focusChangedProgrammatically || (this.focusChangedProgrammatically && this.clearButtonClicked)) {\n this.ngZone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n this.ngZone.run(() => {\n this.isFocused = true;\n });\n }\n };\n /**\n * @hidden\n */\n this.handleInputBlur = () => {\n this.changeDetector.markForCheck();\n if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.inputBlur.emit();\n });\n }\n };\n /**\n * @hidden\n */\n this.handleInput = (ev) => {\n const target = ev.target;\n const isBrowserSafari = isSafari(navigator.userAgent);\n const incomingValue = isBrowserSafari && isJapanese(target.value) ? ev.data : target.value;\n const [caretStart, caretEnd] = [target.selectionStart, target.selectionEnd];\n this.updateValue(incomingValue);\n if (isBrowserSafari) {\n target.setSelectionRange(caretStart, caretEnd);\n }\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the padding of the TextBox internal input element\n * ([see example]({% slug appearance_textbox %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$4;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the TextBox\n * ([see example]({% slug appearance_textbox %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$3;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the TextBox\n * ([see example]({% slug appearance_textbox %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get disabledClass() {\n return this.disabled;\n }\n ngOnInit() {\n this.control = this.injector.get(NgControl, null);\n this.checkClearButton();\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n let cursorInsideWrapper = false;\n let tabbing = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n this.isFocused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);\n if (!closestTextbox) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper && !this.clearButtonClicked) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n });\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngOnChanges(changes) {\n if (changes.disabled || changes.readonly || changes.value) {\n this.checkClearButton();\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * Focuses the TextBox.\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.focusChangedProgrammatically = true;\n this.isFocused = true;\n this.input.nativeElement.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the TextBox.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const isFocusedElement = this.hostElement.nativeElement.querySelector(':focus');\n if (isFocusedElement) {\n isFocusedElement.blur();\n }\n this.isFocused = false;\n this.focusChangedProgrammatically = false;\n }\n /**\n * @hidden\n */\n clearTitle() {\n return this.localizationService.get('clear');\n }\n /**\n * @hidden\n */\n checkClearButton() {\n this.showClearButton =\n !this.disabled &&\n !this.readonly &&\n this.clearButton &&\n !!this.value;\n }\n /**\n * @hidden\n */\n clearValue(ev) {\n if (ev) {\n ev.preventDefault();\n }\n this.clearButtonClicked = true;\n this.input.nativeElement.value = '';\n this.input.nativeElement.focus();\n this.updateValue('');\n this.checkClearButton();\n this.clearButtonClicked = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.checkClearButton();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n showErrorsInitial() {\n if (!this.control) {\n return false;\n }\n const { invalid, dirty, touched } = this.control;\n return invalid && (dirty || touched);\n }\n /**\n * @hidden\n */\n showSuccessInitial() {\n if (!this.control) {\n return false;\n }\n const { valid, dirty, touched } = this.control;\n return valid && (dirty || touched);\n }\n /**\n * @hidden\n */\n get successIconClasses() {\n return this.successIcon\n ? `${this.successIcon}`\n : `k-input-validation-icon k-icon k-i-check`;\n }\n /**\n * @hidden\n */\n get errorIconClasses() {\n return this.errorIcon\n ? `${this.errorIcon}`\n : `k-input-validation-icon k-icon k-i-warning`;\n }\n /**\n * @hidden\n */\n get clearButtonClasses() {\n return this.clearButtonIcon\n ? this.clearButtonIcon\n : `k-icon k-i-x`;\n }\n /**\n * @hidden\n */\n get hasErrors() {\n return this.showErrorIcon === 'initial'\n ? this.showErrorsInitial()\n : this.showErrorIcon;\n }\n /**\n * @hidden\n */\n get isSuccessful() {\n return this.showSuccessIcon === 'initial'\n ? this.showSuccessInitial()\n : this.showSuccessIcon;\n }\n setSelection(start, end) {\n if (this.isFocused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n selectAll() {\n if (this.value) {\n this.setSelection(0, this.value.length);\n }\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.checkClearButton();\n this.changeDetector.markForCheck();\n });\n }\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n if (this._isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value && !this.disabled) {\n this.renderer.addClass(element, FOCUSED$1);\n }\n else {\n this.renderer.removeClass(element, FOCUSED$1);\n }\n this._isFocused = value;\n }\n }\n handleBlur() {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n this.isFocused = false;\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxComponent, selector: \"kendo-textbox\", inputs: { focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", value: \"value\", selectOnFocus: \"selectOnFocus\", showSuccessIcon: \"showSuccessIcon\", showErrorIcon: \"showErrorIcon\", clearButton: \"clearButton\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", clearButtonIcon: \"clearButtonIcon\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", tabIndex: \"tabIndex\", placeholder: \"placeholder\", maxlength: \"maxlength\" }, outputs: { valueChange: \"valueChange\", inputFocus: \"inputFocus\", inputBlur: \"inputBlur\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-disabled\": \"this.disabledClass\", \"class.k-textbox\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textbox' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextBoxComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent) }\n ], queries: [{ propertyName: \"suffixTemplate\", first: true, predicate: TextBoxSuffixTemplateDirective, descendants: true }, { propertyName: \"prefixTemplate\", first: true, predicate: TextBoxPrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], exportAs: [\"kendoTextBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n
    \n \n `, isInline: true, directives: [{ type: LocalizedTextBoxMessagesDirective, selector: \"[kendoTextBoxLocalizedMessages]\" }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTextBox',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textbox' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextBoxComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextBoxComponent) }\n ],\n selector: 'kendo-textbox',\n template: `\n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], value: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], showSuccessIcon: [{\n type: Input\n }], showErrorIcon: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], clearButtonIcon: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], inputFocus: [{\n type: Output\n }], inputBlur: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], suffixTemplate: [{\n type: ContentChild,\n args: [TextBoxSuffixTemplateDirective, { static: false }]\n }], prefixTemplate: [{\n type: ContentChild,\n args: [TextBoxPrefixTemplateDirective, { static: false }]\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-textbox']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass TextBoxCustomMessagesComponent extends TextBoxMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTextBoxCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTextBoxCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextBoxCustomMessagesComponent, selector: \"kendo-textbox-messages\", providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TextBoxMessages,\n useExisting: forwardRef(() => TextBoxCustomMessagesComponent)\n }\n ],\n selector: 'kendo-textbox-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Specifies a separator in the content of components like the TextArea and the TextBox. ([see examples]({% slug adornments_textbox %}#toc-separator)).\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass InputSeparatorComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nInputSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nInputSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: InputSeparatorComponent, selector: \"kendo-input-separator, kendo-textbox-separator\", host: { properties: { \"class.k-input-separator\": \"this.hostClass\" } }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputSeparatorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-input-separator, kendo-textbox-separator',\n template: ``\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-input-separator']\n }] } });\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n InputSeparatorComponent,\n TextAreaDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [InputSeparatorComponent,\n TextAreaDirective], exports: [InputSeparatorComponent,\n TextAreaDirective] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextBox directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the TextBox module\n * import { TextBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TextBoxModule], // import TextBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass TextBoxModule {\n}\nTextBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, declarations: [TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective], imports: [CommonModule, EventsModule, SharedModule], exports: [TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n EventsModule,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective, InputSeparatorComponent, TextAreaDirective] });\nTextBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective\n ],\n exports: [\n TextBoxDirective,\n TextBoxComponent,\n TextBoxSuffixTemplateDirective,\n TextBoxPrefixTemplateDirective,\n EventsModule,\n TextBoxCustomMessagesComponent,\n LocalizedTextBoxMessagesDirective,\n SHARED_DIRECTIVES\n ],\n imports: [CommonModule, EventsModule, SharedModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass TextFieldsBase {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * Sets the `title` attribute of the internal textarea input element of the component.\n */\n this.title = '';\n /**\n * Sets the disabled state of the TextArea component.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the TextArea component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Provides a value for the TextArea component.\n */\n this.value = null;\n /**\n * Determines whether the whole value will be selected when the TextArea is clicked. Defaults to `false`.\n *\n * @default false\n */\n this.selectOnFocus = false;\n /**\n * Fires each time the user focuses the internal textarea element of the component.\n * This event is useful when you need to distinguish between focusing the textarea element and focusing one of its adornments.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the internal textarea element gets blurred.\n * This event is useful when adornments are used, in order to distinguish between blurring the textarea element and blurring the whole TextArea component.\n */\n this.inputBlur = new EventEmitter();\n this.subscriptions = new Subscription();\n this._isFocused = false;\n this.focusChangedProgrammatically = false;\n /**\n * @hidden\n */\n this.handleInputBlur = () => {\n this.changeDetector.markForCheck();\n if (hasObservers(this.inputBlur) || requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.ngTouched();\n this.inputBlur.emit();\n });\n }\n };\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n }\n get disabledClass() {\n return this.disabled;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.changeDetector.markForCheck();\n this.disabled = isDisabled;\n }\n}\nTextFieldsBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextFieldsBase, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTextFieldsBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextFieldsBase, selector: \"kendo-textfield-base\", inputs: { title: \"title\", disabled: \"disabled\", readonly: \"readonly\", value: \"value\", selectOnFocus: \"selectOnFocus\", placeholder: \"placeholder\" }, outputs: { inputFocus: \"inputFocus\", inputBlur: \"inputBlur\" }, host: { properties: { \"class.k-disabled\": \"this.disabledClass\", \"attr.dir\": \"this.direction\" } }, viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextFieldsBase, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-textfield-base',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], value: [{\n type: Input\n }], selectOnFocus: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], inputFocus: [{\n type: Output\n }], inputBlur: [{\n type: Output\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nconst resizeClasses = {\n 'vertical': 'k-resize-vertical',\n 'horizontal': 'k-resize-horizontal',\n 'both': 'k-resize-both',\n 'none': 'k-resize-none',\n 'auto': 'k-resize-none'\n};\nconst FOCUSED = 'k-focus';\nconst DEFAULT_SIZE$3 = 'medium';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the [Kendo UI TextArea component for Angular]({% slug overview_textarea %}).\n */\nclass TextAreaComponent extends TextFieldsBase {\n constructor(localizationService, ngZone, changeDetector, renderer, injector, hostElement) {\n super(localizationService, ngZone, changeDetector, renderer, injector, hostElement);\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n this.hostClasses = true;\n /**\n * Specifies the flow direction of the TextArea sections. This property is useful when adornments are used, in order to specify\n * their position in relation to the textarea element.\n *\n * The possible values are:\n * * `vertical`(Default) —TextArea sections are placed from top to bottom.\n * * `horizontal`—TextArea sections are placed from left to right in `ltr`, and from right to left in `rtl` mode.\n */\n this.flow = 'vertical';\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Configures the resize behavior of the TextArea.\n *\n * The possible values are:\n * * `vertical`(Default)—The TextArea component can be resized only vertically.\n * * `horizontal`—The TextArea component can be resized only horizontally.\n * * `both`—The TextArea component can be resized in both (horizontal and vertical) directions.\n * * `auto`—Specifies whether the TextArea component will adjust its height automatically, based on the content.\n * * `none`—The TextArea cannot be resized.\n *\n */\n this.resizable = 'vertical';\n /**\n * Fires each time the user focuses the TextArea component.\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleFocus(): void {\n * console.log('Component is focused');\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the TextArea component gets blurred.\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public handleBlur(): void {\n * console.log('Component is blurred');\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed or the component is blurred\n * ([see example]({% slug overview_textarea %}#toc-events)).\n * When the component value is changed programmatically or via its form control binding, the valueChange event is not emitted.\n */\n this.valueChange = new EventEmitter();\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n /**\n * @hidden\n */\n this.handleInput = (ev) => {\n let incomingValue = ev.target.value;\n this.updateValue(incomingValue);\n this.resize();\n };\n /**\n * @hidden\n */\n this.handleInputFocus = () => {\n if (!this.disabled) {\n if (this.selectOnFocus && this.value) {\n this.ngZone.run(() => {\n setTimeout(() => { this.selectAll(); });\n });\n }\n if (hasObservers(this.onFocus)) {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n if (hasObservers(this.inputFocus)) {\n if (!this.focusChangedProgrammatically) {\n this.ngZone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n this.ngZone.run(() => {\n this.isFocused = true;\n });\n }\n };\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get flowCol() {\n return this.flow === 'vertical';\n }\n get flowRow() {\n return this.flow === 'horizontal';\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * The size property specifies the padding of the internal textarea element\n * ([see example]({% slug appearance_textarea %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$3;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the TextArea\n * ([see example]({% slug appearance_textarea %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the TextArea\n * ([see example]({% slug appearance_textarea %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n let cursorInsideWrapper = false;\n let tabbing = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n this.isFocused = true;\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (args) => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n const closestTextbox = closest(args.relatedTarget, (element) => element === this.hostElement.nativeElement);\n if (!closestTextbox) {\n this.handleBlur();\n }\n tabbing = false;\n }\n else {\n if (!cursorInsideWrapper) {\n this.handleBlur();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (args) => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n }\n else {\n tabbing = false;\n }\n }));\n this.handleFlow();\n });\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngOnInit() {\n this.control = this.injector.get(NgControl, null);\n if (isDocumentAvailable() && this.resizable === 'auto') {\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe((debounceTime(50)))\n .subscribe(() => this.resize());\n }\n if (this.hostElement) {\n this.renderer.removeAttribute(this.hostElement.nativeElement, \"tabindex\");\n }\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n ngOnChanges(changes) {\n const hostElement = this.hostElement.nativeElement;\n const element = this.input.nativeElement;\n if (changes.flow) {\n this.handleFlow();\n }\n if (changes.resizable) {\n if (this.resizable === 'auto') {\n this.renderer.removeClass(element, '\\!k-overflow-y-auto');\n this.initialHeight = element.offsetHeight;\n }\n else {\n this.renderer.addClass(element, '\\!k-overflow-y-auto');\n element.style.height = `${this.initialHeight}px`;\n }\n }\n if (changes.cols) {\n if (isPresent(changes.cols.currentValue)) {\n this.renderer.setStyle(hostElement, 'width', 'auto');\n }\n else {\n this.renderer.removeStyle(hostElement, 'width');\n }\n }\n }\n ngAfterViewChecked() {\n this.resize();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n updateValue(value) {\n if (!areSame(this.value, value)) {\n this.ngZone.run(() => {\n this.value = value;\n this.ngChange(value);\n this.valueChange.emit(value);\n this.changeDetector.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get resizableClass() {\n return resizeClasses[this.resizable];\n }\n /**\n * Focuses the TextArea component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent { }\n * ```\n */\n focus() {\n if (!this.input) {\n return;\n }\n this.focusChangedProgrammatically = true;\n this.isFocused = true;\n this.input.nativeElement.focus();\n this.focusChangedProgrammatically = false;\n }\n /**\n * Blurs the TextArea component.\n */\n blur() {\n this.focusChangedProgrammatically = true;\n const isFocusedElement = this.hostElement.nativeElement.querySelector(':focus');\n if (isFocusedElement) {\n isFocusedElement.blur();\n }\n this.isFocused = false;\n this.focusChangedProgrammatically = false;\n }\n resize() {\n if (this.resizable !== 'auto') {\n return;\n }\n const element = this.input.nativeElement;\n this.renderer.setStyle(element, 'height', `${this.initialHeight}px`);\n const scrollHeight = element.scrollHeight;\n if (scrollHeight > this.initialHeight) {\n element.style.height = `${scrollHeight}px`;\n }\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n if (this._isFocused !== value && this.hostElement) {\n const element = this.hostElement.nativeElement;\n if (value && !this.disabled) {\n this.renderer.addClass(element, FOCUSED);\n }\n else {\n this.renderer.removeClass(element, FOCUSED);\n }\n this._isFocused = value;\n }\n }\n handleBlur() {\n this.ngZone.run(() => {\n if (!this.focusChangedProgrammatically) {\n this.onBlur.emit();\n }\n this.isFocused = false;\n });\n }\n setSelection(start, end) {\n if (this.isFocused) {\n invokeElementMethod(this.input, 'setSelectionRange', start, end);\n }\n }\n selectAll() {\n if (this.value) {\n this.setSelection(0, this.value.length);\n }\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('input', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleFlow() {\n const isVertical = this.flow === 'vertical';\n const hostElement = this.hostElement.nativeElement;\n const element = this.input.nativeElement;\n const suffix = hostElement.children[1];\n this.renderer[isVertical ? 'addClass' : 'removeClass'](element, '\\!k-flex-none');\n if (suffix) {\n this.renderer[isVertical ? 'removeClass' : 'addClass'](suffix, '\\!k-align-items-start');\n }\n }\n}\nTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextAreaComponent, selector: \"kendo-textarea\", inputs: { focusableId: \"focusableId\", flow: \"flow\", rows: \"rows\", cols: \"cols\", maxlength: \"maxlength\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", resizable: \"resizable\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\" }, host: { properties: { \"class.k-textarea\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.!k-flex-col\": \"this.flowCol\", \"class.!k-flex-row\": \"this.flowRow\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textarea' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent) }\n ], exportAs: [\"kendoTextArea\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n `, isInline: true, directives: [{ type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTextArea',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.textarea' },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent),\n multi: true\n },\n { provide: KendoInput, useExisting: forwardRef(() => TextAreaComponent) }\n ],\n selector: 'kendo-textarea',\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { focusableId: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-textarea']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], flowCol: [{\n type: HostBinding,\n args: ['class.\\!k-flex-col']\n }], flowRow: [{\n type: HostBinding,\n args: ['class.\\!k-flex-row']\n }], flow: [{\n type: Input\n }], rows: [{\n type: Input\n }], cols: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], resizable: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }] } });\n\n/**\n * Specifies the adornments in the suffix container ([see example]({% slug textarea_adornments %})).\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass TextAreaSuffixComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nTextAreaSuffixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaSuffixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTextAreaSuffixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TextAreaSuffixComponent, selector: \"kendo-textarea-suffix\", host: { properties: { \"class.k-input-suffix\": \"this.hostClass\" } }, exportAs: [\"kendoTextAreaSuffix\"], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaSuffixComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTextAreaSuffix',\n selector: 'kendo-textarea-suffix',\n template: ``\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-input-suffix']\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextArea component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the TextArea module\n * import { TextAreaModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TextAreaModule], // import TextArea module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass TextAreaModule {\n}\nTextAreaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextAreaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, declarations: [TextAreaComponent,\n TextAreaSuffixComponent], imports: [CommonModule, EventsModule, SharedModule], exports: [TextAreaComponent,\n EventsModule,\n TextAreaSuffixComponent, InputSeparatorComponent, TextAreaDirective] });\nTextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, imports: [[CommonModule, EventsModule, SharedModule], EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TextAreaModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n TextAreaComponent,\n TextAreaSuffixComponent\n ],\n exports: [\n TextAreaComponent,\n EventsModule,\n TextAreaSuffixComponent,\n SHARED_DIRECTIVES\n ],\n imports: [CommonModule, EventsModule, SharedModule]\n }]\n }] });\n\n// eslint-disable max-line-length\n/**\n * @hidden\n */\nconst PALETTEPRESETS = {\n basic: {\n colors: '000000,7f7f7f,880015,ed1c24,ff7f27,fff200,22b14c,00a2e8,3f48cc,a349a4,ffffff,c3c3c3,b97a57,ffaec9,ffc90e,efe4b0,b5e61d,99d9ea,7092be,c8bfe7',\n columns: 10\n },\n office: {\n colors: 'ffffff, 000000, e6e6e6, 435569, 4371c4, ed7e32, a5a4a5, febf04, 5a9bd5, 71ae48, f2f2f3, 7f7f7f, d1cece, d5dde3, dae1f4, fce5d4, deeded, fff2cc, deeaf6, e1efd9, d7d8d8, 585959, aeabab, adbaca, b4c5e7, f6caac, dbdbdb, ffe498, bcd6ee, c5e0b2, bfbfc0, 3f3f3f, 767070, 8595b1, 8fabdb, f5b183, c9c8c9, fed965, 9bc4e5, a8d08d, a5a5a6, 262625, 393939, 334050, 2e5496, c45a11, 7b7b7a, bf9000, 2f75b5, 548235, 7f7f7f, 0b0c0c, 161616, 222a34, 203764, 843d0b, 525252, 7f6000, 1d4d79, 375623',\n columns: 10\n },\n apex: {\n colors: 'ffffff, 000000, c9c2d1, 69676d, ceb966, 9cb084, 6bb1c9, 6585cf, 7e6bc9, a379bb, f2f2f2, 7f7f7f, f4f2f5, e0e0e2, f5f1e0, ebefe6, e1eff4, e0e6f5, e5e1f4, ece4f1, d8d8d8, 595959, e9e6ec, c2c1c5, ebe3c1, d7dfcd, c3dfe9, c1ceeb, cbc3e9, dac9e3, bfbfbf, 3f3f3f, dedae3, a4a3a8, e1d5a3, c3cfb5, a6d0de, a2b5e2, b1a6de, c7aed6, a5a5a5, 262626, 9688a5, 4e4d51, ae9638, 758c5a, 3d8da9, 365bb0, 533da9, 7d4d99, 7f7f7f, 0c0c0c, 635672, 343336, 746425, 4e5d3c, 295e70, 243c75, 372970, 533366',\n columns: 10\n },\n austin: {\n colors: 'ffffff, 000000, caf278, 3e3d2d, 94c600, 71685a, ff6700, 909465, 956b43, fea022, f2f2f2, 7f7f7f, f4fce4, dddcd0, efffc0, e3e1dc, ffe0cb, e8e9df, ece1d6, feecd2, d8d8d8, 595959, e9f9c9, bbb9a1, dfff82, c8c3ba, ffc299, d2d4c0, dac3ad, fed9a6, bfbfbf, 3f3f3f, dff7ae, ada598, cfff43, ada598, ffa365, bcbfa1, c8a585, fec67a, a5a5a5, 262626, a9ea25, 2e2d21, 6f9400, 544e43, bf4d00, 6c6f4b, 6f5032, d77b00, 7f7f7f, 0c0c0c, 74a50f, 1f1e16, 4a6300, 38342d, 7f3300, 484a32, 4a3521, 8f5200',\n columns: 10\n },\n clarity: {\n colors: 'ffffff, 292934, f3f2dc, d2533c, 93a299, ad8f67, 726056, 4c5a6a, 808da0, 79463d, f2f2f2, e7e7ec, e7e5b9, f6dcd8, e9ecea, eee8e0, e4dedb, d8dde3, e5e8ec, e9d6d3, d8d8d8, c4c4d1, d5d185, edbab1, d3d9d6, ded2c2, c9beb8, b2bcc8, ccd1d9, d3aea7, bfbfbf, 8a8aa3, aca73b, e4978a, bec7c1, cdbba3, af9e94, 8c9bac, b2bac6, bd857c, a5a5a5, 56566e, 56531d, a43925, 6b7c72, 866b48, 554840, 39434f, 5c697b, 5a342d, 7f7f7f, 3b3b4b, 22210b, 6d2619, 47534c, 594730, 39302b, 262d35, 3d4652, 3c231e',\n columns: 10\n },\n slipstream: {\n colors: 'ffffff, 000000, b4dcfa, 212745, 4e67c8, 5eccf3, a7ea52, 5dceaf, ff8021, f14124, f2f2f2, 7f7f7f, 8bc9f7, c7cce4, dbe0f4, def4fc, edfadc, def5ef, ffe5d2, fcd9d3, d8d8d8, 595959, 4facf3, 909aca, b8c2e9, beeafa, dbf6b9, beebdf, ffcca6, f9b3a7, bfbfbf, 3f3f3f, 0d78c9, 5967af, 94a3de, 9ee0f7, caf297, 9de1cf, ffb279, f68d7b, a5a5a5, 262626, 063c64, 181d33, 31479f, 11b2eb, 81d319, 34ac8b, d85c00, c3260c, 7f7f7f, 0c0c0c, 021828, 101322, 202f6a, 0b769c, 568c11, 22725c, 903d00, 821908',\n columns: 10\n },\n metro: {\n colors: 'ffffff, 000000, d6ecff, 4e5b6f, 7fd13b, ea157a, feb80a, 00addc, 738ac8, 1ab39f, f2f2f2, 7f7f7f, a7d6ff, d9dde4, e5f5d7, fad0e4, fef0cd, c5f2ff, e2e7f4, c9f7f1, d8d8d8, 595959, 60b5ff, b3bcca, cbecb0, f6a1c9, fee29c, 8be6ff, c7d0e9, 94efe3, bfbfbf, 3f3f3f, 007dea, 8d9baf, b2e389, f272af, fed46b, 51d9ff, aab8de, 5fe7d5, a5a5a5, 262626, 003e75, 3a4453, 5ea226, af0f5b, c58c00, 0081a5, 425ea9, 138677, 7f7f7f, 0c0c0c, 00192e, 272d37, 3f6c19, 750a3d, 835d00, 00566e, 2c3f71, 0c594f',\n columns: 10\n },\n flow: {\n colors: 'ffffff, 000000, dbf5f9, 04617b, 0f6fc6, 009dd9, 0bd0d9, 10cf9b, 7cca62, a5c249, f2f2f2, 7f7f7f, b2e9f2, b4ecfc, c7e2fa, c4eeff, c9fafc, c9faed, e4f4df, edf2da, d8d8d8, 595959, 76d9e8, 6adafa, 90c6f6, 89deff, 93f5f9, 94f6db, cae9c0, dbe6b6, bfbfbf, 3f3f3f, 21b2c8, 20c8f7, 59a9f2, 4fceff, 5df0f6, 5ff2ca, b0dfa0, c9da91, a5a5a5, 262626, 105964, 02485c, 0b5394, 0075a2, 089ca2, 0b9b74, 54a838, 7e9532, 7f7f7f, 0c0c0c, 062328, 01303d, 073763, 004e6c, 05686c, 07674d, 387025, 546321',\n columns: 10\n },\n hardcover: {\n colors: 'ffffff, 000000, ece9c6, 895d1d, 873624, d6862d, d0be40, 877f6c, 972109, aeb795, f2f2f2, 7f7f7f, e1dca5, f2e0c6, f0d0c9, f6e6d5, f5f2d8, e7e5e1, fbc7bc, eef0e9, d8d8d8, 595959, d0c974, e6c28d, e2a293, eeceaa, ece5b2, cfccc3, f78f7a, dee2d4, bfbfbf, 3f3f3f, a29a36, daa454, d4735e, e6b681, e2d88c, b7b2a5, f35838, ced3bf, a5a5a5, 262626, 514d1b, 664515, 65281a, a2641f, a39428, 655f50, 711806, 879464, 7f7f7f, 0c0c0c, 201e0a, 442e0e, 431b11, 6c4315, 6d621a, 433f35, 4b1004, 5a6243',\n columns: 10\n },\n trek: {\n colors: 'ffffff, 000000, fbeec9, 4e3b30, f0a22e, a5644e, b58b80, c3986d, a19574, c17529, f2f2f2, 7f7f7f, f7e09e, e1d6cf, fcecd5, eddfda, f0e7e5, f3eae1, ece9e3, f5e3d1, d8d8d8, 595959, f3cc5f, c4ad9f, f9d9ab, dcc0b6, e1d0cc, e7d5c4, d9d4c7, ebc7a3, bfbfbf, 3f3f3f, d29f0f, a78470, f6c781, cba092, d2b9b2, dbc1a7, c6bfab, e1ac76, a5a5a5, 262626, 694f07, 3a2c24, c87d0e, 7b4b3a, 926255, a17242, 7b7153, 90571e, 7f7f7f, 0c0c0c, 2a1f03, 271d18, 855309, 523226, 614138, 6b4c2c, 524b37, 603a14',\n columns: 10\n },\n verve: {\n colors: 'ffffff, 000000, d2d2d2, 666666, ff388c, e40059, 9c007f, 68007f, 005bd3, 00349e, f2f2f2, 7f7f7f, bdbdbd, e0e0e0, ffd7e8, ffc6dc, ffb8f1, f1b2ff, c3dcff, b8cfff, d8d8d8, 595959, 9d9d9d, c1c1c1, ffafd1, ff8eba, ff71e4, e365ff, 87baff, 72a0ff, bfbfbf, 3f3f3f, 696969, a3a3a3, ff87ba, ff5597, ff2ad7, d519ff, 4b98ff, 2b71ff, a5a5a5, 262626, 343434, 4c4c4c, e90062, ab0042, 75005f, 4e005f, 00449e, 002676, 7f7f7f, 0c0c0c, 151515, 333333, 9b0041, 72002c, 4e003f, 34003f, 002d69, 00194f',\n columns: 10\n },\n monochrome: {\n colors: '000000, 1a1a1a, 333333, 4d4d4d, 666666, 808080, 999999, b3b3b3, cccccc, e6e6e6, f2f2f2, ffffff',\n columns: 12\n },\n accessible: {\n colors: 'black, grey, darkred, red, darkorange, gold, green, blue, darkblue, purple, white, darkgrey, saddlebrown, pink, orange, yellow, lightgreen, lightskyblue, lightblue, mediumpurple',\n columns: 10\n }\n};\n\n;\n\n/**\n * Arguments for the `cancel` event of the ColorPicker and FlatColorPicker components.\n */\nclass ColorPickerCancelEvent extends PreventableEvent {\n constructor(originalEvent) {\n super();\n this.originalEvent = originalEvent;\n }\n}\n\n/**\n * Arguments for the `close` event of the ColorPicker component.\n */\nclass ColorPickerCloseEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `open` event of the ColorPicker component.\n */\nclass ColorPickerOpenEvent extends PreventableEvent {\n}\n\n/**\n * Fires each time the left side of the ColorPicker wrapper is clicked.\n * The event is triggered regardless of whether a ColorPicker icon is set or not.\n *\n * Provides information about the current active color and gives the option to prevent the opening of the popup.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public handleActiveColorClick(event: ActiveColorClickEvent): void {\n * event.preventOpen();\n *\n * console.log('Open prevented:', event.isOpenPrevented());\n * console.log('Current color:', event.color);\n * }\n * }\n * ```\n */\nclass ActiveColorClickEvent {\n /**\n * @hidden\n * @param color Represents the current value of the ColorPicker.\n */\n constructor(color) {\n this.color = color;\n this.openPrevented = false;\n }\n /**\n * Prevents the opening of the popup.\n */\n preventOpen() {\n this.openPrevented = true;\n }\n /**\n * Returns `true` if the popup opening is prevented by any of its subscribers.\n *\n * @returns - Returns `true` if the open action was prevented. Otherwise, returns `false`.\n */\n isOpenPrevented() {\n return this.openPrevented;\n }\n}\n\n/**\n * @hidden\n *\n * Returns the hex or rgba string representation of the color.\n */\nconst parseColor = (value, format, opacityEnabled = false, safe = true) => {\n const allowedFormats = ['hex', 'rgba', 'name'];\n if (allowedFormats.indexOf(format) === -1) {\n throw new Error(`Unsupported color output format '${format}'. The available options are 'hex', 'rgba' or 'name'.`);\n }\n if (!isPresent(value)) {\n return;\n }\n if (format === 'name') {\n return nameFormat(value, safe);\n }\n const parsedColor = parseColor$1(value.trim(), safe);\n if (!isPresent(parsedColor)) {\n return;\n }\n const parsedColorResult = format === 'hex' ? getHexValue(parsedColor, opacityEnabled) : parsedColor.toCssRgba();\n return parsedColorResult;\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\nconst getHSV = (value, safe = true) => {\n const parsed = parseColor$1(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\nconst getRGBA = (value, safe = true) => {\n const parsed = parseColor$1(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nconst getColorFromHSV = (hsva, format = 'rgba', opacityEnabled = false) => {\n const hue = fitIntoBounds(hsva.h, 0, 359.9);\n const saturation = fitIntoBounds(hsva.s, 0, 1);\n const value = fitIntoBounds(hsva.v, 0, 1);\n const alpha = fitIntoBounds(hsva.a, 0, 1);\n const color = Color.fromHSV(hue, saturation, value, alpha);\n return format === 'hex' ? getHexValue(color, opacityEnabled) : color.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the HEX value.\n */\nconst getHexValue = (color, opacity) => {\n return opacity && color.a < 1 ? color.toCss({ alpha: true }) : color.toCss();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue`, assuming the `value`, `saturation` and `alpha` have value of `1`.\n */\nconst getColorFromHue = (hue) => {\n return getColorFromHSV({ h: hue, s: 1, v: 1, a: 1 });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nconst getColorFromRGBA = (rgba) => {\n const red = fitIntoBounds(rgba.r, 0, 255);\n const green = fitIntoBounds(rgba.g, 0, 255);\n const blue = fitIntoBounds(rgba.b, 0, 255);\n const alpha = fitIntoBounds(rgba.a, 0, 1);\n return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};\n/**\n *\n * @hidden\n */\nfunction nameFormat(value, safe) {\n value = value.toLowerCase().trim();\n if (isPresent(namedColors[value])) {\n return value;\n }\n if (parseColor$1(value, safe)) {\n value = parseColor$1(value, safe).toHex();\n }\n const key = Object.keys(namedColors).find(key => namedColors[key] === value);\n if (!key && !safe) {\n throw new Error(`The provided color ${value} is not supported for 'format=\"name\"' property.To display ${value} color, the component 'format' property should be set to 'hex' or 'rgba' `);\n }\n return key;\n}\n/**\n * @hidden\n *\n * Returns the RGB object representation of the color based on the background color.\n */\nconst getRGBFromRGBA = (foregroundColor, backgroundColor) => {\n const r1 = fitIntoBounds(foregroundColor.r, 0, 255);\n const g1 = fitIntoBounds(foregroundColor.g, 0, 255);\n const b1 = fitIntoBounds(foregroundColor.b, 0, 255);\n const a1 = fitIntoBounds(foregroundColor.a, 0, 1);\n const r2 = fitIntoBounds(backgroundColor.r, 0, 255);\n const g2 = fitIntoBounds(backgroundColor.g, 0, 255);\n const b2 = fitIntoBounds(backgroundColor.b, 0, 255);\n return {\n r: Math.round(((1 - a1) * r2) + (a1 * r1)),\n g: Math.round(((1 - a1) * g2) + (a1 * g1)),\n b: Math.round(((1 - a1) * b2) + (a1 * b1))\n };\n};\n/**\n * @hidden\n *\n * Returns the relative luminance.\n */\nconst getLuminance = (rgb) => {\n let a = [rgb.r, rgb.g, rgb.b].map(function (v) {\n v /= 255;\n return v <= 0.03928\n ? v / 12.92\n : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n};\n/**\n * @hidden\n *\n * Returns the color contrast.\n */\nconst getContrast = (luminance1, luminance2) => {\n const brightest = Math.max(luminance1, luminance2);\n const darkest = Math.min(luminance1, luminance2);\n return (brightest + 0.05)\n / (darkest + 0.05);\n};\n/**\n * @hidden\n *\n * Returns the color contrast from two RGBA colors.\n */\nconst getContrastFromTwoRGBAs = (a, b) => {\n return getContrast(getLuminance(getRGBFromRGBA(a, b)), getLuminance(getRGBFromRGBA(b, { r: 0, g: 0, b: 0, a: 1 })));\n};\n\n/**\n * @hidden\n */\nconst bezierCommand = (controlPointCalc) => (point, i, a) => {\n // start control point\n const [cpsX, cpsY] = controlPointCalc(a[i - 1], a[i - 2], point);\n // end control point\n const [cpeX, cpeY] = controlPointCalc(point, a[i - 1], a[i + 1], true);\n return `C ${cpsX},${cpsY} ${cpeX},${cpeY} ${point[0]},${point[1]}`;\n};\n/**\n * @hidden\n */\nconst controlPoint = (lineCalc) => (current, previous, next, reverse) => {\n // when 'current' is the first or last point of the array\n // 'previous' and 'next' are undefined\n // replace with 'current'\n const p = previous || current;\n const n = next || current;\n const smooth = 0.1;\n // properties of the line between previous and next\n const l = lineCalc(p, n);\n // If is end-control-point, add PI to the angle to go backward\n const angle = l.angle + (reverse ? Math.PI : 0);\n const length = l.length * smooth;\n // The control point position is relative to the current point\n const x = current[0] + Math.cos(angle) * length;\n const y = current[1] + Math.sin(angle) * length;\n return [x, y];\n};\n/**\n * @hidden\n */\nconst line = (pointA, pointB) => {\n const lengthX = pointB[0] - pointA[0];\n const lengthY = pointB[1] - pointA[1];\n return {\n length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)),\n angle: Math.atan2(lengthY, lengthX)\n };\n};\n/**\n * @hidden\n */\nconst d = (points, command) => {\n if (points.length === 0) {\n return '';\n }\n // build the d attributes by looping over the points\n const d = points.reduce((acc, point, i, a) => i === 0 ?\n // if first point\n `M ${point[0]},${point[1]}` :\n // else\n `${acc} ${command(point, i, a)}`, '');\n return d;\n};\n/**\n * @hidden\n *\n * Render the svg element.\n *\n * @param points (array) Represents the points coordinates as an array of tuples.\n * @param command (function) The command that is used (bezierCommand, lineCommand).\n * @param point (array) [x,y] Represents the current point coordinates.\n * @param i (integer) Represents the index of 'point' in the array 'a'.\n * @param a (array) Represents the complete array of points coordinates.\n * @output (string) a svg path command.\n * @output (string) a Svg element\n */\nconst svgPath = (points, command) => {\n if (points.length === 0) {\n return '';\n }\n // build the d attributes by looping over the points\n const d = points.reduce((acc, point, i, a) => i === 0 ?\n // if first point\n `M ${point[0]},${point[1]}` :\n // else\n `${acc} ${command(point, i, a)}`, '');\n return d;\n};\n\n/**\n * @hidden\n */\nclass ColorPickerLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl) {\n super(prefix, messageService, _rtl);\n }\n}\nColorPickerLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nColorPickerLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; } });\n\n/**\n * @hidden\n */\nconst DEFAULT_OUTPUT_FORMAT = 'rgba';\n/**\n * @hidden\n */\nconst DEFAULT_GRADIENT_BACKGROUND_COLOR = 'rgba(255, 0, 0, 1)';\n/**\n * @hidden\n */\nconst DRAGHANDLE_MOVE_SPEED = 5;\n/**\n * @hidden\n */\nconst AAA_RATIO = 7.0;\n/**\n * @hidden\n */\nconst AA_RATIO = 4.5;\n/**\n * @hidden\n */\nconst DEFAULT_PRESET$1 = 'office';\n/**\n * @hidden\n */\nconst DEFAULT_ACCESSIBLE_PRESET$1 = 'accessible';\n/**\n * @hidden\n */\nconst STEP_COUNT = 16;\n\n/**\n * @hidden\n */\nclass FlatColorPickerLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, colorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.colorPickerLocalization = colorPickerLocalization;\n }\n get(shortKey) {\n if (this.colorPickerLocalization) {\n return this.colorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nFlatColorPickerLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: ColorPickerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFlatColorPickerLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: ColorPickerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ColorPickerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass FlatColorPickerService {\n getPaletteSettings(settings, format) {\n const defaultPreset = (format !== 'name') ? DEFAULT_PRESET$1 : DEFAULT_ACCESSIBLE_PRESET$1;\n const settingsPalette = settings.palette;\n const presetColumns = typeof settingsPalette === 'string' && PALETTEPRESETS[settingsPalette] ?\n PALETTEPRESETS[settingsPalette].columns :\n undefined;\n return {\n palette: settingsPalette || defaultPreset,\n tileSize: settings.tileSize || 24,\n columns: settings.columns || presetColumns || 10\n };\n }\n paletteTileLayout(tileSize) {\n if (typeof tileSize === 'number') {\n return { width: tileSize, height: tileSize };\n }\n return {\n width: tileSize.width ? tileSize.width : tileSize.height,\n height: tileSize.height ? tileSize.height : tileSize.width\n };\n }\n}\nFlatColorPickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFlatColorPickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass FlatColorPickerHeaderComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClasses = true;\n this.viewChange = new EventEmitter();\n this.valuePaneClick = new EventEmitter();\n this.clearButtonClick = new EventEmitter();\n }\n onViewButtonClick(view) {\n this.activeView = view;\n this.viewChange.emit(view);\n }\n get viewButtons() {\n return this.views && this.views.indexOf('gradient') >= 0 && this.views.indexOf('palette') >= 0;\n }\n getViewButtonIcon(view) {\n return view === 'gradient' ? 'k-i-color-canvas' : 'k-i-palette';\n }\n getText(text) {\n return this.localizationService.get(text);\n }\n}\nFlatColorPickerHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerHeaderComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatColorPickerHeaderComponent, selector: \"[kendoFlatColorPickerHeader]\", inputs: { clearButton: \"clearButton\", activeView: \"activeView\", views: \"views\", preview: \"preview\", value: \"value\", selection: \"selection\" }, outputs: { viewChange: \"viewChange\", valuePaneClick: \"valuePaneClick\", clearButtonClick: \"clearButtonClick\" }, host: { properties: { \"class.k-coloreditor-header\": \"this.hostClasses\", \"class.k-hstack\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"clearButtonElement\", first: true, predicate: [\"clearButton\"], descendants: true, read: ElementRef }, { propertyName: \"viewButtonsCollection\", predicate: [\"viewButtons\"], descendants: true, read: ElementRef }], ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n `, isInline: true, directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerHeaderComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoFlatColorPickerHeader]',\n template: `\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-coloreditor-header']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], clearButton: [{\n type: Input\n }], activeView: [{\n type: Input\n }], views: [{\n type: Input\n }], preview: [{\n type: Input\n }], value: [{\n type: Input\n }], selection: [{\n type: Input\n }], viewChange: [{\n type: Output\n }], valuePaneClick: [{\n type: Output\n }], clearButtonClick: [{\n type: Output\n }], viewButtonsCollection: [{\n type: ViewChildren,\n args: ['viewButtons', { read: ElementRef }]\n }], clearButtonElement: [{\n type: ViewChild,\n args: ['clearButton', { read: ElementRef, static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ColorGradientLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, flatColorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.flatColorPickerLocalization = flatColorPickerLocalization;\n }\n get(shortKey) {\n if (this.flatColorPickerLocalization) {\n return this.flatColorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nColorGradientLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: FlatColorPickerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nColorGradientLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: FlatColorPickerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FlatColorPickerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ColorContrastSvgComponent {\n constructor() {\n this.hostClass = true;\n }\n ngAfterViewInit() {\n this.metrics = this.wrapper.getBoundingClientRect();\n this.oldA = this.hsva.value.a;\n this.oldH = this.hsva.value.h;\n this.hsva.subscribe((value) => {\n if (value.h !== this.oldH || value.a !== this.oldA) {\n this.oldH = value.h;\n this.oldA = value.a;\n this.setPaths();\n }\n });\n }\n ngOnChanges(changes) {\n if (isPresent(changes.backgroundColor) && this.metrics) {\n this.setPaths();\n }\n }\n setPaths() {\n const bezierCommandCalc = bezierCommand(controlPoint(line));\n this.paths = [svgPath(this.getPaths(AA_RATIO, STEP_COUNT), bezierCommandCalc),\n svgPath(this.getPaths(AA_RATIO, STEP_COUNT, true), bezierCommandCalc),\n svgPath(this.getPaths(AAA_RATIO, STEP_COUNT), bezierCommandCalc),\n svgPath(this.getPaths(AAA_RATIO, STEP_COUNT, true), bezierCommandCalc)];\n }\n findValue(contrast, saturation, low, high, comparer) {\n const mid = (low + high) / 2;\n const hsva = Object.assign({}, this.hsva.value, { s: saturation / this.metrics.width, v: 1 - mid / this.metrics.height });\n const currentContrast = getContrastFromTwoRGBAs(getRGBA(getColorFromHSV(hsva)), getRGBA(this.backgroundColor || ''));\n if (low + 0.5 > high) {\n if (currentContrast < contrast + 1 && currentContrast > contrast - 1) {\n return mid;\n }\n else {\n return null;\n }\n }\n if (comparer(currentContrast, contrast)) {\n return this.findValue(contrast, saturation, low, high - (high - low) / 2, comparer);\n }\n return this.findValue(contrast, saturation, low + (high - low) / 2, high, comparer);\n }\n getPaths(contrast, stepCount, reversed = false) {\n const points = [];\n for (let i = 0; i <= this.metrics.width; i += this.metrics.width / stepCount) {\n const value = this.findValue(contrast, i, 0, this.metrics.height, reversed ? ((a, b) => a < b) : ((a, b) => a > b));\n if (value !== null) {\n points.push([i, value]);\n }\n }\n return points;\n }\n}\nColorContrastSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorContrastSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nColorContrastSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorContrastSvgComponent, selector: \"[kendoColorContrastSvg]\", inputs: { wrapper: \"wrapper\", hsva: \"hsva\", backgroundColor: \"backgroundColor\" }, host: { properties: { \"class.k-color-contrast-svg\": \"this.hostClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorContrastSvgComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoColorContrastSvg]',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-color-contrast-svg']\n }], wrapper: [{\n type: Input\n }], hsva: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColorInputComponent {\n constructor(host, renderer, localizationService) {\n this.host = host;\n this.renderer = renderer;\n this.localizationService = localizationService;\n /**\n * The id of the hex input.\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets whether the alpha slider will be shown.\n */\n this.opacity = true;\n /**\n * Sets the disabled state of the ColorInput.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorInput.\n */\n this.readonly = false;\n /**\n * Emits a parsed rgba string color.\n */\n this.valueChange = new EventEmitter();\n this.colorInputClass = true;\n /**\n * The rgba inputs values.\n */\n this.rgba = {};\n this.subscriptions = new Subscription();\n }\n /**\n * Indicates whether any of the inputs are focused.\n */\n get isFocused() {\n if (!(isDocumentAvailable() && isPresent(this.host))) {\n return false;\n }\n const activeElement = document.activeElement;\n return this.host.nativeElement.contains(activeElement);\n }\n /**\n * Indicates whether any of the rgba inputs have value.\n */\n get rgbaInputValid() {\n return Object.keys(this.rgba).every(key => isPresent(this.rgba[key]));\n }\n ngAfterViewInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n if (isPresent(changes.value) && !this.isFocused) {\n this.hex = parseColor(this.value, 'hex', this.opacity);\n this.rgba = getRGBA(this.value);\n this.rgba.a = parseColor(this.value, 'rgba', this.opacity) ? this.rgba.a : 1;\n }\n }\n get formatButtonTitle() {\n return this.localizationService.get('formatButton');\n }\n handleRgbaValueChange() {\n const color = getColorFromRGBA(this.rgba);\n if (!this.rgbaInputValid || color === this.value) {\n return;\n }\n this.value = color;\n this.rgba = getRGBA(this.value);\n this.hex = parseColor(color, 'hex', this.opacity);\n this.valueChange.emit(color);\n }\n handleHexValueChange(hex) {\n this.hex = hex;\n const color = parseColor(hex, 'rgba', this.opacity);\n if (!isPresent(color) || color === this.value) {\n return;\n }\n this.value = color;\n this.rgba = getRGBA(color);\n this.valueChange.emit(color);\n }\n handleRgbaInputBlur() {\n if (!this.rgbaInputValid) {\n this.rgba = getRGBA(this.value);\n }\n }\n handleHexInputBlur() {\n this.hex = parseColor(this.value, 'hex', this.opacity);\n }\n toggleFormatView() {\n this.formatView = this.formatView === 'hex' ? 'rgba' : 'hex';\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n this.subscriptions.add(this.renderer.listen(this.toggleFormatButton.nativeElement, 'click', () => this.toggleFormatView()));\n }\n}\nColorInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorInputComponent, selector: \"kendo-colorinput\", inputs: { focusableId: \"focusableId\", formatView: \"formatView\", value: \"value\", opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"class.k-colorgradient-inputs\": \"this.colorInputClass\", \"class.k-hstack\": \"this.colorInputClass\" } }, viewQueries: [{ propertyName: \"opacityInput\", first: true, predicate: [\"opacityInput\"], descendants: true }, { propertyName: \"hexInput\", first: true, predicate: [\"hexInput\"], descendants: true, read: ElementRef }, { propertyName: \"blueInput\", first: true, predicate: [\"blueInput\"], descendants: true, read: ElementRef }, { propertyName: \"toggleFormatButton\", first: true, predicate: [\"toggleFormatButton\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n
    \n
    \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-colorinput',\n template: `\n
    \n \n
    \n
    \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { focusableId: [{\n type: Input\n }], formatView: [{\n type: Input\n }], value: [{\n type: Input\n }], opacity: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], colorInputClass: [{\n type: HostBinding,\n args: ['class.k-colorgradient-inputs']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], opacityInput: [{\n type: ViewChild,\n args: ['opacityInput', { static: false }]\n }], hexInput: [{\n type: ViewChild,\n args: ['hexInput', { read: ElementRef, static: false }]\n }], blueInput: [{\n type: ViewChild,\n args: ['blueInput', { read: ElementRef, static: false }]\n }], toggleFormatButton: [{\n type: ViewChild,\n args: ['toggleFormatButton', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ContrastValidationComponent {\n constructor(localization) {\n this.localization = localization;\n }\n get passMessage() {\n return this.localization.get('passContrast');\n }\n get failMessage() {\n return this.localization.get('failContrast');\n }\n get contrastText() {\n let ratio = this.type === 'AA' ? AA_RATIO : AAA_RATIO;\n return `${this.type}: ${ratio.toFixed(1)}`;\n }\n}\nContrastValidationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastValidationComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nContrastValidationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContrastValidationComponent, selector: \"[kendoContrastValidation]\", inputs: { type: \"type\", pass: \"pass\", value: \"value\" }, ngImport: i0, template: `\n {{contrastText}}\n \n \n {{passMessage}}\n \n \n \n {{failMessage}}\n \n \n \n `, isInline: true, directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastValidationComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoContrastValidation]',\n template: `\n {{contrastText}}\n \n \n {{passMessage}}\n \n \n \n {{failMessage}}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { type: [{\n type: Input\n }], pass: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ContrastComponent {\n constructor(localization) {\n this.localization = localization;\n }\n get formatedRatio() {\n return this.contrastRatio.toFixed(2);\n }\n get contrastRatioText() {\n return `${this.localization.get('contrastRatio')}: ${this.value ? this.formatedRatio : 'n/a'}`;\n }\n get satisfiesAACondition() {\n return this.contrastRatio >= AA_RATIO;\n }\n get satisfiesAAACondition() {\n return this.contrastRatio >= AAA_RATIO;\n }\n get contrastRatio() {\n let contrast = getContrastFromTwoRGBAs(getRGBA(this.value), getRGBA(this.ratio));\n return contrast;\n }\n}\nContrastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nContrastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ContrastComponent, selector: \"[kendoContrastTool]\", inputs: { value: \"value\", ratio: \"ratio\" }, ngImport: i0, template: `\n
    \n {{contrastRatioText}}\n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: ContrastValidationComponent, selector: \"[kendoContrastValidation]\", inputs: [\"type\", \"pass\", \"value\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ContrastComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoContrastTool]',\n template: `\n
    \n {{contrastRatioText}}\n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { value: [{\n type: Input\n }], ratio: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ColorPickerMessages extends ComponentMessages {\n}\nColorPickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nColorPickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPickerMessages, selector: \"kendo-colorpicker-messages-base\", inputs: { colorPaletteNoColor: \"colorPaletteNoColor\", colorGradientNoColor: \"colorGradientNoColor\", flatColorPickerNoColor: \"flatColorPickerNoColor\", colorPickerNoColor: \"colorPickerNoColor\", colorGradientHandle: \"colorGradientHandle\", clearButton: \"clearButton\", hueSliderHandle: \"hueSliderHandle\", opacitySliderHandle: \"opacitySliderHandle\", hexInputPlaceholder: \"hexInputPlaceholder\", redInputPlaceholder: \"redInputPlaceholder\", greenInputPlaceholder: \"greenInputPlaceholder\", blueInputPlaceholder: \"blueInputPlaceholder\", alphaInputPlaceholder: \"alphaInputPlaceholder\", passContrast: \"passContrast\", failContrast: \"failContrast\", contrastRatio: \"contrastRatio\", previewColor: \"previewColor\", revertSelection: \"revertSelection\", gradientView: \"gradientView\", paletteView: \"paletteView\", formatButton: \"formatButton\", applyButton: \"applyButton\", cancelButton: \"cancelButton\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-colorpicker-messages-base'\n }]\n }], propDecorators: { colorPaletteNoColor: [{\n type: Input\n }], colorGradientNoColor: [{\n type: Input\n }], flatColorPickerNoColor: [{\n type: Input\n }], colorPickerNoColor: [{\n type: Input\n }], colorGradientHandle: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], hueSliderHandle: [{\n type: Input\n }], opacitySliderHandle: [{\n type: Input\n }], hexInputPlaceholder: [{\n type: Input\n }], redInputPlaceholder: [{\n type: Input\n }], greenInputPlaceholder: [{\n type: Input\n }], blueInputPlaceholder: [{\n type: Input\n }], alphaInputPlaceholder: [{\n type: Input\n }], passContrast: [{\n type: Input\n }], failContrast: [{\n type: Input\n }], contrastRatio: [{\n type: Input\n }], previewColor: [{\n type: Input\n }], revertSelection: [{\n type: Input\n }], gradientView: [{\n type: Input\n }], paletteView: [{\n type: Input\n }], formatButton: [{\n type: Input\n }], applyButton: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedColorPickerMessagesDirective extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedColorPickerMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedColorPickerMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedColorPickerMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\", providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedColorPickerMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => LocalizedColorPickerMessagesDirective)\n }\n ],\n selector: '[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nlet serial$3 = 0;\n/**\n * The ColorGradient component enables smooth color transitions and provides options for selecting specific colors over the drag handle.\n * The ColorGradient is independently used by `kendo-colorpicker` and can be directly added to the page.\n */\nclass ColorGradientComponent {\n constructor(host, ngZone, renderer, cdr, localizationService) {\n this.host = host;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.localizationService = localizationService;\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.id = `k-colorgradient-${serial$3++}`;\n /**\n * Defines whether the alpha slider will be displayed.\n *\n * @default true\n */\n this.opacity = true;\n /**\n * Sets the disabled state of the ColorGradient.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorGradient.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies whether the ColorGradient should display a 'Clear color' button.\n *\n * @default false\n */\n this.clearButton = false;\n /**\n * Determines the delay time (in milliseconds) before the value is changed on handle drag. A value of 0 indicates no delay.\n *\n * @default 0\n */\n this.delay = 0;\n /**\n * Specifies the output format of the ColorGradientComponent.\n * The input value may be in a different format, but it will be parsed into the output `format`\n * after the component processes it.\n *\n * The supported values are:\n * * (Default) `rgba`\n * * `hex`\n */\n this.format = DEFAULT_OUTPUT_FORMAT;\n /**\n * Fires each time the user selects a new color.\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.backgroundColor = DEFAULT_GRADIENT_BACKGROUND_COLOR;\n /**\n * @hidden\n *\n * Represents the currently selected `hue`, `saturation`, `value`, and `alpha` values.\n * The values are initially set in `ngOnInit` or in `ngOnChanges` and are\n * updated on moving the drag handle or the sliders.\n */\n this.hsva = new BehaviorSubject({});\n this._tabindex = 0;\n this.listeners = [];\n this.hueSliderTouched = false;\n this.alphaSliderTouched = false;\n this.updateValues = new Subject();\n this.notifyNgChanged = () => { };\n this.notifyNgTouched = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get readonlyAttribute() {\n return this.readonly;\n }\n get disabledClass() {\n return this.disabled;\n }\n get gradientId() {\n return this.id;\n }\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Enables the color contrast tool. Accepts the background color that will be compared to the selected value.\n * The tool will calculate the contrast ratio between the two colors.\n */\n set contrastTool(value) {\n this._contrastTool = parseColor(value, this.format, this.opacity);\n }\n get contrastTool() {\n return this._contrastTool;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n if (isPresent(value)) {\n const tabindex = Number(value);\n this._tabindex = !isNaN(tabindex) ? tabindex : 0;\n }\n else {\n // Allows removal of the tabindex attribute\n this._tabindex = value;\n }\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * Indicates whether the ColorGradient or any of its content is focused.\n */\n get isFocused() {\n if (!(isDocumentAvailable() && isPresent(this.host))) {\n return false;\n }\n return this.host.nativeElement === document.activeElement || this.host.nativeElement.contains(document.activeElement);\n }\n /**\n * @hidden\n */\n get alphaSliderValue() {\n // setting the initial value to undefined to force the slider to recalculate the height of the slider track on the next cdr run\n if (!(isPresent(this.hsva.value) && isPresent(this.hsva.value.a))) {\n return;\n }\n return this.hsva.value.a * 100;\n }\n get gradientRect() {\n return this.gradientWrapper.nativeElement.getBoundingClientRect();\n }\n /**\n * @hidden\n */\n get contrastToolVisible() {\n return this.contrastTool && this.contrastTool.length > 0;\n }\n ngAfterViewInit() {\n this.updateUI();\n this.cdr.detectChanges();\n this.addEventListeners();\n this.subscribeChanges();\n }\n ngOnChanges(changes) {\n if (isChanged('value', changes) && !this.isFocused) {\n this.updateUI();\n }\n if (isChanged('delay', changes)) {\n this.unsubscribeChanges();\n this.subscribeChanges();\n }\n }\n ngOnDestroy() {\n this.listeners.forEach(removeListener => removeListener());\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.unsubscribeChanges();\n }\n /**\n * Focuses the component.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n this.gradientDragHandle.nativeElement.focus();\n }\n /**\n * @hidden\n */\n reset() {\n this.handleValueChange(undefined);\n this.updateUI();\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleDragPress(args) {\n if (this.disabled || this.readonly || !isPresent(args.originalEvent)) {\n return;\n }\n this.focus();\n args.originalEvent.preventDefault();\n }\n /**\n * @hidden\n */\n onHandleDrag(args) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.renderer.addClass(this.gradientWrapper.nativeElement, 'k-dragging');\n this.changePosition(args);\n }\n /**\n * @hidden\n */\n onHandleRelease() {\n if (this.disabled || this.readonly) {\n return;\n }\n this.renderer.removeClass(this.gradientWrapper.nativeElement, 'k-dragging');\n this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n }\n /**\n * @hidden\n */\n onKeyboardAction(args) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (args.key && args.key.indexOf('Arrow') !== -1) {\n args.preventDefault();\n const dragHandleElement = this.gradientDragHandle.nativeElement;\n this.renderer.addClass(this.gradientWrapper.nativeElement, 'k-dragging');\n let keyboardMoveX = 0;\n let keyboardMoveY = 0;\n switch (args.key) {\n case 'ArrowRight':\n keyboardMoveX = DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowLeft':\n keyboardMoveX = -DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowUp':\n keyboardMoveY = -DRAGHANDLE_MOVE_SPEED;\n break;\n case 'ArrowDown':\n keyboardMoveY = DRAGHANDLE_MOVE_SPEED;\n break;\n default: break;\n }\n const newY = parseInt(dragHandleElement.style.top, 10) + keyboardMoveY;\n const newX = parseInt(dragHandleElement.style.left, 10) + keyboardMoveX;\n this.renderer.setStyle(dragHandleElement, 'top', `${newY}px`);\n this.renderer.setStyle(dragHandleElement, 'left', `${newX}px`);\n this.ngZone.run(() => this.moveDragHandle(newX, newY));\n }\n }\n /**\n * @hidden\n */\n changePosition(position) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.gradientDragHandle.nativeElement.focus();\n const gradientRect = this.gradientRect;\n const newX = position.clientX - gradientRect.left;\n const newY = position.clientY - gradientRect.top;\n this.ngZone.run(() => this.moveDragHandle(newX, newY));\n }\n /**\n * @hidden\n */\n handleHueSliderChange(hue) {\n const hsva = this.hsva.value;\n hsva.h = hue;\n this.hsva.next(hsva);\n this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n this.backgroundColor = getColorFromHue(hue);\n this.setBackgroundColor(this.backgroundColor);\n this.setAlphaSliderBackground(this.backgroundColor);\n this.hueSliderTouched = true;\n }\n /**\n * @hidden\n */\n handleAlphaSliderChange(alpha) {\n const hsva = this.hsva.value;\n hsva.a = alpha / 100;\n this.hsva.next(hsva);\n this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n this.alphaSliderTouched = true;\n }\n /**\n * @hidden\n */\n handleInputsValueChange(color) {\n const parsed = parseColor(color, this.format, this.opacity);\n if (this.value !== parsed) {\n this.handleValueChange(parsed);\n this.updateUI();\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n if (isPresent(this.gradientWrapper)) {\n this.updateUI();\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get colorGradientHandleTitle() {\n return this.localizationService.get('colorGradientHandle');\n }\n /**\n * @hidden\n */\n get colorGradientHandleAriaLabel() {\n const parsed = parseColor(this.value, this.format, this.opacity);\n return `${this.value ? parsed : this.localizationService.get('colorGradientHandle')}`;\n }\n /**\n * @hidden\n */\n get hueSliderTitle() {\n return this.localizationService.get('hueSliderHandle');\n }\n /**\n * @hidden\n */\n get opacitySliderTitle() {\n return this.localizationService.get('opacitySliderHandle');\n }\n /**\n * @hidden\n */\n get clearButtonTitle() {\n return this.localizationService.get('clearButton');\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n moveDragHandle(positionX, positionY) {\n const gradientRect = this.gradientRect;\n const gradientRectWidth = gradientRect.width;\n const gradientRectHeight = gradientRect.height;\n const top = fitIntoBounds(positionY, 0, gradientRectHeight);\n const left = fitIntoBounds(positionX, 0, gradientRectWidth);\n this.setDragHandleElementPosition(top, left);\n const hsva = this.hsva.value;\n hsva.s = left / gradientRectWidth;\n hsva.v = 1 - top / gradientRectHeight;\n this.hsva.next(hsva);\n this.updateValues.next(getColorFromHSV(this.hsva.value, this.format, this.opacity));\n this.setAlphaSliderBackground(getColorFromHSV(Object.assign(Object.assign({}, this.hsva.value), { a: 1 }), this.format, this.opacity));\n }\n handleValueChange(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n setDragHandleElementPosition(top, left) {\n const dragHandle = this.gradientDragHandle.nativeElement;\n this.renderer.setStyle(dragHandle, 'top', `${top}px`);\n this.renderer.setStyle(dragHandle, 'left', `${left}px`);\n }\n setAlphaSliderBackground(backgroundColor) {\n if (!isPresent(this.alphaSlider)) {\n return;\n }\n const sliderTrack = this.alphaSlider.track.nativeElement;\n this.renderer.setStyle(sliderTrack, 'background', `linear-gradient(to top, transparent, ${backgroundColor})`);\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format, this.opacity);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorGradientNoColor')}`);\n }\n setBackgroundColor(color) {\n this.renderer.setStyle(this.hsvRectangle.nativeElement, 'background', color);\n }\n updateUI() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.hueSliderTouched || this.alphaSliderTouched) {\n this.hueSliderTouched = false;\n this.alphaSliderTouched = false;\n return;\n }\n this.hsva.next(this.value ? getHSV(this.value) : { h: 0, s: 0, v: 1, a: 1 });\n const gradientRect = this.gradientRect;\n const top = (1 - this.hsva.value.v) * gradientRect.height;\n const left = this.hsva.value.s * gradientRect.width;\n this.setDragHandleElementPosition(top, left);\n this.backgroundColor = getColorFromHue(this.hsva.value.h);\n this.setBackgroundColor(this.backgroundColor);\n this.setAlphaSliderBackground(this.backgroundColor);\n this.setHostElementAriaLabel();\n }\n addEventListeners() {\n this.ngZone.runOutsideAngular(() => {\n const focusOutListener = this.renderer.listen(this.host.nativeElement, 'focusout', (event) => {\n if (!containsFocus(this.host.nativeElement, event.relatedTarget) && isUntouched(this.host)) {\n this.ngZone.run(() => this.notifyNgTouched());\n }\n });\n const keydownListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'keydown', (event) => {\n this.onKeyboardAction(event);\n });\n const keyupListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'keyup', () => {\n this.renderer.removeClass(this.gradientWrapper.nativeElement, 'k-dragging');\n if (!this.readonly && !this.disabled) {\n this.ngZone.run(() => this.handleValueChange(getColorFromHSV(this.hsva.value, this.format, this.opacity)));\n }\n });\n const dragHandleFocusInListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'focusin', () => {\n this.renderer.addClass(this.gradientDragHandle.nativeElement, 'k-state-focus');\n });\n const dragHandleFocusOutListener = this.renderer.listen(this.gradientDragHandle.nativeElement, 'focusout', () => {\n this.renderer.removeClass(this.gradientDragHandle.nativeElement, 'k-state-focus');\n });\n this.listeners.push(focusOutListener, keydownListener, keyupListener, dragHandleFocusInListener, dragHandleFocusOutListener);\n });\n }\n subscribeChanges() {\n this.changeRequestsSubscription = this.updateValues.pipe(throttleTime(this.delay)).subscribe(value => {\n this.handleValueChange(value);\n });\n }\n unsubscribeChanges() {\n if (this.changeRequestsSubscription) {\n this.changeRequestsSubscription.unsubscribe();\n }\n }\n}\nColorGradientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorGradientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorGradientComponent, selector: \"kendo-colorgradient\", inputs: { id: \"id\", opacity: \"opacity\", disabled: \"disabled\", readonly: \"readonly\", clearButton: \"clearButton\", delay: \"delay\", value: \"value\", contrastTool: \"contrastTool\", tabindex: \"tabindex\", format: \"format\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"class.k-colorgradient\": \"this.hostClasses\", \"attr.aria-readonly\": \"this.readonlyAttribute\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.id\": \"this.gradientId\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabindex\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ], viewQueries: [{ propertyName: \"gradientDragHandle\", first: true, predicate: [\"gradientDragHandle\"], descendants: true, read: ElementRef }, { propertyName: \"inputs\", first: true, predicate: [\"inputs\"], descendants: true }, { propertyName: \"alphaSlider\", first: true, predicate: [\"alphaSlider\"], descendants: true }, { propertyName: \"gradientWrapper\", first: true, predicate: [\"gradientWrapper\"], descendants: true }, { propertyName: \"hsvRectangle\", first: true, predicate: [\"hsvRectangle\"], descendants: true }], exportAs: [\"kendoColorGradient\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n
    \n `, isInline: true, styles: [\"\\n .k-clear-color {\\n position: absolute;\\n top: 0;\\n left: 50%;\\n transform: translateX(-50%);\\n }\\n .k-colorgradient-slider.k-align-self-end {\\n height: 140px;\\n }\\n\\n .k-color-contrast-svg {\\n position: absolute;\\n overflow: visible;\\n pointer-events: none;\\n left: 0px;\\n top: 0px;\\n }\\n \"], components: [{ type: ColorContrastSvgComponent, selector: \"[kendoColorContrastSvg]\", inputs: [\"wrapper\", \"hsva\", \"backgroundColor\"] }, { type: SliderComponent, selector: \"kendo-slider\", inputs: [\"focusableId\", \"dragHandleTitle\", \"incrementTitle\", \"animate\", \"decrementTitle\", \"showButtons\", \"value\", \"tabIndex\"], exportAs: [\"kendoSlider\"] }, { type: ColorInputComponent, selector: \"kendo-colorinput\", inputs: [\"focusableId\", \"formatView\", \"value\", \"opacity\", \"disabled\", \"readonly\"], outputs: [\"valueChange\"] }, { type: ContrastComponent, selector: \"[kendoContrastTool]\", inputs: [\"value\", \"ratio\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i3.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorGradientComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorGradient',\n selector: 'kendo-colorgradient',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ],\n template: `\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n
    \n
    \n `,\n styles: [`\n .k-clear-color {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n .k-colorgradient-slider.k-align-self-end {\n height: 140px;\n }\n\n .k-color-contrast-svg {\n position: absolute;\n overflow: visible;\n pointer-events: none;\n left: 0px;\n top: 0px;\n }\n `]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorgradient']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], gradientId: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], id: [{\n type: Input\n }], opacity: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], delay: [{\n type: Input\n }], value: [{\n type: Input\n }], contrastTool: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], format: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], gradientDragHandle: [{\n type: ViewChild,\n args: ['gradientDragHandle', { read: ElementRef, static: false }]\n }], inputs: [{\n type: ViewChild,\n args: ['inputs', { static: false }]\n }], alphaSlider: [{\n type: ViewChild,\n args: ['alphaSlider', { static: false }]\n }], gradientWrapper: [{\n type: ViewChild,\n args: ['gradientWrapper', { static: false }]\n }], hsvRectangle: [{\n type: ViewChild,\n args: ['hsvRectangle', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ColorPaletteLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, flatColorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.flatColorPickerLocalization = flatColorPickerLocalization;\n }\n get(shortKey) {\n if (this.flatColorPickerLocalization) {\n return this.flatColorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nColorPaletteLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: FlatColorPickerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nColorPaletteLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: FlatColorPickerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FlatColorPickerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ColorPaletteService {\n constructor() {\n this.colorRows = [];\n }\n setColorMatrix(palette, columns) {\n this.colorRows = [];\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n columns = columns || palette.length;\n for (let start = 0; start < palette.length; start += columns) {\n const row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n }\n getCellCoordsFor(color) {\n if (!isPresent(color)) {\n return;\n }\n for (let row = 0; row < this.colorRows.length; row++) {\n for (let col = 0; col < this.colorRows[row].length; col++) {\n if (this.colorRows[row][col] === color) {\n return { row, col };\n }\n }\n }\n }\n getColorAt(cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n return this.colorRows[cellCoords.row][cellCoords.col];\n }\n getNextCell(current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return { row: 0, col: 0 };\n }\n const row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n const col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return { row, col };\n }\n clampIndex(index, max) {\n const minArrayIndex = 0;\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n}\nColorPaletteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColorPaletteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteService, decorators: [{\n type: Injectable\n }] });\n\nconst DEFAULT_TILE_SIZE = 24;\nconst DEFAULT_COLUMNS_COUNT = 10;\nconst DEFAULT_PRESET = 'office';\nconst DEFAULT_ACCESSIBLE_PRESET = 'accessible';\nlet serial$2 = 0;\n/**\n * The ColorPalette component provides a set of predefined palette presets and enables you to implement a custom color palette.\n * The ColorPalette is independently used by `kendo-colorpicker` and can be directly added to the page.\n */\nclass ColorPaletteComponent {\n constructor(host, service, cdr, renderer, localizationService, ngZone) {\n this.host = host;\n this.service = service;\n this.cdr = cdr;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.id = `k-colorpalette-${serial$2++}`;\n /**\n * Specifies the output format of the ColorPaletteComponent.\n * The input value may be in a different format. However, it will be parsed into the output `format`\n * after the component processes it.\n *\n * The supported values are:\n * * (Default) `hex`\n * * `rgba`\n * * `name`\n */\n this.format = 'hex';\n /**\n * Sets the disabled state of the ColorPalette.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorPalette.\n */\n this.readonly = false;\n /**\n * Specifies the size of a color cell.\n *\n * The possible values are:\n * * (Default) `tileSize = 24`\n * * `{ width: number, height: number }`\n */\n this.tileSize = { width: DEFAULT_TILE_SIZE, height: DEFAULT_TILE_SIZE };\n /**\n * Fires each time the color selection is changed.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user selects a cell with the mouse or presses `Enter`.\n *\n * @hidden\n */\n this.cellSelection = new EventEmitter();\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.uniqueId = guid();\n this._tabindex = 0;\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * @hidden\n */\n get paletteId() {\n return this.id;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the number of columns that will be displayed.\n * Defaults to `10`.\n */\n set columns(value) {\n const minColumnsCount = 1;\n this._columns = value > minColumnsCount ? value : minColumnsCount;\n }\n get columns() {\n return this._columns;\n }\n /**\n * The color palette that will be displayed.\n *\n * The supported values are:\n * * The name of the predefined palette preset (for example, `office`, `basic`, and `apex`).\n * * A string with comma-separated colors.\n * * A string array.\n */\n set palette(value) {\n if (!isPresent(value)) {\n value = DEFAULT_PRESET;\n }\n if (typeof value === 'string' && isPresent(PALETTEPRESETS[value])) {\n this.columns = this.columns || PALETTEPRESETS[value].columns;\n value = PALETTEPRESETS[value].colors;\n }\n const colors = (typeof value === 'string') ? value.split(',') : value;\n this._palette = colors.map(color => parseColor(color, this.format, false, false));\n }\n get palette() {\n return this._palette;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * @hidden\n */\n get tileLayout() {\n if (typeof this.tileSize !== 'number') {\n return this.tileSize;\n }\n return { width: this.tileSize, height: this.tileSize };\n }\n /**\n * @hidden\n */\n get colorRows() {\n return this.service.colorRows;\n }\n /**\n * @hidden\n */\n get hostTabindex() { return this.tabindex; }\n /**\n * @hidden\n */\n get disabledClass() { return this.disabled; }\n /**\n * @hidden\n */\n get readonlyAttribute() { return this.readonly; }\n ngOnInit() {\n if (this.colorRows.length === 0) {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET : DEFAULT_ACCESSIBLE_PRESET;\n this.palette = this.palette || defaultPreset;\n this.setRows();\n }\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\n if (this.value) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.selectCell(this.value);\n });\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n if (changes.palette || changes.columns) {\n this.setRows();\n }\n if (changes.palette || changes.value || changes.columns) {\n this.selectCell(this.value);\n this.setHostElementAriaLabel();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const isRTL = this.direction === 'rtl';\n switch (event.keyCode) {\n case Keys.ArrowDown:\n this.handleCellNavigation(0, 1);\n break;\n case Keys.ArrowUp:\n this.handleCellNavigation(0, -1);\n break;\n case Keys.ArrowRight:\n this.handleCellNavigation(isRTL ? -1 : 1, 0);\n break;\n case Keys.ArrowLeft:\n this.handleCellNavigation(isRTL ? 1 : -1, 0);\n break;\n case Keys.Enter:\n this.handleEnter();\n break;\n default: return;\n }\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleHostBlur() {\n this.notifyNgTouched();\n this.handleCellFocusOnBlur();\n }\n /**\n * @hidden\n */\n handleCellSelection(value, focusedCell) {\n if (this.readonly) {\n return;\n }\n this.selectedCell = focusedCell;\n this.focusedCell = this.selectedCell;\n this.focusInComponent = true;\n const parsedColor = parseColor(value, this.format, false, false);\n this.cellSelection.emit(parsedColor);\n this.handleValueChange(parsedColor);\n if (this.selection !== parsedColor) {\n this.selection = parsedColor;\n this.selectionChange.emit(parsedColor);\n }\n if (focusedCell) {\n this.activeCellId = `k-${this.selectedCell.row}-${this.selectedCell.col}-${this.uniqueId}`;\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.selectCell(value);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Clears the color value of the ColorPalette.\n */\n reset() {\n this.focusedCell = null;\n if (isPresent(this.value)) {\n this.handleValueChange(undefined);\n }\n this.selectedCell = undefined;\n }\n handleValueChange(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n handleCellFocusOnBlur() {\n this.focusInComponent = false;\n this.focusedCell = this.selectedCell;\n }\n selectCell(value) {\n this.selectedCell = this.service.getCellCoordsFor(value);\n this.focusedCell = this.selectedCell;\n }\n setRows() {\n if (!isPresent(this.palette)) {\n return;\n }\n this.columns = this.columns || DEFAULT_COLUMNS_COUNT;\n this.service.setColorMatrix(this.palette, this.columns);\n }\n handleCellNavigation(horizontalStep, verticalStep) {\n if (this.readonly) {\n return;\n }\n this.focusedCell = this.service.getNextCell(this.focusedCell, horizontalStep, verticalStep);\n this.focusInComponent = true;\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorPaletteNoColor')}`);\n }\n handleEnter() {\n if (!isPresent(this.focusedCell)) {\n return;\n }\n const selectedColor = this.service.getColorAt(this.focusedCell);\n this.handleCellSelection(selectedColor, this.focusedCell);\n }\n}\nColorPaletteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteComponent, deps: [{ token: i0.ElementRef }, { token: ColorPaletteService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nColorPaletteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPaletteComponent, selector: \"kendo-colorpalette\", inputs: { id: \"id\", format: \"format\", value: \"value\", columns: \"columns\", palette: \"palette\", tabindex: \"tabindex\", disabled: \"disabled\", readonly: \"readonly\", tileSize: \"tileSize\" }, outputs: { selectionChange: \"selectionChange\", valueChange: \"valueChange\", cellSelection: \"cellSelection\" }, host: { listeners: { \"keydown\": \"handleKeydown($event)\", \"blur\": \"handleHostBlur()\" }, properties: { \"attr.dir\": \"this.direction\", \"attr.id\": \"this.paletteId\", \"attr.tabindex\": \"this.hostTabindex\", \"class.k-colorpalette\": \"this.hostClasses\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.readonlyAttribute\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ], exportAs: [\"kendoColorPalette\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n `, isInline: true, directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPaletteComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorPalette',\n selector: 'kendo-colorpalette',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ],\n template: `\n \n \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ColorPaletteService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], paletteId: [{\n type: HostBinding,\n args: ['attr.id']\n }], id: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], columns: [{\n type: Input\n }], palette: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tileSize: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], cellSelection: [{\n type: Output\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpalette']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], handleHostBlur: [{\n type: HostListener,\n args: ['blur']\n }] } });\n\n/**\n * @hidden\n */\nclass FlatColorPickerActionButtonsComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClasses = true;\n this.actionButtonClick = new EventEmitter();\n }\n getText(text) {\n return this.localizationService.get(text);\n }\n onActionButtonClick(type, ev) {\n let args = {\n target: type,\n originalEvent: ev\n };\n this.actionButtonClick.emit(args);\n }\n}\nFlatColorPickerActionButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerActionButtonsComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerActionButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatColorPickerActionButtonsComponent, selector: \"[kendoFlatColorPickerActionButtons]\", outputs: { actionButtonClick: \"actionButtonClick\" }, host: { properties: { \"class.k-coloreditor-footer\": \"this.hostClasses\", \"class.k-actions\": \"this.hostClasses\", \"class.k-hstack\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"lastButton\", first: true, predicate: [\"last\"], descendants: true, read: ElementRef }], ngImport: i0, template: `\n {{getText('cancelButton')}}\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerActionButtonsComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoFlatColorPickerActionButtons]',\n template: `\n {{getText('cancelButton')}}\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-coloreditor-footer']\n }, {\n type: HostBinding,\n args: ['class.k-actions']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], actionButtonClick: [{\n type: Output\n }], lastButton: [{\n type: ViewChild,\n args: ['last', { read: ElementRef, static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass FocusOnDomReadyDirective {\n constructor(host, ngZone) {\n this.host = host;\n this.ngZone = ngZone;\n }\n ngAfterContentInit() {\n this.focusOnNextTick();\n }\n focusOnNextTick() {\n this.ngZone.runOutsideAngular(() => setTimeout(() => this.host.nativeElement.focus()));\n }\n}\nFocusOnDomReadyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusOnDomReadyDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nFocusOnDomReadyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusOnDomReadyDirective, selector: \"[kendoFocusOnDomReady]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusOnDomReadyDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFocusOnDomReady]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } });\n\n/**\n * Represents the [Kendo UI FlatColorPicker component for Angular]({% slug overview_flatcolorpicker %}).\n *\n * The FlatColorPicker is a powerful tool which allows the user to choose colors through palettes with predefined sets of colors and\n * through a gradient that renders an hsv canvas. It supports previewing the selected color, reverting it to its previous state or clearing it completely.\n */\nclass FlatColorPickerComponent {\n constructor(host, service, localizationService, cdr, renderer, ngZone) {\n this.host = host;\n this.service = service;\n this.localizationService = localizationService;\n this.cdr = cdr;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.hostClasses = true;\n /**\n * Sets the read-only state of the FlatColorPicker.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the FlatColorPicker.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the output format of the FlatColorPicker.\n *\n * If the input value is in a different format, it will be parsed into the specified output `format`.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n */\n this.format = 'rgba';\n /**\n * Specifies whether the FlatColorPicker should display a 'Clear color' button.\n *\n * @default true\n */\n this.clearButton = true;\n /**\n * Displays `Apply` and `Cancel` action buttons and a color preview pane.\n *\n * When enabled, the component value will not change immediately upon\n * color selection, but only after the `Apply` button is clicked.\n *\n * The `Cancel` button reverts the current selection to its\n * initial state i.e. to the current value.\n *\n * @default true\n */\n this.preview = true;\n /**\n * Configures the layout of the `Apply` and `Cancel` action buttons.\n * * `start`\n * * `center`\n * * `end` (default)\n * * `stretch`\n */\n this.actionsLayout = 'end';\n /**\n * Specifies the views that will be rendered. Default value is gradient and palette.\n */\n this.views = ['gradient', 'palette'];\n /**\n * Fires each time the component value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the user cancels the current color selection.\n *\n * The event is emitted on preview pane or on 'Cancel' button click.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires each time the view is about to change.\n * Used to provide a two-way binding for the `activeView` property.\n */\n this.activeViewChange = new EventEmitter();\n /**\n * @hidden\n */\n this.actionButtonClick = new EventEmitter();\n this._tabindex = 0;\n this._gradientSettings = { opacity: true, delay: 0 };\n this._paletteSettings = {};\n this.subscriptions = new Subscription();\n this.notifyNgChanged = () => { };\n this.notifyNgTouched = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get disabledClass() {\n return this.disabled;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * Specifies the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.gradientSettings.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * Configures the gradient view.\n */\n set gradientSettings(value) {\n Object.assign(this._gradientSettings, value);\n }\n get gradientSettings() {\n return this._gradientSettings;\n }\n /**\n * Configures the palette view.\n */\n set paletteSettings(value) {\n Object.assign(this._paletteSettings, value);\n }\n get paletteSettings() {\n return this._paletteSettings;\n }\n ngOnInit() {\n this.selection = this.value;\n this._paletteSettings = this.service.getPaletteSettings(this._paletteSettings, this.format);\n this.setActiveView();\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\n this.initDomEvents();\n this.setSizingVariables();\n }\n ngOnChanges(changes) {\n if (isChanged('value', changes)) {\n this.selection = this.value;\n this.setHostElementAriaLabel();\n }\n if (isChanged('paletteSettings', changes)) {\n this.setSizingVariables();\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n get headerHasContent() {\n return this.preview || this.views.length > 1 || this.clearButton;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Focuses the wrapper of the FlatColorPicker.\n */\n focus() {\n if (this.disabled && this.focused) {\n return;\n }\n this.host.nativeElement.focus();\n this.focused = true;\n }\n /**\n * Blurs the wrapper of the FlatColorPicker.\n */\n blur() {\n if (!this.focused) {\n return;\n }\n this.notifyNgTouched();\n this.host.nativeElement.blur();\n this.focused = false;\n }\n /**\n * Clears the value of the FlatColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this.value = undefined;\n this.notifyNgChanged(undefined);\n this.setHostElementAriaLabel();\n }\n /**\n * @hidden\n */\n onViewChange(view) {\n if (this.activeView === view) {\n return;\n }\n this.activeView = view;\n this.activeViewChange.emit(view);\n if (this.activeView === 'gradient') {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.gradient.gradientDragHandle.nativeElement.focus();\n });\n });\n }\n }\n /**\n * @hidden\n */\n onClearButtonClick() {\n this.resetInnerComponentValue();\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n // eslint-disable-next-line no-unused-expressions\n this.preview ? this.changeCurrentValue(color) : this.setFlatColorPickerValue(color);\n }\n /**\n * @hidden\n */\n onAction(ev) {\n // eslint-disable-next-line no-unused-expressions\n ev.target === 'apply' ? this.setFlatColorPickerValue(this.selection) : this.resetSelection(ev.originalEvent);\n this.actionButtonClick.emit();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n resetSelection(ev) {\n const eventArgs = new ColorPickerCancelEvent(ev);\n this.cancel.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.selection = this.value;\n }\n this.notifyNgTouched();\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format, this.gradientSettings.opacity);\n const ariaLabelValue = `${this.value ? parsed : this.localizationService.get('flatColorPickerNoColor')}`;\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', ariaLabelValue);\n }\n setSizingVariables() {\n const paletteTileSize = this.service.paletteTileLayout(this.paletteSettings.tileSize);\n const value = `--kendo-color-preview-columns: ${this.paletteSettings.columns};\n --kendo-color-preview-width: ${paletteTileSize.width}px;\n --kendo-color-preview-height: ${paletteTileSize.height}px;`;\n this.host.nativeElement.querySelector('.k-coloreditor-views.k-vstack').setAttribute('style', value);\n }\n changeCurrentValue(color) {\n this.selection = color;\n this.notifyNgTouched();\n }\n resetInnerComponentValue() {\n this.selection = null;\n if (this.gradient) {\n this.gradient.reset();\n return;\n }\n this.palette.reset();\n }\n setFlatColorPickerValue(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n setActiveView() {\n if (!isPresent(this.activeView)) {\n this.activeView = this.views[0];\n return;\n }\n if (isDevMode() && this.views.indexOf(this.activeView) === -1) {\n throw new Error(\"Invalid configuration: The current activeView is not present in the views collection\");\n }\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n let hostElement = this.host.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(hostElement, 'focus', () => {\n this.focused = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'blur', () => {\n this.focused = false;\n this.notifyNgTouched();\n }));\n });\n }\n}\nFlatColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: FlatColorPickerService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatColorPickerComponent, selector: \"kendo-flatcolorpicker\", inputs: { readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", tabindex: \"tabindex\", clearButton: \"clearButton\", preview: \"preview\", actionsLayout: \"actionsLayout\", activeView: \"activeView\", views: \"views\", gradientSettings: \"gradientSettings\", paletteSettings: \"paletteSettings\" }, outputs: { valueChange: \"valueChange\", cancel: \"cancel\", activeViewChange: \"activeViewChange\", actionButtonClick: \"actionButtonClick\" }, host: { properties: { \"class.k-flatcolorpicker\": \"this.hostClasses\", \"class.k-coloreditor\": \"this.hostClasses\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabindex\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n FlatColorPickerService,\n FlatColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: FlatColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.flatcolorpicker'\n }\n ], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"gradient\", first: true, predicate: [\"gradient\"], descendants: true }, { propertyName: \"palette\", first: true, predicate: [\"palette\"], descendants: true }, { propertyName: \"footer\", first: true, predicate: [\"footer\"], descendants: true }], exportAs: [\"kendoFlatColorPicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n`, isInline: true, components: [{ type: FlatColorPickerHeaderComponent, selector: \"[kendoFlatColorPickerHeader]\", inputs: [\"clearButton\", \"activeView\", \"views\", \"preview\", \"value\", \"selection\"], outputs: [\"viewChange\", \"valuePaneClick\", \"clearButtonClick\"] }, { type: ColorGradientComponent, selector: \"kendo-colorgradient\", inputs: [\"id\", \"opacity\", \"disabled\", \"readonly\", \"clearButton\", \"delay\", \"value\", \"contrastTool\", \"tabindex\", \"format\"], outputs: [\"valueChange\"], exportAs: [\"kendoColorGradient\"] }, { type: ColorPaletteComponent, selector: \"kendo-colorpalette\", inputs: [\"id\", \"format\", \"value\", \"columns\", \"palette\", \"tabindex\", \"disabled\", \"readonly\", \"tileSize\"], outputs: [\"selectionChange\", \"valueChange\", \"cellSelection\"], exportAs: [\"kendoColorPalette\"] }, { type: FlatColorPickerActionButtonsComponent, selector: \"[kendoFlatColorPickerActionButtons]\", outputs: [\"actionButtonClick\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: FocusOnDomReadyDirective, selector: \"[kendoFocusOnDomReady]\" }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatColorPickerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoFlatColorPicker',\n selector: 'kendo-flatcolorpicker',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n FlatColorPickerService,\n FlatColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: FlatColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.flatcolorpicker'\n }\n ],\n template: `\n \n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n`\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FlatColorPickerService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-flatcolorpicker']\n }, {\n type: HostBinding,\n args: ['class.k-coloreditor']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], preview: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], activeView: [{\n type: Input\n }], views: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], cancel: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], actionButtonClick: [{\n type: Output\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], gradient: [{\n type: ViewChild,\n args: ['gradient', { static: false }]\n }], palette: [{\n type: ViewChild,\n args: ['palette', { static: false }]\n }], footer: [{\n type: ViewChild,\n args: ['footer', { static: false }]\n }] } });\n\nconst DOM_FOCUS_EVENTS = ['focus', 'blur'];\nconst DEFAULT_SIZE$2 = 'medium';\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the [Kendo UI ColorPicker component for Angular]({% slug overview_colorpicker %}).\n *\n * The ColorPicker is a powerful tool for choosing colors from Gradient and Palette views\n * which are rendered in its popup. It supports previewing the selected color, reverting it to its previous state or clearing it completely.\n */\nclass ColorPickerComponent {\n constructor(host, popupService, cdr, localizationService, ngZone, renderer) {\n this.host = host;\n this.popupService = popupService;\n this.cdr = cdr;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.hostClasses = true;\n this.role = 'listbox';\n /**\n * Specifies the views that will be rendered in the popup.\n * By default both the gradient and palette views will be rendered.\n */\n this.views = ['gradient', 'palette'];\n /**\n * Sets the read-only state of the ColorPicker.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the ColorPicker.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the output format of the ColorPicker.\n *\n * If the input value is in a different format, it will be parsed into the specified output `format`.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n */\n this.format = 'rgba';\n /**\n * Specifies whether the ColorPicker should display a 'Clear color' button.\n *\n * @default true\n */\n this.clearButton = true;\n /**\n * Displays `Apply` and `Cancel` action buttons and color preview panes.\n *\n * When enabled, the component value will not change immediately upon\n * color selection, but only after the `Apply` button is clicked.\n *\n * The `Cancel` button reverts the current selection to its\n * previous state i.e. to the current value.\n *\n * @default false\n */\n this.preview = false;\n /**\n * Configures the layout of the `Apply` and `Cancel` action buttons.\n *\n * The possible values are:\n * * `start`\n * * `center`\n * * `end` (default)\n * * `stretch`\n */\n this.actionsLayout = 'end';\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time ColorPicker is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ColorPicker is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user cancels the current color selection.\n *\n * Fires on preview pane or 'Cancel' button click.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires each time the left side of the ColorPicker wrapper is clicked.\n * The event is triggered regardless of whether a ColorPicker icon is set or not.\n *\n * The [ActiveColorClickEvent]({% slug api_inputs_activecolorclickevent %}) event provides the option to prevent the popup opening.\n */\n this.activeColorClick = new EventEmitter();\n /**\n * Fires each time the view is about to change.\n * Used to provide a two-way binding for the `activeView` property.\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Indicates whether the ColorPicker wrapper is focused.\n */\n this.isFocused = false;\n this._tabindex = 0;\n this._popupSettings = { animate: true };\n this._paletteSettings = {};\n this._gradientSettings = { opacity: true, delay: 0 };\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = new Subscription();\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n this.domFocusListener = (event) => event.stopImmediatePropagation();\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get focusedClass() {\n return this.isFocused;\n }\n get disabledClass() {\n return this.disabled;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get ariaExpanded() {\n return this.isOpen;\n }\n get hostTabindex() {\n return this.tabindex;\n }\n /**\n * @hidden\n */\n set view(view) {\n this.views = [view];\n }\n get view() {\n return (this.views && this.views.length > 0) ? this.views[0] : null;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.gradientSettings.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the ColorPicker.\n */\n set popupSettings(value) {\n this._popupSettings = Object.assign(this._popupSettings, value);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Configures the palette that is displayed in the ColorPicker popup.\n */\n set paletteSettings(value) {\n this._paletteSettings = Object.assign(this._paletteSettings, value);\n }\n get paletteSettings() {\n return this._paletteSettings;\n }\n /**\n * Configures the gradient that is displayed in the ColorPicker popup.\n */\n set gradientSettings(value) {\n this._gradientSettings = Object.assign(this._gradientSettings, value);\n }\n get gradientSettings() {\n return this._gradientSettings;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * The size property specifies the padding of the ColorPicker internal elements\n * ([see example]({% slug appearance_colorpicker %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$2;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the ColorPicker\n * ([see example]({% slug appearance_colorpicker %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the ColorPicker\n * ([see example]({% slug appearance_colorpicker %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Indicates whether the ColorPicker popup is open.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n /**\n * @hidden\n */\n get iconStyles() {\n if (this.iconClass) {\n return this.iconClass;\n }\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n }\n ngOnInit() {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET$1 : DEFAULT_ACCESSIBLE_PRESET$1;\n const settingsPalette = this._paletteSettings.palette;\n const presetColumns = typeof settingsPalette === 'string' && PALETTEPRESETS[settingsPalette] ?\n PALETTEPRESETS[settingsPalette].columns :\n undefined;\n this._paletteSettings = {\n palette: settingsPalette || defaultPreset,\n tileSize: this._paletteSettings.tileSize || 24,\n columns: this._paletteSettings.columns || presetColumns || 10\n };\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n this.setHostElementAriaLabel();\n this.handleHostId();\n this.initDomEvents();\n }\n ngOnChanges(changes) {\n if (changes.format && changes.format.currentValue === 'name') {\n this.activeView = 'palette';\n }\n if (this.activeView === 'gradient' && this.gradientSettings.opacity) {\n this.format = 'rgba';\n this.value = parseColor(this.value, this.format, this.gradientSettings.opacity);\n }\n if (isChanged('value', changes)) {\n this.setHostElementAriaLabel();\n }\n }\n ngOnDestroy() {\n this.closePopup();\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n this.handleDomEvents('remove', DOM_FOCUS_EVENTS);\n }\n /**\n * @hidden\n */\n handleCancelEvent(ev) {\n this.cancel.emit(ev);\n }\n /**\n * @hidden\n */\n togglePopup() {\n this.focus();\n this.toggleWithEvents(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleWrapperClick(event) {\n if (this.disabled) {\n return;\n }\n this.focus();\n if (closest$1(event.target, (element) => element === this.activeColor.nativeElement)) {\n const event = new ActiveColorClickEvent(this.value);\n this.activeColorClick.emit(event);\n if (!event.isOpenPrevented() || this.isOpen) {\n this.toggleWithEvents(!this.isOpen);\n }\n return;\n }\n this.toggleWithEvents(!this.isOpen);\n }\n /**\n * Focuses the wrapper of the ColorPicker.\n */\n focus() {\n this.isFocused = true;\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleWrapperFocus() {\n if (this.isFocused) {\n return;\n }\n this.ngZone.run(() => {\n this.focus();\n this.onFocus.emit();\n });\n }\n /**\n * Blurs the ColorPicker.\n */\n blur() {\n this.isFocused = false;\n this.host.nativeElement.blur();\n this.notifyNgTouched();\n }\n /**\n * @hidden\n */\n handleWrapperBlur() {\n if (this.isOpen) {\n return;\n }\n this.ngZone.run(() => {\n this.onBlur.emit();\n this.isFocused = false;\n });\n }\n /**\n * Clears the value of the ColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this._value = undefined;\n this.setHostElementAriaLabel();\n this.notifyNgChanged(undefined);\n }\n /**\n * Toggles the popup of the ColorPicker.\n * Does not trigger the `open` and `close` events of the component.\n *\n * @param open An optional parameter. Specifies whether the popup will be opened or closed.\n */\n toggle(open) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.cdr.markForCheck();\n this.closePopup();\n open = isPresent(open) ? open : !this.isOpen;\n if (open) {\n this.openPopup();\n }\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n const parsedColor = parseColor(color, this.format, this.gradientSettings.opacity);\n const valueChange = parsedColor !== this.value;\n if (valueChange) {\n this.value = parsedColor;\n this.valueChange.emit(parsedColor);\n this.setHostElementAriaLabel();\n this.notifyNgChanged(parsedColor);\n }\n }\n /**\n * @hidden\n */\n handlePopupBlur(event) {\n if (this.popupBlurInvalid(event)) {\n return;\n }\n this.isFocused = false;\n this.onBlur.emit();\n this.notifyNgTouched();\n this.toggleWithEvents(false);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n handleWrapperKeyDown(event) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.Enter) {\n event.preventDefault();\n this.ngZone.run(() => {\n this.toggleWithEvents(true);\n });\n }\n }\n /**\n * @hidden\n */\n handlePopupKeyDown(event) {\n if (event.keyCode === Keys.Escape) {\n this.toggleWithEvents(false);\n this.host.nativeElement.focus();\n }\n if (event.keyCode === Keys.Tab) {\n const currentElement = event.shiftKey ? this.firstFocusableElement.nativeElement : this.lastFocusableElement.nativeElement;\n const nextElement = event.shiftKey ? this.lastFocusableElement.nativeElement : this.firstFocusableElement.nativeElement;\n if (event.target === currentElement) {\n event.preventDefault();\n nextElement.focus();\n }\n }\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n setHostElementAriaLabel() {\n const ariaLabelValue = `${this.value ? this.value : this.localizationService.get('colorPickerNoColor')}`;\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', ariaLabelValue);\n }\n handleClasses(value, input) {\n const elem = this.host.nativeElement;\n const classes = getStylingClasses('picker', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n popupBlurInvalid(ev) {\n const focusInFlatColorPickerElement = this.popupRef.popupElement.contains(ev.relatedTarget);\n const hostClicked = closest$1(ev.relatedTarget, (element) => element === this.host.nativeElement);\n return hostClicked || focusInFlatColorPickerElement;\n }\n toggleWithEvents(open) {\n const sameState = this.isOpen === open;\n if (this.disabled || this.readonly || sameState) {\n return;\n }\n let eventArgs;\n if (open) {\n eventArgs = new ColorPickerOpenEvent();\n this.open.emit(eventArgs);\n }\n else {\n eventArgs = new ColorPickerCloseEvent();\n this.close.emit(eventArgs);\n }\n if (!eventArgs.isDefaultPrevented()) {\n this.toggle(open);\n }\n if (open) {\n this.focusFirstElement();\n }\n }\n focusFirstElement() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this.flatColorPicker) {\n const gradient = this.flatColorPicker.gradient;\n const elementToFocus = gradient ? gradient.gradientDragHandle :\n this.flatColorPicker.palette.host;\n elementToFocus.nativeElement.focus();\n }\n });\n }\n openPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.activeColor,\n animate: this.popupSettings.animate,\n appendTo: this.popupSettings.appendTo,\n popupAlign: popupPosition,\n anchorAlign: anchorPosition,\n popupClass: 'k-colorpicker-popup',\n content: this.popupTemplate,\n positionMode: 'absolute'\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.toggleWithEvents(false);\n if (!this.isOpen) {\n this.host.nativeElement.focus({\n preventScroll: true\n });\n }\n });\n }\n closePopup() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n get firstFocusableElement() {\n if (!this.flatColorPicker.header || (this.views.length <= 1 && !this.flatColorPicker.clearButton)) {\n const gradient = this.flatColorPicker.gradient;\n return gradient ? gradient.gradientDragHandle : this.flatColorPicker.palette.host;\n }\n return this.views.length > 1 ? this.flatColorPicker.header.viewButtonsCollection.toArray()[0] : this.flatColorPicker.header.clearButtonElement;\n }\n get lastFocusableElement() {\n if (this.preview) {\n return this.flatColorPicker.footer.lastButton;\n }\n if (this.flatColorPicker.palette) {\n return this.flatColorPicker.palette.host;\n }\n const gradient = this.flatColorPicker.gradient;\n const inputs = gradient && gradient.inputs;\n if (gradient && inputs && inputs.formatView === 'hex') {\n return inputs.hexInput;\n }\n return this.gradientSettings.opacity ? inputs.opacityInput.numericInput : inputs.blueInput;\n }\n handleDomEvents(action, events) {\n const hostElement = this.host.nativeElement;\n events.forEach(ev => hostElement[`${action}EventListener`](ev, this.domFocusListener, true));\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n let hostElement = this.host.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n this.handleWrapperFocus();\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (event) => {\n const closestPopup = this.popupRef ?\n closest$1(event.relatedTarget, (element) => element === this.flatColorPicker.host.nativeElement) :\n false;\n const closestWrapper = closest$1(event.relatedTarget, (element) => element === this.host.nativeElement);\n if (!closestPopup && !closestWrapper) {\n this.handleWrapperBlur();\n }\n }));\n this.handleDomEvents('add', DOM_FOCUS_EVENTS);\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (event) => {\n this.handleWrapperKeyDown(event);\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'click', (event) => {\n this.ngZone.run(() => {\n this.handleWrapperClick(event);\n });\n }));\n });\n }\n handleHostId() {\n const hostElement = this.host.nativeElement;\n const existingId = hostElement.getAttribute('id');\n if (existingId) {\n this.focusableId = existingId;\n }\n else {\n const id = `k-${guid()}`;\n hostElement.setAttribute('id', id);\n this.focusableId = id;\n }\n }\n}\nColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.PopupService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPickerComponent, selector: \"kendo-colorpicker\", inputs: { views: \"views\", view: \"view\", activeView: \"activeView\", readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", popupSettings: \"popupSettings\", paletteSettings: \"paletteSettings\", gradientSettings: \"gradientSettings\", icon: \"icon\", iconClass: \"iconClass\", clearButton: \"clearButton\", tabindex: \"tabindex\", preview: \"preview\", actionsLayout: \"actionsLayout\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\", cancel: \"cancel\", activeColorClick: \"activeColorClick\", activeViewChange: \"activeViewChange\" }, host: { properties: { \"class.k-colorpicker\": \"this.hostClasses\", \"class.k-icon-picker\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-focus\": \"this.focusedClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"attr.aria-expanded\": \"this.ariaExpanded\", \"attr.tabindex\": \"this.hostTabindex\", \"attr.dir\": \"this.direction\", \"attr.role\": \"this.role\" } }, providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"activeColor\", first: true, predicate: [\"activeColor\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"flatColorPicker\", first: true, predicate: [\"flatColorPicker\"], descendants: true }], exportAs: [\"kendoColorPicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: FlatColorPickerComponent, selector: \"kendo-flatcolorpicker\", inputs: [\"readonly\", \"disabled\", \"format\", \"value\", \"tabindex\", \"clearButton\", \"preview\", \"actionsLayout\", \"activeView\", \"views\", \"gradientSettings\", \"paletteSettings\"], outputs: [\"valueChange\", \"cancel\", \"activeViewChange\", \"actionButtonClick\"], exportAs: [\"kendoFlatColorPicker\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorPicker',\n selector: 'kendo-colorpicker',\n providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }],\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$3.PopupService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpicker']\n }, {\n type: HostBinding,\n args: ['class.k-icon-picker']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], ariaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], views: [{\n type: Input\n }], view: [{\n type: Input\n }], activeView: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], preview: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], cancel: [{\n type: Output\n }], activeColorClick: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], activeColor: [{\n type: ViewChild,\n args: ['activeColor', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], flatColorPicker: [{\n type: ViewChild,\n args: ['flatColorPicker', { static: false }]\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass ColorPickerCustomMessagesComponent extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nColorPickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColorPickerCustomMessagesComponent, selector: \"kendo-colorpicker-messages, kendo-flatcolorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages\", providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-colorpicker-messages, kendo-flatcolorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst PUBLIC_DIRECTIVES = [\n ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent\n];\nconst INTERNAL_DIRECTIVES = [\n ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent,\n FlatColorPickerHeaderComponent,\n FlatColorPickerActionButtonsComponent,\n ColorContrastSvgComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the ColorPicker.\n */\nclass ColorPickerModule {\n}\nColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, declarations: [ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent, ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent,\n FlatColorPickerHeaderComponent,\n FlatColorPickerActionButtonsComponent,\n ColorContrastSvgComponent], imports: [SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule], exports: [ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent] });\nColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, imports: [[\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n PUBLIC_DIRECTIVES,\n INTERNAL_DIRECTIVES\n ],\n exports: [PUBLIC_DIRECTIVES],\n imports: [\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule\n ]\n }]\n }] });\n\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_ROUNDED = 'medium';\n/**\n * Represents the directive that renders the [Kendo UI CheckBox]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"checkbox\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass CheckBoxDirective {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.kendoClass = true;\n this._size = 'medium';\n this._rounded = 'medium';\n }\n /**\n * The size property specifies the width and height of the CheckBox\n * ([see example]({% slug appearance_checkboxdirective %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the CheckBox\n * ([see example]({% slug appearance_checkboxdirective %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('checkbox', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nCheckBoxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCheckBoxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckBoxDirective, selector: \"input[kendoCheckBox]\", inputs: { size: \"size\", rounded: \"rounded\" }, host: { properties: { \"class.k-checkbox\": \"this.kendoClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoCheckBox]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { kendoClass: [{\n type: HostBinding,\n args: ['class.k-checkbox']\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the CheckBox directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the CheckBox module\n * import { CheckBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CheckBoxModule], // import CheckBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CheckBoxModule {\n}\nCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, declarations: [CheckBoxDirective], imports: [CommonModule], exports: [CheckBoxDirective] });\nCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CheckBoxDirective],\n exports: [CheckBoxDirective],\n imports: [CommonModule]\n }]\n }] });\n\nconst DEFAULT_SIZE = 'medium';\n/**\n * Represents the directive that renders the [Kendo UI RadioButton]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"radio\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass RadioButtonDirective {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.kendoClass = true;\n this._size = 'medium';\n validatePackage(packageMetadata);\n }\n /**\n * The size property specifies the width and height of the RadioButton\n * ([see example]({% slug appearance_radiobuttondirective %}#toc-size)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n ngAfterViewInit() {\n // kept in sync with other inputs for easier refactoring\n // to a common base class\n const stylingInputs = ['size'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('radio', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nRadioButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nRadioButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: RadioButtonDirective, selector: \"input[kendoRadioButton]\", inputs: { size: \"size\" }, host: { properties: { \"class.k-radio\": \"this.kendoClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoRadioButton]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { kendoClass: [{\n type: HostBinding,\n args: ['class.k-radio']\n }], size: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the RadioButton directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the RadioButton module\n * import { RadioButtonModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, RadioButtonModule], // import RadioButton module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass RadioButtonModule {\n}\nRadioButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRadioButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, declarations: [RadioButtonDirective], imports: [CommonModule], exports: [RadioButtonDirective] });\nRadioButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RadioButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [RadioButtonDirective],\n exports: [RadioButtonDirective],\n imports: [CommonModule]\n }]\n }] });\n\nlet serial$1 = 0;\n/**\n * Represents an error message that will be shown underneath\n * a Kendo control or native HTML form-bound component after a validation.\n */\nclass ErrorComponent {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the alignment of the Error message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-error-${serial$1++}`;\n this.roleAttribute = 'alert';\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n}\nErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ErrorComponent, selector: \"kendo-formerror\", inputs: { align: \"align\" }, host: { properties: { \"class.k-form-error\": \"this.hostClass\", \"attr.role\": \"this.roleAttribute\", \"class.k-text-start\": \"this.startClass\", \"class.k-text-end\": \"this.endClass\", \"attr.id\": \"this.idAttribute\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ErrorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formerror',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-error']\n }], align: [{\n type: Input\n }], roleAttribute: [{\n type: HostBinding,\n args: ['attr.role']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\nlet serial = 0;\n/**\n * Represents a hint message that will be shown underneath a form-bound component.\n */\nclass HintComponent {\n constructor() {\n /**\n * Specifies the alignment of the Hint message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-hint-${serial++}`;\n this.hostClass = true;\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n}\nHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HintComponent, selector: \"kendo-formhint\", inputs: { align: \"align\" }, host: { properties: { \"class.k-form-hint\": \"this.hostClass\", \"class.k-text-start\": \"this.startClass\", \"class.k-text-end\": \"this.endClass\", \"attr.id\": \"this.idAttribute\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HintComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formhint',\n template: `\n \n `\n }]\n }], propDecorators: { align: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-form-hint']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\n/**\n * Specifies a container for form-bound controls (Kendo controls or native HTML controls).\n * Applies styling and behavior rules.\n */\nclass FormFieldComponent {\n constructor(renderer, localizationService, hostElement) {\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.hostElement = hostElement;\n this.hostClass = true;\n /**\n *\n * Specifies when the Hint messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying hints when the form-bound component state is\n * `valid` or `untouched` and `pristine`.\n * * `always`—Allows full control over the visibility of the hints.\n *\n */\n this.showHints = 'initial';\n /**\n * Specifies the layout orientation of the form field.\n *\n * * The possible values are:\n *\n * * (Default) `vertical`\n * * `horizontal`\n */\n this.orientation = 'vertical';\n /**\n * Specifies when the Error messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying errors when the form-bound component state is\n * `invalid` and `touched` or `dirty`.\n * * `always`—Allows full control over the visibility of the errors.\n *\n */\n this.showErrors = 'initial';\n this.subscriptions = new Subscription();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n }\n get errorClass() {\n if (!this.control) {\n return false;\n }\n return this.control.invalid && (this.control.touched || this.control.dirty);\n }\n get disabledClass() {\n if (!this.control) {\n return false;\n }\n // radiobutton group\n if (this.isRadioControl(this.control)) {\n return false;\n }\n return this.disabledControl() ||\n this.disabledElement() ||\n this.disabledKendoInput();\n }\n set formControls(formControls) {\n this.validateFormControl(formControls);\n this.control = formControls.first;\n }\n /**\n * @hidden\n */\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n /**\n * @hidden\n */\n get hasHints() {\n return this.showHints === 'always' ? true : this.showHintsInitial();\n }\n /**\n * @hidden\n */\n get hasErrors() {\n return this.showErrors === 'always' ? true : this.showErrorsInitial();\n }\n ngAfterViewInit() {\n this.setDescription();\n }\n ngAfterViewChecked() {\n this.updateDescription();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n disabledKendoInput() {\n return this.kendoInput && this.kendoInput.disabled;\n }\n disabledControl() {\n return this.control.disabled;\n }\n disabledElement() {\n const elements = this.controlElementRefs.toArray();\n return elements.every(e => e.nativeElement.hasAttribute('disabled'));\n }\n validateFormControl(formControls) {\n if (isDevMode() && formControls.length !== 1 && !this.isControlGroup(formControls)) {\n throw new Error('The `kendo-formfield` component should contain ' +\n 'only one control of type NgControl with a formControlName(https://angular.io/api/forms/FormControlName)' +\n 'or an ngModel(https://angular.io/api/forms/NgModel) binding.');\n }\n }\n isControlGroup(formControls) {\n if (!formControls.length) {\n return false;\n }\n const name = formControls.first.name;\n return formControls.toArray().every(c => c.name === name && (this.isRadioControl(c)));\n }\n isRadioControl(control) {\n return control.valueAccessor instanceof RadioControlValueAccessor;\n }\n updateDescription() {\n const controls = this.findControlElements();\n if (!controls) {\n return;\n }\n controls.forEach((control) => {\n if (this.errorChildren.length > 0 || this.hintChildren.length > 0) {\n const ariaIds = this.generateDescriptionIds(control);\n if (ariaIds !== '') {\n this.renderer.setAttribute(control, 'aria-describedby', ariaIds);\n }\n else {\n this.renderer.removeAttribute(control, 'aria-describedby');\n }\n }\n });\n }\n findControlElements() {\n if (!this.controlElementRefs) {\n return;\n }\n // if the control is KendoInput and has focusableId - dropdowns, dateinputs\n if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {\n return [this.hostElement.nativeElement.querySelector(`#${this.kendoInput.focusableId}`)];\n }\n return this.controlElementRefs.map(el => el.nativeElement);\n }\n generateDescriptionIds(control) {\n const ids = new Set();\n let errorAttribute = '';\n if (control.hasAttribute('aria-describedby')) {\n const attributes = control.getAttribute('aria-describedby').split(' ');\n errorAttribute = attributes.filter(attr => attr.includes('kendo-error-'))[0];\n attributes.forEach((attr) => {\n if (attr.includes('kendo-hint-') || attr.includes('kendo-error-')) {\n return;\n }\n ids.add(attr);\n });\n }\n this.hintChildren.forEach((hint) => {\n ids.add(hint.id);\n });\n if (this.hasErrors) {\n this.errorChildren.forEach((error) => {\n ids.add(error.id);\n });\n }\n else {\n ids.delete(errorAttribute);\n }\n return Array.from(ids).join(' ');\n }\n showHintsInitial() {\n if (!this.control) {\n return true;\n }\n const { valid, untouched, pristine } = this.control;\n return valid || (untouched && pristine);\n }\n showErrorsInitial() {\n if (!this.control) {\n return false;\n }\n const { invalid, dirty, touched } = this.control;\n return invalid && (dirty || touched);\n }\n setDescription() {\n this.updateDescription();\n this.subscriptions.add(this.errorChildren.changes.subscribe(() => this.updateDescription()));\n this.subscriptions.add(this.hintChildren.changes.subscribe(() => this.updateDescription()));\n }\n}\nFormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nFormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FormFieldComponent, selector: \"kendo-formfield\", inputs: { showHints: \"showHints\", orientation: \"orientation\", showErrors: \"showErrors\" }, host: { properties: { \"class.k-form-field\": \"this.hostClass\", \"attr.dir\": \"this.direction\", \"class.k-form-field-error\": \"this.errorClass\", \"class.k-form-field-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }, { propertyName: \"formControls\", predicate: NgControl, descendants: true }, { propertyName: \"controlElementRefs\", predicate: NgControl, descendants: true, read: ElementRef }, { propertyName: \"errorChildren\", predicate: ErrorComponent, descendants: true }, { propertyName: \"hintChildren\", predicate: HintComponent, descendants: true }], ngImport: i0, template: `\n \n
    \n \n \n \n
    \n `, isInline: true, directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formfield',\n template: `\n \n
    \n \n \n \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-field']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], errorClass: [{\n type: HostBinding,\n args: ['class.k-form-field-error']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-form-field-disabled']\n }], formControls: [{\n type: ContentChildren,\n args: [NgControl, { descendants: true }]\n }], controlElementRefs: [{\n type: ContentChildren,\n args: [NgControl, { read: ElementRef, descendants: true }]\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }], errorChildren: [{\n type: ContentChildren,\n args: [ErrorComponent, { descendants: true }]\n }], hintChildren: [{\n type: ContentChildren,\n args: [HintComponent, { descendants: true }]\n }], showHints: [{\n type: Input\n }], orientation: [{\n type: Input\n }], showErrors: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the FormField, Error and Hint components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the FormField module\n * import { FormFieldModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FormFieldModule], // import FormField module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass FormFieldModule {\n}\nFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, declarations: [HintComponent, ErrorComponent, FormFieldComponent], imports: [CommonModule], exports: [HintComponent, ErrorComponent, FormFieldComponent] });\nFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FormFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [HintComponent, ErrorComponent, FormFieldComponent],\n exports: [HintComponent, ErrorComponent, FormFieldComponent],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Inputs components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { InputsModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, InputsModule], // import Inputs module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass InputsModule {\n}\nInputsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, imports: [CommonModule], exports: [TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule] });\nInputsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, imports: [[CommonModule], TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: InputsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule\n ],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActiveColorClickEvent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, SharedModule, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchComponent, SwitchCustomMessagesComponent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, LOCALE_ID, Injectable, Inject, Pipe, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as intl from '@telerik/kendo-intl';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-intl',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440833,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DOCS_URL = 'http://www.telerik.com/kendo-angular-ui/components/internationalization/troubleshooting/';\n/**\n * @hidden\n */\nconst errorSolutions = {\n 'NoCurrency': `Solution: ${DOCS_URL}#toc-no-currency`,\n 'NoCurrencyDisplay': `Solution: ${DOCS_URL}#toc-no-currency-display`,\n 'NoCurrencyRegion': `Solution: ${DOCS_URL}#toc-no-currency-region`,\n 'NoDateFieldNames': `Solution: ${DOCS_URL}#toc-no-date-filed-names`,\n 'NoFirstDay': `Solution: ${DOCS_URL}#toc-no-first-day`,\n 'NoGMTInfo': `Solution: ${DOCS_URL}#toc-no-gmt-info`,\n 'NoLocale': `Solution: ${DOCS_URL}#toc-no-locale`,\n 'NoValidCurrency': `Solution: ${DOCS_URL}#toc-no-valid-currency`,\n 'NoWeekData': `Solution: ${DOCS_URL}#toc-no-week-data`\n};\n\nfunction formatMessage(error) {\n const message = error.message;\n const errorSolution = errorSolutions[Object.keys(errorSolutions).filter(key => message.indexOf(key) === 0)[0]];\n return errorSolution ? `${message} ${errorSolution}` : message;\n}\nfunction intlMethod(fn) {\n return function (...values) {\n try {\n return fn.apply(null, values);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n };\n}\n/**\n * @hidden\n */\nconst dateFormatNames = intlMethod(intl.dateFormatNames);\n/**\n * @hidden\n */\nconst dateFieldName = intlMethod(intl.dateFieldName);\n/**\n * @hidden\n */\nconst firstDay = intlMethod(intl.firstDay);\n/**\n * @hidden\n */\nconst format = intlMethod(intl.format);\n/**\n * @hidden\n */\nconst formatDate = intlMethod(intl.formatDate);\n/**\n * @hidden\n */\nconst formatNumber = intlMethod(intl.formatNumber);\n/**\n * @hidden\n */\nconst load = intlMethod(intl.load);\n/**\n * @hidden\n */\nconst numberSymbols = intlMethod(intl.numberSymbols);\n/**\n * @hidden\n */\nconst parseDate = intlMethod(intl.parseDate);\n/**\n * @hidden\n */\nconst parseNumber = intlMethod(intl.parseNumber);\n/**\n * @hidden\n */\nconst splitDateFormat = intlMethod(intl.splitDateFormat);\n/**\n * @hidden\n */\nconst toString = intlMethod(intl.toString);\n/**\n * @hidden\n */\nconst weekendRange = intlMethod(intl.weekendRange);\n/**\n * Sets a pre-built locale.\n *\n * @params data - The pre-built locale data.\n */\nconst setData = (data) => intl.setData(data);\n/**\n * Retrieves the locale data for the specified locale.\n *\n * @params locale - The locale id.\n * @returns data - The locale data.\n */\nconst localeData = (locale) => {\n try {\n return intl.localeInfo(locale);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n};\n\nconst LOCALE_REGEX = /_/g;\n/**\n * @hidden\n */\nfunction cldrServiceFactory(localeId) {\n return new CldrIntlService(localeId);\n}\n/**\n * An abstract base class that implements\n * the Internationalization service methods\n * for the current locale.\n */\nclass IntlService {\n /**\n * @hidden\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new EventEmitter();\n validatePackage(packageMetadata);\n }\n /**\n * Notifies that the service was changed.\n */\n notify() {\n this.changes.emit();\n }\n}\nIntlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIntlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlService, providedIn: 'root', useFactory: cldrServiceFactory, deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: cldrServiceFactory,\n deps: [LOCALE_ID]\n }]\n }], ctorParameters: function () { return []; } });\n/**\n * The Internationalization service implemented by using\n * the CLDR Database via the `@telerik/kendo-intl` package.\n */\nclass CldrIntlService extends IntlService {\n /**\n * Creates a new instance of the service with the ID of the specified locale.\n *\n * Note that the parts of the locale ID can be separated by either `_` (underscore)\n * or `-` (dash).\n *\n * @param localeId - The default locale ID.\n */\n constructor(localeId) {\n super();\n this.localeId = localeId;\n }\n /**\n * Gets or sets the current locale ID.\n */\n get localeId() {\n return this.locale;\n }\n set localeId(value) {\n // Angular locales use underscore, for example, en_US\n // while IETF BCP-47 specifies a dash.\n // https://tools.ietf.org/html/bcp47\n const locale = value.replace(LOCALE_REGEX, '-');\n if (locale !== this.locale) {\n this.locale = locale;\n this.notify();\n }\n }\n /**\n * Formats a string with placeholders such as\n * `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n format(format$1, ...values) {\n return format(format$1, values, this.localeId);\n }\n /**\n * Converts an object into a string based on the specified format.\n *\n * @param value - The value to format.\n * @param format - The format to use.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted object.\n */\n toString(value, format, localeId) {\n return toString(value, format, localeId || this.localeId);\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted date.\n */\n formatDate(value, format, localeId) {\n return formatDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Date` object based on the specified format.\n *\n * @param value - The string to convert.\n * @param format - The format strings or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed date.\n */\n parseDate(value, format, localeId) {\n return parseDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Number`.\n *\n * @param value - The string to convert.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed number.\n */\n parseNumber(value, format, localeId) {\n return parseNumber(value, localeId || this.localeId, format);\n }\n /**\n * Converts a `Number` into a string based on the specified format.\n *\n * @param value - The number to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted number.\n */\n formatNumber(value, format, localeId) {\n return formatNumber(value, format, localeId || this.localeId);\n }\n /**\n * Returns the date names from the current locale based on the option.\n *\n * The available `type` values are:\n * - `era`\n * - `year`\n * - `quarter`\n * - `month`\n * - `week`\n * - `day`\n * - `dayperiod`\n * - `hour`\n * - `minute`\n * - `second`\n * - `zone`\n *\n * The available `nameType` values are:\n * - `wide`\n * - `narrow`\n * - `short`\n *\n * @param options - Detailed configuration for the desired date field name.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n * @returns The localized date field name from the current locale based on the option.\n *\n * @example\n * ```\n * dateFieldName({ type: 'day' }); //returns 'day';\n * dateFieldName({ type: 'day', nameType: 'wide' }); //returns 'day';\n * dateFieldName({ type: 'month', nameType: 'short' }); //returns 'mo.';\n * dateFieldName({ type: 'month', nameType: 'wide' }); //returns 'month';\n * ```\n */\n dateFieldName(options, localeId) {\n return dateFieldName(options, localeId || this.localeId);\n }\n /**\n * Returns a localized date field name based on specific dateFieldName options.\n *\n * The available type values are:\n * - `day`\n * - `dayperiod`\n * - `months`\n * - `quarters`\n * - `eras`\n *\n * @param options - Detailed configuration for the desired date format.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n */\n dateFormatNames(options, localeId) {\n return dateFormatNames(localeId || this.localeId, options);\n }\n /**\n * Splits the date format into objects containing information about each part of the pattern.\n *\n * @param format The format string or options.\n * @param localeId The optional locale id. If not specified, the `\"en\"` locale id is used.\n * @returns The date format parts.\n */\n splitDateFormat(format, localeId) {\n return splitDateFormat(format, localeId || this.localeId);\n }\n /**\n * Returns the number symbols from the current locale based on the option.\n *\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The number symbols from the current locale.\n */\n numberSymbols(localeId) {\n return numberSymbols(localeId || this.localeId);\n }\n /**\n * Returns the first day index starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The index of the first day of the week (0 == Sunday).\n */\n firstDay(localeId) {\n return firstDay(localeId || this.localeId);\n }\n /**\n * Returns the start and end index of the locale weekend starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The the start and end index of the locale weekend (0 == Sunday).\n */\n weekendRange(localeId) {\n return weekendRange(localeId || this.localeId);\n }\n}\nCldrIntlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CldrIntlService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nCldrIntlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CldrIntlService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CldrIntlService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nconst isNumeric = (value) => !isNaN(value - parseFloat(value));\n/**\n * Formats a date value to a string based on the requested format.\n * This pipe uses the [IntlService]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
      \n *
    • {{date | kendoDate }}
    • \n *
    • {{milliseconds | kendoDate: 'M/dd/yyy' }}
    • \n *
    • {{stringDate | kendoDate: 'G' }}
    • \n *
    \n * ```\n */\nclass DatePipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - (Optional) The ID of the locale which will be used instead of the default one.\n * @return - The formatted date.\n */\n transform(value, format = \"\", localeId) {\n value = this.normalize(value);\n if (value) {\n return this.intlService.formatDate(value, format, localeId);\n }\n return value;\n }\n normalize(value) {\n if (value && typeof value === 'string') {\n value = this.intlService.parseDate(value);\n }\n else if (value && isNumeric(value)) {\n value = new Date(parseFloat(value));\n }\n return value;\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePipe, deps: [{ token: IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePipe, name: \"kendoDate\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'kendoDate'\n }]\n }], ctorParameters: function () { return [{ type: IntlService }]; } });\n\n/**\n * Formats a number value to a string based on the requested format.\n * This pipe uses the [`IntlService`]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
      \n *
    • {{decimal | kendoNumber:'c' }}
    • \n *
    • {{stringNumber | kendoNumber:'p' }}
    • \n *
    • {{int | kendoNumber:'##.00' }}
    • \n *
    \n * ```\n */\nclass NumberPipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Number` object into a string based on the specified format.\n * If no format is provided, the value is formatted as decimal number using the\n * [`\"n\"`](https://github.com/telerik/kendo-intl/blob/master/docs/num-formatting/index.md#standard) format.\n *\n * @param value - The numer that will be formatted.\n * @param format - The format string or options.\n * @param localeId - (Optional) The locale ID that will be used in place of the default one.\n * @return - The formatted number.\n */\n transform(value, format, localeId) {\n if (typeof value === 'string') {\n value = this.intlService.parseNumber(value);\n }\n if (value !== null && value !== undefined) {\n return this.intlService.formatNumber(value, format, localeId);\n }\n return value;\n }\n}\nNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumberPipe, deps: [{ token: IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumberPipe, name: \"kendoNumber\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NumberPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'kendoNumber'\n }]\n }], ctorParameters: function () { return [{ type: IntlService }]; } });\n\nconst pipes = [\n DatePipe,\n NumberPipe\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}docs/ts/latest/guide/ngmodule.html)\n * definition for the Intl services.\n */\nclass IntlModule {\n}\nIntlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nIntlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule, declarations: [DatePipe,\n NumberPipe], exports: [DatePipe,\n NumberPipe] });\nIntlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IntlModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [pipes],\n exports: [pipes]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CldrIntlService, DatePipe, IntlModule, IntlService, NumberPipe, cldrServiceFactory, dateFieldName, dateFormatNames, firstDay, format, formatDate, formatNumber, load, localeData, numberSymbols, parseDate, parseNumber, setData, splitDateFormat, toString, weekendRange };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, Directive, InjectionToken, Inject, Optional } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { skip, map, tap } from 'rxjs/operators';\n\n/**\n * A base class for a service that returns localized messages.\n *\n * For more information, refer to the section on [using the message service]({% slug messages_l10n %}#toc-using-the-message-service).\n */\nclass MessageService {\n /**\n * @hidden\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new BehaviorSubject({ rtl: undefined });\n }\n /**\n * Notifies the components that the messages were changed.\n *\n * @param rtl - (Optional) A new value for the [text direction token]({% slug api_l10n_rtl %}).\n */\n notify(rtl) {\n this.changes.next({ rtl });\n }\n /**\n * Returns a localized message for the supplied key.\n *\n * @param _key - The message key. For example, `\"kendo.grid.noRecords\"`.\n * @return - The localized message for this key or `undefined` if not found.\n */\n get(_key) {\n return undefined;\n }\n}\nMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessageService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MessageService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * Base class that acts as a component messages container.\n *\n * For internal use.\n * @hidden\n */\nclass ComponentMessages {\n get override() {\n return false;\n }\n ngOnChanges(changes) {\n this.register(changes);\n if (Object.keys(changes).some(field => !changes[field].isFirstChange())) {\n this.service.notifyChanges();\n }\n }\n ngOnInit() {\n this.subscription = this.service.changes.pipe(skip(1)).subscribe(() => this.register(this));\n }\n register(changes) {\n const keys = Object.keys(changes);\n keys.forEach(key => this.service.register(key, this[key], this.override));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nComponentMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComponentMessages, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nComponentMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComponentMessages, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComponentMessages, decorators: [{\n type: Directive,\n args: [{}]\n }] });\n\n/**\n * A token that specifies the text direction of Kendo UI for Angular components.\n *\n * @example\n * {% embed_file rtl/app.module.ts preview %}\n * {% embed_file rtl/app.component.ts %}\n * {% embed_file shared/main.ts hidden %}\n *\n */\nconst RTL = new InjectionToken(\"Kendo UI Right-to-Left token\");\n\n/**\n * Localization prefix for the component messages.\n *\n * For internal use.\n * @hidden\n */\nconst L10N_PREFIX = new InjectionToken('Localization key prefix');\n/**\n * Component localization service.\n *\n * For internal use.\n * @hidden\n */\nclass LocalizationService {\n constructor(prefix, messageService, _rtl) {\n this.prefix = prefix;\n this.messageService = messageService;\n this._rtl = _rtl;\n this.changes = new BehaviorSubject({ rtl: this._rtl });\n this.dictionary = {};\n if (messageService) {\n this.subscription = messageService.changes\n .pipe(map(({ rtl }) => rtl !== undefined ? rtl : this._rtl), tap(rtl => this._rtl = rtl))\n .subscribe(rtl => {\n this.dictionary = {};\n this.changes.next({ rtl });\n });\n }\n }\n get rtl() {\n return this._rtl;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n get(shortKey) {\n const key = this.key(shortKey);\n return this.dictionary[key];\n }\n register(shortKey, value, override = false) {\n const key = this.key(shortKey);\n let message = value;\n if (!override) {\n if (this.dictionary.hasOwnProperty(key)) {\n return;\n }\n message = this.defaultValue(key, value);\n }\n this.dictionary[key] = message;\n }\n notifyChanges() {\n this.changes.next({ rtl: this.rtl });\n }\n key(shortKey) {\n return this.prefix + '.' + shortKey;\n }\n defaultValue(key, value) {\n if (!this.messageService) {\n return value;\n }\n const alt = this.messageService.get(key);\n return (alt === undefined) ? value : alt;\n }\n}\nLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizationService, deps: [{ token: L10N_PREFIX }, { token: MessageService, optional: true }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ComponentMessages, L10N_PREFIX, LocalizationService, MessageService, RTL };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Input, HostBinding, forwardRef, Component, NgModule, EventEmitter, isDevMode, Output, ContentChild, ViewChild } from '@angular/core';\nimport { isDocumentAvailable, guid, hasObservers, KendoInput } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NgControl } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { Observable, Subscription } from 'rxjs';\n\n/**\n * @hidden\n */\nconst isUploadComponent = (component) => component.wrapper && (component.wrapper.tagName === 'KENDO-UPLOAD' || component.wrapper.tagName === 'KENDO-FILESELECT');\n/**\n * @hidden\n */\nconst isInputElement = (component) => component instanceof HTMLElement;\n/**\n * @hidden\n */\nconst inputElementHasAttr = (element, attribute) => element.hasAttribute(attribute);\n/**\n * @hidden\n */\nconst getWrappedNativeInput = (element) => element.querySelector('kendo-label > input, kendo-label > textarea, kendo-label > select');\n/**\n * @hidden\n */\nconst getRootElement = (element) => {\n if (!element) {\n return null;\n }\n let rootElement = element;\n while (rootElement.parentElement) {\n rootElement = rootElement.parentElement;\n }\n return rootElement;\n};\n\n/**\n * Represents the [Kendo UI Label directive for Angular]({% slug overview_label %}).\n * The Label associates a focusable Angular component or an HTML element\n * with a `label` tag by using the `[for]` property binding.\n *\n * To associate a component by using the `label` element, either:\n * * Set the `[for]` property binding to a\n * [template reference variable]({{ site.data.urls.angular['templatesyntax'] }}#template-reference-variables--var-), or\n * * Set the `[for]` property binding to an `id` HTML string value.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n *
    \n * \n * \n *
    \n *\n *
    \n * \n * \n *
    \n *
    \n * `\n * })\n * class AppComponent { }\n * ```\n */\nclass LabelDirective {\n constructor(label, renderer, zone) {\n this.label = label;\n this.renderer = renderer;\n this.zone = zone;\n this.labelClass = true;\n this.handleClick = () => {\n const component = this.getFocusableComponent();\n if (!component) {\n return;\n }\n if (isUploadComponent(component)) {\n component.fileSelect.nativeElement.click();\n }\n if (component.focus) {\n component.focus();\n }\n };\n }\n get labelFor() {\n if (typeof this.for === 'string') {\n return this.for;\n }\n if (!isDocumentAvailable()) {\n return null;\n }\n const component = this.getFocusableComponent() || {};\n if (isInputElement(component) && !inputElementHasAttr(component, 'id')) {\n this.renderer.setAttribute(component, 'id', `k-${guid()}`);\n }\n return component.focusableId || component.id || null;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.setAriaLabelledby();\n this.zone.runOutsideAngular(() => this.clickListener = this.renderer.listen(this.label.nativeElement, 'click', this.handleClick));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.clickListener) {\n this.clickListener();\n }\n }\n /**\n * @hidden\n */\n setAriaLabelledby() {\n if (!isDocumentAvailable()) {\n return;\n }\n const component = this.getFocusableComponent();\n if (component && component.focusableId) {\n const rootElement = getRootElement(this.label.nativeElement);\n const labelTarget = rootElement.querySelector(`#${component.focusableId}`);\n if (!labelTarget) {\n return;\n }\n const labelElement = this.label.nativeElement;\n const id = labelElement.id || `k-${guid()}`;\n if (!labelElement.getAttribute('id')) {\n this.renderer.setAttribute(labelElement, 'id', id);\n }\n this.renderer.setAttribute(labelTarget, 'aria-labelledby', id);\n }\n }\n getFocusableComponent() {\n const target = this.for;\n return target && target.focus !== undefined ? target : null;\n }\n}\nLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LabelDirective, selector: \"label[for]\", inputs: { for: \"for\" }, host: { properties: { \"attr.for\": \"this.labelFor\", \"class.k-label\": \"this.labelClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'label[for]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { for: [{\n type: Input\n }], labelFor: [{\n type: HostBinding,\n args: ['attr.for']\n }], labelClass: [{\n type: HostBinding,\n args: ['class.k-label']\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-label-messages-base\", inputs: { optional: \"optional\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-label-messages-base'\n }]\n }], propDecorators: { optional: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoLabelLocalizedMessages],\n [kendoFloatingLabelLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug label_globalization %}#toc-localization)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-label-messages, kendo-floatinglabel-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-label-messages, kendo-floatinglabel-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst SHARED_DIRECTIVES = [\n LocalizedMessagesDirective,\n CustomMessagesComponent\n];\n/**\n * @hidden\n */\nclass SharedDirectivesModule {\n}\nSharedDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, declarations: [LocalizedMessagesDirective,\n CustomMessagesComponent], exports: [LocalizedMessagesDirective,\n CustomMessagesComponent] });\nSharedDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-label',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441139,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass FloatingLabelInputAdapter {\n constructor(component, formControl) {\n this.component = component;\n const isObservableOrEventEmitter = (event) => event instanceof Observable || event instanceof EventEmitter;\n if (isObservableOrEventEmitter(component.onFocus)) {\n this.onFocus = component.onFocus;\n }\n if (isObservableOrEventEmitter(component.autoFillStart)) {\n this.autoFillStart = component.autoFillStart;\n }\n if (isObservableOrEventEmitter(component.autoFillEnd)) {\n this.autoFillEnd = component.autoFillEnd;\n }\n if (isObservableOrEventEmitter(component.onBlur)) {\n this.onBlur = component.onBlur;\n }\n if (formControl) {\n this.onValueChange = formControl.valueChanges;\n }\n else if (component.onValueChange) {\n this.onValueChange = component.onValueChange;\n }\n }\n get focusableId() {\n const component = this.component;\n if ('focusableId' in component) {\n return component.focusableId;\n }\n else if ('id' in component) {\n return component.id;\n }\n return \"\";\n }\n set focusableId(value) {\n const component = this.component;\n if ('focusableId' in component) {\n component.focusableId = value;\n }\n else if ('id' in component) {\n component.id = value;\n }\n }\n}\n\nconst isFunction = (x) => Object.prototype.toString.call(x) === '[object Function]';\n/**\n * Represents the [Kendo UI FloatingLabel component for Angular]({% slug overview_floatinglabel %}).\n * Provides floating labels to `input` elements.\n *\n * The FloatingLabel supports both Template and Reactive Forms and\n * [can contain Kendo UI for Angular Input components such as `kendo-combobox` and `kendo-numerictextbox`,\n * or HTML Input elements with the `kendoTextBox` directive applied]({% slug overview_floatinglabel %}#toc-implementing-floating-labels).\n *\n * @example\n * ```ts\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public name = 'John';\n * }\n *\n * ```\n */\nclass FloatingLabelComponent {\n constructor(elementRef, renderer, changeDetectorRef, localization) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.changeDetectorRef = changeDetectorRef;\n this.localization = localization;\n this.hostClasses = true;\n /**\n * Fires after the floating label position is changed.\n */\n this.positionChange = new EventEmitter();\n /**\n * @hidden\n */\n this.focused = false;\n /**\n * @hidden\n */\n this.empty = true;\n /**\n * @hidden\n */\n this.invalid = false;\n /**\n * @hidden\n */\n this.labelId = `k-${guid()}`;\n this.autoFillStarted = false;\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, \"id\");\n }\n /**\n * Represents the current floating label position.\n */\n get labelPosition() {\n if (!this.empty) {\n return 'Out';\n }\n return this.focused ? 'Out' : 'In';\n }\n get focusedClass() {\n return this.focused;\n }\n get invalidClass() {\n return this.invalid;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n this.validateSetup();\n const control = new FloatingLabelInputAdapter(this.kendoInput || this.formControl.valueAccessor, this.formControl);\n this.addHandlers(control);\n this.setLabelFor(control);\n }\n ngAfterViewInit() {\n if (this.kendoInput) {\n this.setAriaLabelledby(this.kendoInput);\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n subscribe(control, eventName, handler) {\n if (control[eventName] instanceof EventEmitter) {\n const subscription = control[eventName].subscribe(handler);\n if (!this.subscription) {\n this.subscription = subscription;\n }\n else {\n this.subscription.add(subscription);\n }\n }\n }\n updateState() {\n const empty = value => {\n // zero is not an empty value (e.g., NumericTextBox)\n if (value === 0 || value === false) {\n return false;\n }\n // empty arrays are an empty value (e.g., MultiSelect)\n if (Array.isArray(value) && !value.length) {\n return true;\n }\n return !value;\n };\n const formControl = this.formControl;\n if (formControl) {\n const valueAccessor = formControl.valueAccessor;\n if (isFunction(valueAccessor.isEmpty)) {\n this.empty = valueAccessor.isEmpty();\n }\n else {\n this.empty = empty(formControl.value);\n }\n this.invalid = formControl.invalid && (formControl.touched || formControl.dirty);\n }\n else {\n this.empty = isFunction(this.kendoInput.isEmpty) ?\n this.kendoInput.isEmpty() : empty(this.kendoInput.value);\n }\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-empty');\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-empty');\n }\n this.changeDetectorRef.markForCheck();\n }\n setAriaLabelledby(component) {\n const componentId = component.focusableId || component.id;\n if (componentId) {\n const focusableElement = this.elementRef.nativeElement.querySelector(`#${componentId}`);\n this.renderer.setAttribute(focusableElement, 'aria-labelledby', this.labelId);\n }\n }\n setLabelFor(control) {\n const controlId = control.focusableId || control.id;\n if (this.id && controlId) {\n // input wins\n this.id = controlId;\n }\n else if (this.id) {\n control.focusableId = this.id;\n }\n else if (controlId) {\n this.id = controlId;\n }\n else {\n const id = `k-${guid()}`;\n control.focusableId = id;\n this.id = id;\n }\n }\n handleAutofill(control) {\n this.subscribe(control, 'autoFillStart', () => {\n this.autoFillStarted = true;\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-empty');\n });\n this.subscribe(control, 'autoFillEnd', () => {\n if (this.autoFillStarted) {\n this.autoFillStarted = false;\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-empty');\n }\n }\n });\n }\n addHandlers(control) {\n const setFocus = (isFocused) => () => {\n this.focused = isFocused;\n this.updateState();\n if (!this.empty) {\n return;\n }\n if (hasObservers(this.positionChange)) {\n this.positionChange.emit(isFocused ? 'Out' : 'In');\n }\n };\n this.subscribe(control, 'onFocus', setFocus(true));\n this.subscribe(control, 'onBlur', setFocus(false));\n this.handleAutofill(control);\n const updateState = () => this.updateState();\n updateState();\n this.subscribe(control, 'onValueChange', updateState);\n }\n validateSetup() {\n if (!this.formControl && !this.kendoInput) {\n if (isDevMode()) {\n throw new Error(\"The FloatingLabelComponent requires a Kendo Input component\" +\n \" or a forms-bound component to function properly.\");\n }\n return;\n }\n }\n}\nFloatingLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFloatingLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingLabelComponent, selector: \"kendo-floatinglabel\", inputs: { labelCssStyle: \"labelCssStyle\", labelCssClass: \"labelCssClass\", id: \"id\", text: \"text\", optional: \"optional\" }, outputs: { positionChange: \"positionChange\" }, host: { properties: { \"class.k-floating-label-container\": \"this.hostClasses\", \"class.k-focus\": \"this.focusedClass\", \"class.k-state-invalid\": \"this.invalidClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatinglabel'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true }, { propertyName: \"formControl\", first: true, predicate: NgControl, descendants: true }], exportAs: [\"kendoFloatingLabel\"], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-floatinglabel',\n exportAs: 'kendoFloatingLabel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatinglabel'\n }\n ],\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-floating-label-container']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], invalidClass: [{\n type: HostBinding,\n args: ['class.k-state-invalid']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], labelCssStyle: [{\n type: Input\n }], labelCssClass: [{\n type: Input\n }], id: [{\n type: Input\n }], text: [{\n type: Input\n }], optional: [{\n type: Input\n }], positionChange: [{\n type: Output\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: false }]\n }], formControl: [{\n type: ContentChild,\n args: [NgControl, { static: false }]\n }] } });\n\nconst COMPONENT_DIRECTIVES$1 = [FloatingLabelComponent];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TextBox directive.\n *\n * @example\n *\n * ```ts-no-run\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FloatingLabelModule], // import FloatingLabel module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass FloatingLabelModule {\n}\nFloatingLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFloatingLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, declarations: [FloatingLabelComponent], imports: [CommonModule, SharedDirectivesModule], exports: [FloatingLabelComponent, SharedDirectivesModule] });\nFloatingLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, imports: [[CommonModule, SharedDirectivesModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingLabelModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [...COMPONENT_DIRECTIVES$1],\n exports: [...COMPONENT_DIRECTIVES$1, SharedDirectivesModule],\n imports: [CommonModule, SharedDirectivesModule]\n }]\n }] });\n\n/**\n * Represents the [Kendo UI Label component for Angular]({% slug label_basic %}).\n *\n * Associates a label with input elements or components.\n *\n * @example\n * ```ts\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public name = 'John';\n * }\n *\n * ```\n */\nclass LabelComponent {\n constructor(elementRef, renderer, localization) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.localization = localization;\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'id');\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n if (this.for) {\n this.control = this.for;\n return;\n }\n const wrappedNativeInput = getWrappedNativeInput(this.elementRef.nativeElement);\n if (wrappedNativeInput) {\n if (!wrappedNativeInput.hasAttribute('id')) {\n this.renderer.setAttribute(wrappedNativeInput, 'id', `k-${guid()}`);\n }\n this.control = wrappedNativeInput;\n return;\n }\n this.control = this.kendoInput;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.labelDirective.setAriaLabelledby();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n}\nLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LabelComponent, selector: \"kendo-label\", inputs: { text: \"text\", for: \"for\", optional: \"optional\" }, host: { properties: { \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.label'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }], viewQueries: [{ propertyName: \"labelDirective\", first: true, predicate: LabelDirective, descendants: true, static: true }], exportAs: [\"kendoLabel\"], ngImport: i0, template: `\n \n \n \n {{ text }}({{textFor('optional')}})\n \n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \" }, { type: LabelDirective, selector: \"label[for]\", inputs: [\"for\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-label',\n exportAs: 'kendoLabel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.label'\n }\n ],\n template: `\n \n \n \n {{ text }}({{textFor('optional')}})\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], text: [{\n type: Input\n }], for: [{\n type: Input\n }], optional: [{\n type: Input\n }], labelDirective: [{\n type: ViewChild,\n args: [LabelDirective, { static: true }]\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n LabelDirective,\n LabelComponent\n];\n/**\n * The exported package module.\n *\n * The package exports:\n * - `LabelDirective`—The Label directive class.\n * - `LabelComponent`—The Label component class\n * - `FLoatingLabel`—The FloatingLabel component class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Label module\n * import { LabelModule } from '@progress/kendo-angular-label';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, LabelModule], // import Label module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass LabelModule {\n}\nLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, declarations: [LabelDirective,\n LabelComponent], imports: [CommonModule, SharedDirectivesModule], exports: [LabelDirective,\n LabelComponent, FloatingLabelModule, SharedDirectivesModule] });\nLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, imports: [[CommonModule, SharedDirectivesModule], FloatingLabelModule, SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LabelModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedDirectivesModule],\n declarations: [...COMPONENT_DIRECTIVES],\n exports: [...COMPONENT_DIRECTIVES, FloatingLabelModule, SharedDirectivesModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, FloatingLabelComponent, FloatingLabelModule, LabelComponent, LabelDirective, LabelModule, LocalizedMessagesDirective, SharedDirectivesModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Optional, Component, Input, ContentChild, NgModule } from '@angular/core';\nimport { drawDOM, exportPDF } from '@progress/kendo-drawing';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { validatePackage } from '@progress/kendo-licensing';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-pdf-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441084,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nclass PDFExportTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPDFExportTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPDFExportTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFExportTemplateDirective, selector: \"[kendoPDFTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPDFTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst FIELDS = ['bottom', 'left', 'right', 'top'];\n/**\n * Represents the Kendo UI PDFMargin component for Angular.\n */\nclass PDFExportMarginComponent {\n /**\n * @hidden\n */\n get options() {\n const options = {};\n for (let idx = 0; idx < FIELDS.length; idx++) {\n const field = FIELDS[idx];\n const value = this[field];\n if (typeof value !== 'undefined') {\n options[field] = value;\n }\n }\n return options;\n }\n}\nPDFExportMarginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportMarginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nPDFExportMarginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFExportMarginComponent, selector: \"kendo-pdf-export-margin\", inputs: { left: \"left\", top: \"top\", right: \"right\", bottom: \"bottom\" }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportMarginComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export-margin',\n template: ``\n }]\n }], propDecorators: { left: [{\n type: Input\n }], top: [{\n type: Input\n }], right: [{\n type: Input\n }], bottom: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst compileTemplate = (templateRef) => {\n const context = {};\n let embeddedView = templateRef.createEmbeddedView(context);\n const result = (data) => {\n Object.assign(context, data);\n embeddedView.detectChanges();\n const templateWrap = document.createElement('span');\n embeddedView.rootNodes.forEach((rootNode) => {\n templateWrap.appendChild(rootNode.cloneNode(true));\n });\n return templateWrap;\n };\n result.destroy = () => {\n embeddedView.destroy();\n embeddedView = null;\n };\n return result;\n};\n\n/**\n * Represents the [Kendo UI PDF Export component for Angular]({% slug overview_pdfexport %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    \n *\n * \n * Content goes here\n * \n * `\n * })\n * export class AppComponent {\n * }\n * ```\n */\nclass PDFExportComponent {\n constructor(element) {\n this.element = element;\n /**\n * The creator of the PDF document.\n * @default \"Kendo UI PDF Generator\"\n */\n this.creator = 'Kendo UI PDF Generator';\n /**\n * Specifies the name of the exported PDF file.\n * @default \"Export.pdf\"\n */\n this.fileName = 'export.pdf';\n validatePackage(packageMetadata);\n }\n get drawMargin() {\n const marginComponent = this.marginComponent;\n let margin = this.margin;\n if (marginComponent) {\n margin = Object.assign(margin || {}, marginComponent.options);\n }\n return margin;\n }\n /**\n * Saves the content as a PDF file with the specified name.\n * @param fileName - The name of the exported file.\n */\n saveAs(fileName = this.fileName) {\n this.save(this.element.nativeElement, fileName);\n }\n /**\n * Exports the content as a `Group` for further processing.\n *\n * @return - The root group of the exported scene.\n */\n export() {\n return this.exportElement(this.element.nativeElement);\n }\n save(element, fileName) {\n this.exportElement(element)\n .then(group => this.exportGroup(group, this.pdfOptions()))\n .then(dataUri => this.saveDataUri(dataUri, fileName, this.saveOptions()));\n }\n exportElement(element) {\n const promise = this.drawElement(element, this.drawOptions());\n const cleanup = this.cleanup.bind(this);\n promise.then(cleanup, cleanup);\n return promise;\n }\n cleanup() {\n if (this.pageTemplate) {\n this.pageTemplate.destroy();\n delete this.pageTemplate;\n }\n }\n drawOptions() {\n if (this.pageTemplateDirective) {\n this.pageTemplate = compileTemplate(this.pageTemplateDirective.templateRef);\n }\n return {\n avoidLinks: this.avoidLinks,\n forcePageBreak: this.forcePageBreak,\n keepTogether: this.keepTogether,\n margin: this.drawMargin,\n paperSize: this.paperSize,\n landscape: this.landscape,\n repeatHeaders: this.repeatHeaders,\n scale: this.scale,\n template: this.pageTemplate\n };\n }\n pdfOptions() {\n return {\n autoPrint: this.autoPrint,\n author: this.author,\n creator: this.creator,\n date: this.date,\n imgDPI: this.imageResolution,\n keywords: this.keywords,\n landscape: this.landscape,\n margin: this.drawMargin,\n multiPage: true,\n paperSize: this.paperSize,\n producer: this.producer,\n subject: this.subject,\n title: this.title\n };\n }\n saveOptions() {\n return {\n forceProxy: this.forceProxy,\n proxyData: this.proxyData,\n proxyTarget: this.proxyTarget,\n proxyURL: this.proxyURL\n };\n }\n drawElement(element, options) {\n return drawDOM(element, options);\n }\n exportGroup(group, options) {\n return exportPDF(group, options);\n }\n saveDataUri(dataUri, fileName, options) {\n saveAs(dataUri, fileName, options);\n }\n}\nPDFExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nPDFExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PDFExportComponent, selector: \"kendo-pdf-export\", inputs: { autoPrint: \"autoPrint\", author: \"author\", avoidLinks: \"avoidLinks\", forcePageBreak: \"forcePageBreak\", keepTogether: \"keepTogether\", creator: \"creator\", date: \"date\", imageResolution: \"imageResolution\", fileName: \"fileName\", forceProxy: \"forceProxy\", keywords: \"keywords\", landscape: \"landscape\", margin: \"margin\", paperSize: \"paperSize\", repeatHeaders: \"repeatHeaders\", scale: \"scale\", proxyData: \"proxyData\", proxyURL: \"proxyURL\", proxyTarget: \"proxyTarget\", producer: \"producer\", subject: \"subject\", title: \"title\" }, queries: [{ propertyName: \"pageTemplateDirective\", first: true, predicate: PDFExportTemplateDirective, descendants: true }, { propertyName: \"marginComponent\", first: true, predicate: PDFExportMarginComponent, descendants: true }], ngImport: i0, template: `
    `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pdf-export',\n template: `
    `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { autoPrint: [{\n type: Input\n }], author: [{\n type: Input\n }], avoidLinks: [{\n type: Input\n }], forcePageBreak: [{\n type: Input\n }], keepTogether: [{\n type: Input\n }], creator: [{\n type: Input\n }], date: [{\n type: Input\n }], imageResolution: [{\n type: Input\n }], fileName: [{\n type: Input\n }], forceProxy: [{\n type: Input\n }], keywords: [{\n type: Input\n }], landscape: [{\n type: Input\n }], margin: [{\n type: Input\n }], paperSize: [{\n type: Input\n }], repeatHeaders: [{\n type: Input\n }], scale: [{\n type: Input\n }], proxyData: [{\n type: Input\n }], proxyURL: [{\n type: Input\n }], proxyTarget: [{\n type: Input\n }], producer: [{\n type: Input\n }], subject: [{\n type: Input\n }], title: [{\n type: Input\n }], pageTemplateDirective: [{\n type: ContentChild,\n args: [PDFExportTemplateDirective, { static: false }]\n }], marginComponent: [{\n type: ContentChild,\n args: [PDFExportMarginComponent, { static: false }]\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n PDFExportComponent,\n PDFExportMarginComponent,\n PDFExportTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the PDF Export directive.\n */\nclass PDFExportModule {\n}\nPDFExportModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPDFExportModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule, declarations: [PDFExportComponent,\n PDFExportMarginComponent,\n PDFExportTemplateDirective], exports: [PDFExportComponent,\n PDFExportMarginComponent,\n PDFExportTemplateDirective] });\nPDFExportModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PDFExportModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PDFExportComponent, PDFExportMarginComponent, PDFExportModule, PDFExportTemplateDirective, compileTemplate };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, Optional, EventEmitter, isDevMode, Component, Input, Output, ViewChild, TemplateRef, NgModule } from '@angular/core';\nimport { siblingContainer, parents, addScroll, align, boundingOffset, offset, positionWithScroll, removeScroll, restrictToView, scrollPosition, getWindowViewPort } from '@progress/kendo-popup-common';\nimport * as i7 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, hasObservers, ResizeSensorComponent, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { fromEvent, merge, from } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport * as i1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i8 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n return rect;\n};\n/**\n * @hidden\n */\nconst replaceOffset = (rect, offset) => {\n if (!offset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: offset.left,\n top: offset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst isDifferentOffset = (oldOffset, newOffset) => {\n const { left: oldLeft, top: oldTop } = oldOffset;\n const { left: newLeft, top: newTop } = newOffset;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst hasBoundingRect = (elem) => !!elem.getBoundingClientRect;\n/**\n * @hidden\n */\nconst OVERFLOW_REGEXP = /auto|scroll/;\nconst overflowElementStyle = (element) => {\n return `${element.style.overflow}${element.style.overflowX}${element.style.overflowY}`;\n};\nconst overflowComputedStyle = (element) => {\n const styles = window.getComputedStyle(element);\n return `${styles.overflow}${styles.overflowX}${styles.overflowY}`;\n};\nconst overflowStyle = (element) => {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n/**\n * @hidden\n */\nconst scrollableParents = (element) => {\n const parentElements = [];\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return parentElements;\n }\n let parent = element.parentElement;\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n parent = parent.parentElement;\n }\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\nconst FRAME_DURATION = 1000 / 60; //1000ms divided by 60fps\nfunction memoize(fun) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fun(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!isDocumentAvailable() && document.body !== null) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * @hidden\n */\nconst zIndex = (anchor, container) => {\n if (!anchor || !isDocumentAvailable() || !isWindowAvailable()) {\n return null;\n }\n const sibling = siblingContainer(anchor, container);\n if (!sibling) {\n return null;\n }\n const result = [anchor].concat(parents(anchor, sibling)).reduce((index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n }, 0);\n return result ? (result + 1) : null;\n};\n/**\n * @hidden\n */\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\n/**\n * Used to set the document scale when using a [scale transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale).\n *\n * The document or container scale is required to compute the popup position correctly. Detecting the scale is not reliable and must be set by providing a value for SCALE. See [Support for Document Scale]({% slug documentscale_popup %}).\n *\n * > Using this token is not necessary for user-applied browser zoom.\n *\n * {% meta height:300 %}\n * {% embed_file scale/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n *\n *\n */\nconst SCALE = new InjectionToken('Popup Document Scale');\n\nconst STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n/**\n * @hidden\n */\nclass DOMService {\n addOffset(current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n }\n addScroll(rect, scroll) {\n return addScroll(rect, scroll);\n }\n align(settings) {\n return align(settings);\n }\n boundingOffset(el) {\n return boundingOffset(el);\n }\n getFontStyles(el) {\n const window = this.getWindow();\n if (!window || !el) {\n return [];\n }\n const computedStyles = window.getComputedStyle(el);\n return STYLES.map(font => ({ key: font, value: computedStyles[font] }));\n }\n getWindow() {\n return isWindowAvailable() ? window : null;\n }\n hasOffsetParent(el) {\n if (!el) {\n return false;\n }\n return !!this.nativeElement(el).offsetParent;\n }\n offset(el) {\n if (!el) {\n return null;\n }\n return offset(el);\n }\n offsetAtPoint(el, currentLocation) {\n if (!el) {\n return null;\n }\n const element = this.nativeElement(el);\n const { left, top, transition } = element.style;\n element.style.transition = 'none';\n element.style.left = `${currentLocation.left}px`;\n element.style.top = `${currentLocation.top}px`;\n const currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n // prevents elements with transition to be animated because of the change\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n element.style.transition = transition;\n return currentOffset;\n }\n nativeElement(el) {\n if (!el) {\n return null;\n }\n return el.nativeElement || el;\n }\n position(element, popup, scale = 1) {\n if (!element || !popup) {\n return null;\n }\n return positionWithScroll(element, this.nativeElement(popup), scale);\n }\n removeScroll(rect, scroll) {\n return removeScroll(rect, scroll);\n }\n restrictToView(settings) {\n return restrictToView(settings);\n }\n scrollPosition(el) {\n return scrollPosition(this.nativeElement(el));\n }\n scrollableParents(el) {\n return scrollableParents(el);\n }\n stackingElementOffset(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return null;\n }\n return offset(relativeContextElement);\n }\n stackingElementScroll(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return { x: 0, y: 0 };\n }\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n }\n getRelativeContextElement(el) {\n if (!el || !hasRelativeStackingContext()) {\n return null;\n }\n let parent = this.nativeElement(el).parentElement;\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n return null;\n }\n useRelativePosition(el) {\n return !!this.getRelativeContextElement(el);\n }\n windowViewPort(el) {\n return getWindowViewPort(this.nativeElement(el));\n }\n zIndex(anchor, container) {\n return zIndex(anchor, this.nativeElement(container));\n }\n zoomLevel() {\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return 1;\n }\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n }\n isZoomed() {\n return this.zoomLevel() > 1;\n }\n}\nDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass AlignService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n alignElement(settings) {\n const { anchor, element, anchorAlign, elementAlign, margin, offset, positionMode } = settings;\n const scale = this.scale || 1;\n const fixedMode = positionMode === 'fixed' || !this._dom.hasOffsetParent(element);\n const anchorRect = fixedMode ? this.absoluteRect(anchor, element, offset, scale) : this.relativeRect(anchor, element, offset, scale);\n const elementRect = scaleRect(this._dom.offset(element.nativeElement), scale);\n const result = this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin\n });\n return result;\n }\n absoluteRect(anchor, element, offset, scale) {\n const scrollPos = this.elementScrollPosition(anchor, element);\n const rect = eitherRect(this._dom.offset(anchor), offset);\n const stackScale = 2 * scale;\n const stackScroll = this._dom.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n const stackOffset = this._dom.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n return this._dom.removeScroll(this._dom.addScroll(removeStackingOffset(scaleRect(rect, scale), stackOffset), stackScroll), scrollPos);\n }\n elementScrollPosition(anchor, element) {\n return anchor ? { x: 0, y: 0 } : this._dom.scrollPosition(element);\n }\n relativeRect(anchor, element, offset, scale) {\n const rect = eitherRect(this._dom.position(anchor, element, scale), offset);\n return scaleRect(rect, scale);\n }\n}\nAlignService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAlignService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PositionService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n positionElement(settings) {\n const { anchor, currentLocation, element, anchorAlign, elementAlign, collisions, margin } = settings;\n const dom = this._dom;\n const scale = this.scale || 1;\n const elementOffset = dom.offsetAtPoint(element, currentLocation);\n const elementRect = scaleRect(elementOffset, scale);\n const anchorOffset = scaleRect(dom.offset(anchor), scale);\n const anchorRect = eitherRect(anchorOffset, currentLocation);\n const viewPort = settings.viewPort || dom.windowViewPort(element);\n viewPort.width = viewPort.width / scale;\n viewPort.height = viewPort.height / scale;\n const result = dom.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n const offset = dom.addOffset(currentLocation, result.offset);\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n }\n}\nPositionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPositionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ResizeService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n subscribe(callback) {\n if (!isDocumentAvailable()) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n this.subscription = fromEvent(this._dom.getWindow(), \"resize\")\n .pipe(auditTime(FRAME_DURATION))\n .subscribe(() => callback());\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isUnsubscribed() {\n return this.subscription && this.subscription.closed;\n }\n}\nResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst THRESHOLD_DIFF = 1;\n/**\n * @hidden\n */\nclass ScrollableService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n forElement(element) {\n this.unsubscribe();\n this.element = element;\n return this;\n }\n subscribe(callback) {\n if (!callback || !isDocumentAvailable() || !this.element) {\n return;\n }\n const parents = this._dom.scrollableParents(this.element);\n this._zone.runOutsideAngular(() => {\n const observables = parents.map(p => fromEvent(p, \"scroll\").pipe(auditTime(FRAME_DURATION)));\n const subscriber = (e) => {\n const target = e.target;\n const isParent = parents.filter(p => p === target).length > 0;\n const isDocument = target === document;\n const isWindow = target === window;\n if (isParent || isDocument || isWindow) {\n callback(this.isVisible(this.element, target));\n }\n };\n this.subscription = merge(...observables).subscribe(subscriber);\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isVisible(elem, container) {\n const elemRect = this._dom.boundingOffset(elem);\n const containerRect = this._dom.boundingOffset(this._dom.nativeElement(container));\n if (THRESHOLD_DIFF < (containerRect.top - elemRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.top - containerRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.left - containerRect.right)) {\n return false;\n }\n if (THRESHOLD_DIFF < (containerRect.left - elemRect.right)) {\n return false;\n }\n return true;\n }\n}\nScrollableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst DOWN = 'down';\nconst UP = 'up';\nconst DEFAULT_TYPE = 'slide';\nconst DEFAULT_DURATION = 100;\nconst animationTypes = {};\nanimationTypes.expand = (direction) => {\n const scale = direction === UP || direction === DOWN ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === DOWN) {\n origin = 'top';\n }\n else if (direction === LEFT) {\n origin = RIGHT;\n }\n else if (direction === RIGHT) {\n origin = LEFT;\n }\n else {\n origin = 'bottom';\n }\n return {\n start: { transform: `${scale}(${startScale})`, transformOrigin: origin },\n end: { transform: `${scale}(${endScale})` }\n };\n};\nanimationTypes.slide = (direction) => {\n const translate = direction === LEFT || direction === RIGHT ? 'translateX' : 'translateY';\n const start = direction === RIGHT || direction === DOWN ? -100 : 100;\n const end = 0;\n return {\n start: { transform: `${translate}(${start}%)` },\n end: { transform: `${translate}(${end}%)` }\n };\n};\nanimationTypes.fade = () => {\n return {\n start: { opacity: 0 },\n end: { opacity: 1 }\n };\n};\nanimationTypes.zoom = () => {\n const start = 0;\n const end = 1;\n return {\n start: { transform: `scale(${start})` },\n end: { transform: `scale(${end})` }\n };\n};\n/**\n * @hidden\n */\nclass AnimationService {\n constructor(animationBuilder) {\n this.animationBuilder = animationBuilder;\n this.start = new EventEmitter();\n this.end = new EventEmitter();\n }\n play(element, options, flip) {\n if (!this.flip || this.flip.horizontal !== flip.horizontal ||\n this.flip.vertical !== flip.vertical) {\n this.flip = flip;\n const type = options.type || DEFAULT_TYPE;\n const statesFn = animationTypes[type];\n if (statesFn) {\n const direction = this.getDirection(flip, options);\n const states = statesFn(direction);\n this.playStates(element, states, options);\n }\n else if (isDevMode()) {\n throw new Error(`Unsupported animation type: \"${type}\". The supported types are slide, expand, fade and zoom.`);\n }\n }\n }\n ngOnDestroy() {\n this.stopPlayer();\n }\n playStates(element, states, options) {\n this.stopPlayer();\n const duration = options.duration || DEFAULT_DURATION;\n const factory = this.animationBuilder.build([\n style(states.start),\n animate(`${duration}ms ease-in`, style(states.end))\n ]);\n const player = this.player = factory.create(element);\n player.onDone(() => {\n this.end.emit();\n this.stopPlayer();\n });\n this.start.emit();\n player.play();\n }\n getDirection(flip, options) {\n let direction = options.direction || DOWN;\n if (flip.horizontal) {\n if (direction === LEFT) {\n direction = RIGHT;\n }\n else if (direction === RIGHT) {\n direction = LEFT;\n }\n }\n if (flip.vertical) {\n if (direction === DOWN) {\n direction = UP;\n }\n else if (direction === UP) {\n direction = DOWN;\n }\n }\n return direction;\n }\n stopPlayer() {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n}\nAnimationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService, deps: [{ token: i1.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.AnimationBuilder }]; } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-popup',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440793,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DEFAULT_OFFSET = { left: -10000, top: 0 };\nconst ANIMATION_CONTAINER = 'k-animation-container';\nconst ANIMATION_CONTAINER_FIXED = 'k-animation-container-fixed';\n/**\n * Represents the [Kendo UI Popup component for Angular]({% slug overview_popup %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Popup content!\n * \n * `\n * })\n * class AppComponent {\n * public show: boolean = false;\n * }\n * ```\n */\nclass PopupComponent {\n constructor(container, _alignService, domService, _positionService, _resizeService, _scrollableService, animationService, _renderer, _zone) {\n this.container = container;\n this._alignService = _alignService;\n this.domService = domService;\n this._positionService = _positionService;\n this._resizeService = _resizeService;\n this._scrollableService = _scrollableService;\n this.animationService = animationService;\n this._renderer = _renderer;\n this._zone = _zone;\n /**\n * Controls the Popup animation. By default, the opening and closing animations\n * are enabled ([see example]({% slug animations_popup %})).\n */\n this.animate = true;\n /**\n * Specifies the anchor pivot point\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.anchorAlign = { horizontal: 'left', vertical: 'bottom' };\n /**\n * Configures the collision behavior of the Popup\n * ([see example]({% slug viewportboundarydetection_popup %})).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Specifies the pivot point of the Popup\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.popupAlign = { horizontal: 'left', vertical: 'top' };\n /**\n * Controls whether the component will copy the `anchor` font styles.\n */\n this.copyAnchorStyles = false;\n /**\n * Specifies the position mode of the component. By default, the Popup uses fixed positioning.\n * To make the Popup acquire absolute positioning, set this option to `absolute`.\n *\n * > If you need to support mobile browsers with the zoom option,\n * use the `absolute` positioning of the Popup.\n *\n * @example\n * ```html\n * \n * ```\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * Position mode:\n * \n * \n *
    \n *
    \n * Append to\n * \n * \n * \n *
    \n *
    \n *
    \n *
    \n * \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n *
    \n * `\n * })\n * class AppComponent {\n * public checked: number = 3;\n * public mode: string = 'absolute';\n * public show: boolean = true;\n * }\n * ```\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the absolute position of the element\n * ([see example]({% slug alignmentpositioning_popup %}#toc-aligning-to-absolute-points)).\n * The Popup opens next to that point. The Popup pivot point is defined by the `popupAlign` configuration option.\n * The boundary detection is applied by using the window viewport.\n */\n this.offset = DEFAULT_OFFSET;\n /**\n * Fires when the anchor is scrolled outside the screen boundaries.\n * ([see example]({% slug closing_popup %}#toc-after-leaving-the-viewport)).\n */\n this.anchorViewportLeave = new EventEmitter();\n /**\n * Fires after the component is closed.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the component is opened and the opening animation ends.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the component is opened and the Popup is positioned.\n */\n this.positionChange = new EventEmitter();\n this.resolvedPromise = Promise.resolve(null);\n this.initialCheck = true;\n validatePackage(packageMetadata);\n this._renderer.addClass(container.nativeElement, ANIMATION_CONTAINER);\n this.updateFixedClass();\n }\n ngOnInit() {\n this.reposition = this.reposition.bind(this);\n this._resizeService.subscribe(this.reposition);\n this.animationSubscriptions = this.animationService.start.subscribe(this.onAnimationStart.bind(this));\n this.animationSubscriptions.add(this.animationService.end.subscribe(this.onAnimationEnd.bind(this)));\n this._scrollableService.forElement(this.domService.nativeElement(this.anchor) || this.container.nativeElement).subscribe(this.onScroll.bind(this));\n this.currentOffset = DEFAULT_OFFSET;\n this.setZIndex();\n this.copyFontStyles();\n this.updateFixedClass();\n this.reposition();\n }\n ngOnChanges(changes) {\n if (changes.copyAnchorStyles) {\n this.copyFontStyles();\n }\n if (changes.positionMode) {\n this.updateFixedClass();\n }\n }\n ngAfterViewInit() {\n if (!this.animate) {\n this.resolvedPromise.then(() => {\n this.onAnimationEnd();\n });\n }\n }\n ngAfterViewChecked() {\n if (this.initialCheck) {\n this.initialCheck = false;\n return;\n }\n this._zone.runOutsideAngular(() => {\n // workarounds https://github.com/angular/angular/issues/19094\n // uses promise because it is executed synchronously after the content is updated\n // does not use onStable in case the current zone is not the angular one.\n this.unsubscribeReposition();\n this.repositionSubscription = from(this.resolvedPromise)\n .subscribe(this.reposition);\n });\n }\n ngOnDestroy() {\n this.anchorViewportLeave.complete();\n this.positionChange.complete();\n this.close.emit();\n this.close.complete();\n this._resizeService.unsubscribe();\n this._scrollableService.unsubscribe();\n this.animationSubscriptions.unsubscribe();\n this.unsubscribeReposition();\n }\n /**\n * @hidden\n */\n onResize() {\n this.reposition();\n }\n onAnimationStart() {\n this._renderer.removeClass(this.container.nativeElement, 'k-animation-container-shown');\n }\n onAnimationEnd() {\n this._renderer.addClass(this.container.nativeElement, 'k-animation-container-shown');\n this.open.emit();\n this.open.complete();\n }\n get currentOffset() {\n return this._currentOffset;\n }\n set currentOffset(offset) {\n this.setContainerStyle('left', `${offset.left}px`);\n this.setContainerStyle('top', `${offset.top}px`);\n this._currentOffset = offset;\n }\n setZIndex() {\n if (this.anchor) {\n this.setContainerStyle('z-index', String(this.domService.zIndex(this.domService.nativeElement(this.anchor), this.container)));\n }\n }\n reposition() {\n if (!isDocumentAvailable()) {\n return;\n }\n const { flip, offset } = this.position();\n if (!this.currentOffset || isDifferentOffset(this.currentOffset, offset)) {\n this.currentOffset = offset;\n if (hasObservers(this.positionChange)) {\n this._zone.run(() => this.positionChange.emit({ offset, flip }));\n }\n }\n if (this.animate) {\n this.animationService.play(this.contentContainer.nativeElement, this.animate, flip);\n }\n this.resizeSensor.acceptSize();\n }\n position() {\n const alignedOffset = this._alignService.alignElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin,\n offset: this.offset,\n positionMode: this.positionMode\n });\n return this._positionService.positionElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n collisions: this.collision,\n currentLocation: alignedOffset,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin\n });\n }\n onScroll(isInViewPort) {\n const hasLeaveObservers = hasObservers(this.anchorViewportLeave);\n if (isInViewPort || !hasLeaveObservers) {\n this.reposition();\n }\n else if (hasLeaveObservers) {\n this._zone.run(() => {\n this.anchorViewportLeave.emit();\n });\n }\n }\n copyFontStyles() {\n if (!this.anchor || !this.copyAnchorStyles) {\n return;\n }\n this.domService.getFontStyles(this.domService.nativeElement(this.anchor))\n .forEach(s => this.setContainerStyle(s.key, s.value));\n }\n updateFixedClass() {\n const action = this.positionMode === 'fixed' ? 'addClass' : 'removeClass';\n this._renderer[action](this.container.nativeElement, ANIMATION_CONTAINER_FIXED);\n }\n setContainerStyle(name, value) {\n this._renderer.setStyle(this.container.nativeElement, name, value);\n }\n unsubscribeReposition() {\n if (this.repositionSubscription) {\n this.repositionSubscription.unsubscribe();\n }\n }\n}\nPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupComponent, deps: [{ token: i0.ElementRef }, { token: AlignService }, { token: DOMService }, { token: PositionService }, { token: ResizeService }, { token: ScrollableService }, { token: AnimationService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopupComponent, selector: \"kendo-popup\", inputs: { animate: \"animate\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", collision: \"collision\", popupAlign: \"popupAlign\", copyAnchorStyles: \"copyAnchorStyles\", popupClass: \"popupClass\", positionMode: \"positionMode\", offset: \"offset\", margin: \"margin\" }, outputs: { anchorViewportLeave: \"anchorViewportLeave\", close: \"close\", open: \"open\", positionChange: \"positionChange\" }, providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService], viewQueries: [{ propertyName: \"contentContainer\", first: true, predicate: [\"container\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], exportAs: [\"kendo-popup\"], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n \n \n \n
    \n `, isInline: true, components: [{ type: i7.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i8.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i8.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendo-popup',\n providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService],\n selector: 'kendo-popup',\n template: `\n
    \n \n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AlignService }, { type: DOMService }, { type: PositionService }, { type: ResizeService }, { type: ScrollableService }, { type: AnimationService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { animate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], copyAnchorStyles: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], offset: [{\n type: Input\n }], margin: [{\n type: Input\n }], anchorViewportLeave: [{\n type: Output\n }], close: [{\n type: Output\n }], open: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], contentContainer: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }] } });\n\nconst removeElement = (element) => {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n};\n/**\n * Used to inject the Popup container. If not provided, the first root component of\n * the application is used.\n *\n * > The `POPUP_CONTAINER` can be used only with the [`PopupService`]({% slug service_popup %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule, POPUP_CONTAINER } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { ElementRef, NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: POPUP_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the popup will be injected\n * return { nativeElement: document.body } as ElementRef;\n * }\n * }]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nconst POPUP_CONTAINER = new InjectionToken('Popup Container');\n/**\n * A service for opening Popup components dynamically\n * ([see example]({% slug service_popup %})).\n *\n * @export\n * @class PopupService\n */\nclass PopupService {\n constructor(applicationRef, componentFactoryResolver, injector, container) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n this.container = container;\n }\n /**\n * Gets the root view container into which the component will be injected.\n *\n * @returns {ComponentRef}\n */\n get rootViewContainer() {\n // https://github.com/angular/angular/blob/4.0.x/packages/core/src/application_ref.ts#L571\n const rootComponents = this.applicationRef.components || [];\n if (rootComponents[0]) {\n return rootComponents[0];\n }\n throw new Error(`\n View Container not found! Inject the POPUP_CONTAINER or define a specific ViewContainerRef via the appendTo option.\n See http://www.telerik.com/kendo-angular-ui/components/popup/api/POPUP_CONTAINER/ for more details.\n `);\n }\n /**\n * Sets or gets the HTML element of the root component container.\n *\n * @returns {HTMLElement}\n */\n get rootViewContainerNode() {\n return this.container ? this.container.nativeElement : this.getComponentRootNode(this.rootViewContainer);\n }\n /**\n * Opens a Popup component. Created Popups are mounted\n * in the DOM directly in the root application component.\n *\n * @param {PopupSettings} options - The options which define the Popup.\n * @returns {ComponentRef} - A reference to the Popup object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Popup content\n * \n * \n * `\n * })\n * export class AppComponent {\n * public popupRef: PopupRef;\n *\n * constructor( private popupService: PopupService ) {}\n *\n * public open(anchor: ElementRef, template: TemplateRef): void {\n * if (this.popupRef) {\n * this.popupRef.close();\n * this.popupRef = null;\n * return;\n * }\n *\n * this.popupRef = this.popupService.open({\n * anchor: anchor,\n * content: template\n * });\n * }\n * }\n * ```\n */\n open(options = {}) {\n const { component, nodes } = this.contentFrom(options.content);\n const popupComponentRef = this.appendPopup(nodes, options.appendTo);\n const popupInstance = popupComponentRef.instance;\n this.projectComponentInputs(popupComponentRef, options);\n popupComponentRef.changeDetectorRef.detectChanges();\n if (component) {\n component.changeDetectorRef.detectChanges();\n }\n const popupElement = this.getComponentRootNode(popupComponentRef);\n return {\n close: () => {\n if (component) {\n component.destroy();\n }\n popupComponentRef.destroy();\n // Angular will not remove the element unless the change detection is triggered\n removeElement(popupElement);\n },\n content: component,\n popup: popupComponentRef,\n popupAnchorViewportLeave: popupInstance.anchorViewportLeave,\n popupClose: popupInstance.close,\n popupElement: popupElement,\n popupOpen: popupInstance.open,\n popupPositionChange: popupInstance.positionChange\n };\n }\n appendPopup(nodes, container) {\n const popupComponentRef = this.createComponent(PopupComponent, nodes, container);\n if (!container) {\n this.rootViewContainerNode.appendChild(this.getComponentRootNode(popupComponentRef));\n }\n return popupComponentRef;\n }\n /**\n * Gets the HTML element for a component reference.\n *\n * @param {ComponentRef} componentRef\n * @returns {HTMLElement}\n */\n getComponentRootNode(componentRef) {\n return componentRef.location.nativeElement;\n }\n /**\n * Gets the `ComponentFactory` instance by its type.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n getComponentFactory(componentClass) {\n return this.componentFactoryResolver.resolveComponentFactory(componentClass);\n }\n /**\n * Creates a component reference from a `Component` type class.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n createComponent(componentClass, nodes, container) {\n const factory = this.getComponentFactory(componentClass);\n if (container) {\n return container.createComponent(factory, undefined, this.injector, nodes);\n }\n else {\n const component = factory.create(this.injector, nodes);\n this.applicationRef.attachView(component.hostView);\n return component;\n }\n }\n /**\n * Projects the inputs on the component.\n *\n * @param {ComponentRef} component\n * @param {*} options\n * @returns {ComponentRef}\n */\n projectComponentInputs(component, options) {\n Object.getOwnPropertyNames(options)\n .filter(prop => prop !== 'content' || options.content instanceof TemplateRef)\n .map((prop) => {\n component.instance[prop] = options[prop];\n });\n return component;\n }\n /**\n * Gets the component and the nodes to append from the `content` option.\n *\n * @param {*} content\n * @returns {any}\n */\n contentFrom(content) {\n if (!content || content instanceof TemplateRef) {\n return { component: null, nodes: [[]] };\n }\n const component = this.createComponent(content);\n const nodes = component ? [component.location.nativeElement] : [];\n return {\n component: component,\n nodes: [\n nodes // \n ]\n };\n }\n}\nPopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: POPUP_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [POPUP_CONTAINER]\n }, {\n type: Optional\n }] }]; } });\n\nconst POPUP_DIRECTIVES = [PopupComponent];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Popup component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PopupModule {\n}\nPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, declarations: [PopupComponent], imports: [CommonModule, ResizeSensorModule], exports: [PopupComponent] });\nPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, providers: [PopupService], imports: [[CommonModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [POPUP_DIRECTIVES],\n entryComponents: [POPUP_DIRECTIVES],\n exports: [POPUP_DIRECTIVES],\n imports: [CommonModule, ResizeSensorModule],\n providers: [PopupService]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { POPUP_CONTAINER, PopupComponent, PopupModule, PopupService, SCALE };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Directive, Optional, Component, HostBinding, Input, Output, forwardRef, isDevMode, ViewContainerRef, ChangeDetectionStrategy, ViewChild, ContentChild, Host, NgModule } from '@angular/core';\nimport { isDocumentAvailable, Keys, guid, anyChanged, hasObservers, isChanged } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subject, of, Subscription, EMPTY, BehaviorSubject, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, setter } from '@progress/kendo-common';\nimport * as i8 from '@progress/kendo-angular-inputs';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { filter, tap, switchMap, delay, takeUntil, catchError, finalize, take, map } from 'rxjs/operators';\nimport * as i9 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport Draggable from '@telerik/kendo-draggable';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-treeview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1651820172,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass DataChangeNotificationService {\n constructor() {\n this.changes = new EventEmitter();\n }\n notify() {\n this.changes.emit();\n }\n}\n\n/**\n * @hidden\n */\nconst hasChildren = () => false;\n/**\n * @hidden\n */\nconst isChecked = () => 'none';\n/**\n * @hidden\n */\nconst isDisabled = () => false;\n/**\n * @hidden\n */\nconst isExpanded = () => true;\n/**\n * @hidden\n */\nconst isSelected = () => false;\n/**\n * @hidden\n */\nconst isVisible = () => true;\n/**\n * @hidden\n */\nconst trackBy = (_, item) => item;\n\n/**\n * @hidden\n */\nclass ExpandStateService {\n constructor() {\n this.changes = new Subject();\n }\n expand(index, dataItem) {\n this.changes.next({ dataItem, index, expand: true });\n }\n collapse(index, dataItem) {\n this.changes.next({ dataItem, index, expand: false });\n }\n}\nExpandStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExpandStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass IndexBuilderService {\n constructor() {\n this.INDEX_SEPARATOR = '_';\n }\n nodeIndex(index = '', parentIndex = '') {\n return `${parentIndex}${parentIndex ? this.INDEX_SEPARATOR : ''}${index}`;\n }\n indexForLevel(index, level) {\n return index.split(this.INDEX_SEPARATOR).slice(0, level).join(this.INDEX_SEPARATOR);\n }\n lastLevelIndex(index = '') {\n const parts = index.split(this.INDEX_SEPARATOR);\n if (!parts.length) {\n return NaN;\n }\n return parseInt(parts[parts.length - 1], 10);\n }\n level(index) {\n return index.split(this.INDEX_SEPARATOR).length;\n }\n}\nIndexBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIndexBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass LoadingNotificationService {\n constructor() {\n this.changes = new Subject();\n }\n notifyLoaded(index) {\n this.changes.next(index);\n }\n}\nLoadingNotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLoadingNotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService, decorators: [{\n type: Injectable\n }] });\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst match = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n */\nconst closestWithMatch = (element, selector) => {\n if (!document.documentElement.contains(element)) {\n return null;\n }\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (match(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n */\nconst noop = () => { };\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nconst isBoolean = (value) => typeof value === 'boolean';\n/**\n * @hidden\n */\nconst closestNode = (element) => {\n const selector = 'li.k-treeview-item';\n if (!isDocumentAvailable()) {\n return null;\n }\n if (element.closest) {\n return element.closest(selector);\n }\n else {\n return closestWithMatch(element, selector);\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst isContent = (element) => {\n const scopeSelector = '.k-treeview-leaf:not(.k-treeview-load-more-button),.k-treeview-item,.k-treeview';\n if (!isDocumentAvailable()) {\n return null;\n }\n let node = element;\n while (node && !match(node, scopeSelector)) {\n node = node.parentNode;\n }\n if (node) {\n return match(node, '.k-treeview-leaf:not(.k-treeview-load-more-button)');\n }\n};\n/**\n * @hidden\n *\n * Returns the nested .k-treeview-leaf:not(.k-treeview-load-more-button) element.\n * If the passed parent item is itself a content node, it is returned.\n */\nconst getContentElement = (parent) => {\n if (!isPresent(parent)) {\n return null;\n }\n const selector = '.k-treeview-leaf:not(.k-treeview-load-more-button)';\n if (match(parent, selector)) {\n return parent;\n }\n return parent.querySelector(selector);\n};\n/**\n * @hidden\n */\nconst isLoadMoreButton = (element) => {\n return isPresent(closestWithMatch(element, '.k-treeview-leaf.k-treeview-load-more-button'));\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst hasParent = (element, container) => {\n return Boolean(closest(element, (node) => node === container));\n};\n/**\n * @hidden\n */\nconst focusableNode = (element) => element.nativeElement.querySelector('li[tabindex=\"0\"]');\n/**\n * @hidden\n */\nconst hasActiveNode = (target, node) => {\n const closestItem = node || closestNode(target);\n return closestItem && (closestItem === target || target.tabIndex < 0);\n};\n/**\n * @hidden\n */\nconst nodeId = (node) => node ? node.getAttribute('data-treeindex') : '';\n/**\n * @hidden\n */\nconst nodeIndex = (item) => (item || {}).index;\n/**\n * @hidden\n */\nconst dataItemsEqual = (first, second) => {\n if (!isPresent(first) && !isPresent(second)) {\n return true;\n }\n return isPresent(first) && isPresent(second) && first.item.dataItem === second.item.dataItem;\n};\n/**\n * @hidden\n */\nconst getDataItem = (lookup) => {\n if (!isPresent(lookup)) {\n return lookup;\n }\n return lookup.item.dataItem;\n};\n/**\n * @hidden\n */\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\n/**\n * @hidden\n * A recursive tree-filtering algorithm that returns:\n * - all child nodes of matching nodes\n * - a chain parent nodes from the match to the root node\n */\nconst filterTree = (items, term, { operator, ignoreCase, mode }, textField, depth = 0) => {\n const field = typeof textField === \"string\" ? textField : textField[depth];\n items.forEach((wrapper) => {\n const matcher = typeof operator === \"string\" ? matchByFieldAndCase(field, operator, ignoreCase) : operator;\n const isMatch = matcher(wrapper.dataItem, term);\n wrapper.isMatch = isMatch;\n wrapper.visible = isMatch;\n wrapper.containsMatches = false;\n if (isMatch) {\n setParentChain(wrapper.parent);\n }\n if (wrapper.children && wrapper.children.length > 0) {\n if (mode === \"strict\" || !isMatch) {\n filterTree(wrapper.children, term, { operator, ignoreCase, mode }, textField, depth + 1);\n }\n else {\n makeAllVisible(wrapper.children);\n }\n }\n });\n};\nconst setParentChain = (node) => {\n if (!isPresent(node)) {\n return;\n }\n node.containsMatches = true;\n node.visible = true;\n if (isPresent(node.parent) && !node.parent.containsMatches) {\n setParentChain(node.parent);\n }\n};\nconst makeAllVisible = (nodes) => {\n nodes.forEach(node => {\n node.visible = true;\n if (node.children) {\n makeAllVisible(node.children);\n }\n });\n};\nconst operators = {\n contains: (a, b) => a.indexOf(b) >= 0,\n doesnotcontain: (a, b) => a.indexOf(b) === -1,\n startswith: (a, b) => a.lastIndexOf(b, 0) === 0,\n doesnotstartwith: (a, b) => a.lastIndexOf(b, 0) === -1,\n endswith: (a, b) => a.indexOf(b, a.length - b.length) >= 0,\n doesnotendwith: (a, b) => a.indexOf(b, a.length - b.length) < 0\n};\nconst matchByCase = (matcher, ignoreCase) => (a, b) => {\n if (ignoreCase) {\n return matcher(a.toLowerCase(), b.toLowerCase());\n }\n return matcher(a, b);\n};\nconst matchByFieldAndCase = (field, operator, ignoreCase) => (dataItem, term) => matchByCase(operators[operator], ignoreCase)(getter(field)(dataItem), term);\n/**\n * @hidden\n */\nconst buildTreeIndex = (parentIndex, itemIndex) => {\n return [parentIndex, itemIndex].filter(part => isPresent(part)).join('_');\n};\n/**\n * @hidden\n */\nconst buildTreeItem = (dataItem, currentLevelIndex, parentIndex) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n return {\n dataItem,\n index: buildTreeIndex(parentIndex, currentLevelIndex)\n };\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchLoadedDescendants = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(filterExpression);\n }\n descendants.forEach(child => descendants = descendants.concat(fetchLoadedDescendants(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Compares two Seets to determine whether all unique elements in one, are present in the other.\n * Important:\n * - it disregards the element order\n */\nconst sameValues = (as, bs) => {\n if (as.size !== bs.size) {\n return false;\n }\n return Array.from(as).every(v => bs.has(v));\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n\nconst safe = node => (node || {});\nconst safeChildren = node => (safe(node).children || []);\nconst lastVisibleNode = (nodes) => {\n if (!Array.isArray(nodes) || nodes.length === 0) {\n return null;\n }\n const nodesCount = nodes.length;\n const lastIndex = nodesCount - 1;\n for (let index = lastIndex; index >= 0; index -= 1) {\n const node = nodes[index];\n if (node.visible) {\n return node;\n }\n }\n return null;\n};\n/**\n * @hidden\n */\nclass NavigationModel {\n constructor() {\n this.ib = new IndexBuilderService();\n this.nodes = [];\n }\n firstVisibleNode() {\n return (this.nodes || []).find(node => node.visible);\n }\n lastVisibleNode() {\n let node = lastVisibleNode(this.nodes);\n while (isPresent(node) && safeChildren(node).length > 0) {\n const children = safeChildren(node);\n const lastVisibleChild = lastVisibleNode(children);\n if (!isPresent(lastVisibleChild)) {\n return node;\n }\n node = lastVisibleChild;\n }\n return node;\n }\n closestNode(index) {\n const { prev } = safe(this.findNode(index));\n const sibling = prev || this.firstVisibleNode();\n return safe(sibling).index === index ? this.visibleSibling(sibling, 1) : sibling;\n }\n firstFocusableNode() {\n return this.nodes.find((node) => {\n return !node.disabled && node.visible;\n });\n }\n findNode(index) {\n return this.find(index, this.nodes);\n }\n findParent(index) {\n const parentLevel = this.ib.level(index) - 1;\n return this.findNode(this.ib.indexForLevel(index, parentLevel));\n }\n findVisibleChild(index) {\n const node = this.findNode(index);\n const children = safeChildren(node);\n return children.find((child) => child.visible);\n }\n findVisiblePrev(item) {\n const index = item.index;\n const parent = this.findParent(index);\n const levelIndex = this.ib.lastLevelIndex(index);\n const prevNodes = this.container(parent).slice(0, levelIndex);\n const prevNodesHidden = prevNodes.every(node => !node.visible);\n if (levelIndex === 0 || prevNodesHidden) {\n return parent;\n }\n const currentNode = this.findNode(index);\n let prev = this.visibleSibling(currentNode, -1);\n if (prev) {\n let children = this.container(prev);\n while (children.length > 0 && children.some(node => node.visible)) {\n prev = lastVisibleNode(children);\n children = this.container(prev);\n }\n }\n return prev;\n }\n findVisibleNext(item) {\n const children = this.container(item);\n const hasVisibleChildren = children.some(child => child.visible);\n if (children.length === 0 || !hasVisibleChildren) {\n return this.visibleSibling(item, 1);\n }\n return children.find(child => child.visible);\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const children = [];\n const level = this.ib.level(index);\n const parent = this.findParent(index);\n if (parent || level === 1) {\n const node = { id, children, index, parent, disabled, loadMoreButton, visible };\n this.insert(node, parent);\n }\n }\n unregisterItem(id, index) {\n const node = this.find(index, this.nodes);\n if (!node || node.id !== id) {\n return;\n }\n const children = this.container(node.parent);\n children.splice(children.indexOf(node), 1);\n }\n childLevel(nodes) {\n const children = nodes.filter(node => isPresent(node));\n if (!children || !children.length) {\n return 1;\n }\n return this.ib.level(children[0].index);\n }\n container(node) {\n return node ? node.children : this.nodes;\n }\n find(index, nodes) {\n const childLevel = this.childLevel(nodes);\n const indexToMatch = this.ib.indexForLevel(index, childLevel);\n const isLeaf = childLevel === this.ib.level(index);\n const node = nodes.find(n => n && n.index === indexToMatch);\n if (!node) {\n return null;\n }\n return isLeaf ? node : this.find(index, node.children);\n }\n insert(node, parent) {\n const nodes = this.container(parent);\n nodes.splice(this.ib.lastLevelIndex(node.index), 0, node);\n }\n visibleSibling(node, offset) {\n if (!node) {\n return null;\n }\n const parent = this.findParent(node.index);\n const container = this.container(parent);\n let nextItemIndex = container.indexOf(node) + offset;\n let nextItem = container[nextItemIndex];\n while (isPresent(nextItem)) {\n if (nextItem.visible) {\n return nextItem;\n }\n nextItemIndex += offset;\n nextItem = container[nextItemIndex];\n }\n return this.visibleSibling(parent, offset);\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(localization) {\n this.localization = localization;\n this.expands = new Subject();\n this.moves = new Subject();\n this.checks = new Subject();\n this.selects = new Subject();\n this.loadMore = new Subject();\n this.navigable = true;\n this.actions = {\n [Keys.ArrowUp]: () => this.activate(this.model.findVisiblePrev(this.focusableItem), true),\n [Keys.ArrowDown]: () => this.activate(this.model.findVisibleNext(this.focusableItem), true),\n [Keys.ArrowLeft]: () => !this.isLoadMoreButton && (this.expand({\n expand: this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToFirstVisibleChild : this.moveToParent\n })),\n [Keys.ArrowRight]: () => !this.isLoadMoreButton && (this.expand({\n expand: !this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToParent : this.moveToFirstVisibleChild\n })),\n [Keys.Home]: () => this.activate(this.model.firstVisibleNode(), true),\n [Keys.End]: () => this.activate(this.model.lastVisibleNode(), true),\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Space]: () => this.handleSpace()\n };\n this.isFocused = false;\n this.shouldScroll = false;\n this._model = new NavigationModel();\n this.moveToFirstVisibleChild = this.moveToFirstVisibleChild.bind(this);\n this.moveToParent = this.moveToParent.bind(this);\n }\n get model() {\n return this._model;\n }\n set model(model) {\n this._model = model;\n }\n get activeIndex() {\n return nodeIndex(this.activeItem) || null;\n }\n get isActiveExpanded() {\n return this.activeItem && this.activeItem.children.length > 0;\n }\n get isLoadMoreButton() {\n return this.activeItem && this.activeItem.loadMoreButton;\n }\n get focusableItem() {\n return this.activeItem || this.model.firstFocusableNode();\n }\n activate(item, shouldScroll = false) {\n if (!this.navigable || !item || this.isActive(nodeIndex(item))) {\n return;\n }\n this.isFocused = true;\n this.activeItem = item || this.activeItem;\n this.shouldScroll = shouldScroll;\n this.notifyMove();\n }\n activateParent(index) {\n this.activate(this.model.findParent(index));\n }\n activateIndex(index) {\n if (!index) {\n return;\n }\n this.activate(this.model.findNode(index));\n }\n activateClosest(index) {\n if (!index || nodeIndex(this.focusableItem) !== index) {\n return;\n }\n this.activeItem = this.model.closestNode(index);\n this.notifyMove();\n }\n activateFocusable() {\n if (this.activeItem) {\n return;\n }\n this.activeItem = this.model.firstVisibleNode();\n this.notifyMove();\n }\n deactivate() {\n if (!this.navigable || !this.isFocused) {\n return;\n }\n this.isFocused = false;\n this.notifyMove();\n }\n checkIndex(index) {\n if (!this.isDisabled(index)) {\n this.checks.next(index);\n }\n }\n selectIndex(index) {\n if (!this.isDisabled(index)) {\n this.selects.next(index);\n }\n }\n notifyLoadMore(index) {\n if (!isPresent(index)) {\n return;\n }\n this.loadMore.next(index);\n }\n isActive(index) {\n if (!index) {\n return false;\n }\n return this.isFocused && this.activeIndex === index;\n }\n isFocusable(index) {\n return nodeIndex(this.focusableItem) === index;\n }\n isDisabled(index) {\n return this.model.findNode(index).disabled;\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const itemAtIndex = this.model.findNode(index);\n if (isPresent(itemAtIndex)) {\n this.model.unregisterItem(itemAtIndex.id, itemAtIndex.index);\n if (this.isActive(index)) {\n this.deactivate();\n }\n }\n this.model.registerItem(id, index, disabled, loadMoreButton, visible);\n }\n unregisterItem(id, index) {\n if (this.isActive(index)) {\n this.activateParent(index);\n }\n this.model.unregisterItem(id, index);\n }\n move(e) {\n if (!this.navigable) {\n return;\n }\n const moveAction = this.actions[e.keyCode];\n if (!moveAction) {\n return;\n }\n moveAction();\n e.preventDefault();\n }\n expand({ expand, intercept }) {\n const index = nodeIndex(this.activeItem);\n if (!index || intercept(index)) {\n return;\n }\n this.notifyExpand(expand);\n }\n moveToParent() {\n if (this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findParent(nodeIndex(this.activeItem)));\n return true;\n }\n moveToFirstVisibleChild() {\n if (!this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findVisibleChild(nodeIndex(this.activeItem)));\n return true;\n }\n notifyExpand(expand) {\n this.expands.next(this.navigationState(expand));\n }\n notifyMove() {\n this.moves.next(this.navigationState());\n }\n navigationState(expand = false) {\n return ({ expand, index: this.activeIndex, isFocused: this.isFocused, shouldScroll: this.shouldScroll });\n }\n handleEnter() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.selectIndex(this.activeIndex);\n }\n }\n handleSpace() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.checkIndex(this.activeIndex);\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass NodeChildrenService {\n constructor() {\n this.changes = new Subject();\n }\n childrenLoaded(item, children) {\n this.changes.next({ item, children });\n }\n}\nNodeChildrenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNodeChildrenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Represents the template for the TreeView nodes ([more information and example]({% slug nodetemplate_treeview %})).\n * The template helps to customize the content of the nodes. To define the node template, nest an ``\n * tag with the `kendoTreeViewNodeTemplate` directive inside a `` tag.\n *\n *\n * The node data item and its hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - available as implicit context variable\n * - `let-index=\"index\"` (`string`)\n *\n *\n * @example\n * ```ts\n *\n * import { Component } from '@angular/core';\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ index }}: {{ dataItem.text }}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * {\n * text: \"Inbox\",\n * items: [{ text: \"Read Mail\" }]\n * },\n * {\n * text: \"Drafts\"\n * },\n * {\n * text: \"Search Folders\",\n * items: [\n * { text: \"Categorized Mail\" },\n * { text: \"Large Mail\" },\n * { text: \"Unread Mail\"}\n * ]\n * },\n * { text: \"Settings\" }\n * ];\n * }\n *\n * ```\n */\nclass NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NodeTemplateDirective, selector: \"[kendoTreeViewNodeTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewNodeTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the TreeView load more buttons.\n * To define a button template, nest an ``\n * tag with the `kendoTreeViewLoadMoreButtonTemplate` directive inside a `` tag\n * ([see example]({% slug loadmorebutton_treeview %}#toc-button-template)).\n *\n * The hierarchical index of the load more button node is available as a context variable:\n *\n * - `let-index=\"index\"` (`string`)\n */\nclass LoadMoreButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nLoadMoreButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nLoadMoreButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadMoreButtonTemplateDirective, selector: \"[kendoTreeViewLoadMoreButtonTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreButtonTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMoreButtonTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n *\n * An injection token used by the data binding directives to interface with\n * the TreeView or the DropDownTree components.\n */\nclass DataBoundComponent {\n}\nDataBoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDataBoundComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n *\n * An injection token used by the expand-directive to interface with\n * the TreeView or the DropDownTree components.\n */\nclass ExpandableComponent {\n}\nExpandableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExpandableComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor() {\n this.changes = new Subject();\n }\n isFirstSelected(index) {\n return this.firstIndex === index;\n }\n setFirstSelected(index, selected) {\n if (this.firstIndex === index && selected === false) {\n this.firstIndex = null;\n }\n else if (!this.firstIndex && selected) {\n this.firstIndex = index;\n }\n }\n select(index, dataItem) {\n this.changes.next({ dataItem, index });\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }] });\n\nconst INDEX_REGEX = /\\d+$/;\n/**\n * @hidden\n */\nclass TreeViewLookupService {\n constructor() {\n this.map = new Map();\n }\n reset() {\n this.map.clear();\n }\n registerItem(item, parent) {\n const currentLookup = {\n children: [],\n item,\n parent: this.item(nodeIndex(parent))\n };\n this.map.set(item.index, currentLookup);\n }\n registerChildren(index, children) {\n const item = this.item(index);\n if (!item) {\n return;\n }\n item.children = children;\n }\n unregisterItem(index, dataItem) {\n const current = this.item(index);\n if (current && current.item.dataItem === dataItem) {\n this.map.delete(index);\n if (current.parent && current.parent.children) {\n current.parent.children = current.parent.children.filter(item => item.dataItem !== dataItem);\n }\n }\n }\n replaceItem(index, item, parent) {\n if (!item) {\n return;\n }\n this.unregisterItem(index, item.dataItem);\n this.registerItem(item, parent);\n this.addToParent(item, parent);\n }\n itemLookup(index) {\n const item = this.item(index);\n if (!item) {\n return null;\n }\n return {\n children: this.mapChildren(item.children),\n item: item.item,\n parent: item.parent\n };\n }\n hasItem(index) {\n return this.map.has(index);\n }\n item(index) {\n return this.map.get(index) || null;\n }\n addToParent(item, parent) {\n if (parent) {\n const parentItem = this.item(parent.index);\n const index = parseInt(INDEX_REGEX.exec(item.index)[0], 10);\n parentItem.children = parentItem.children || [];\n parentItem.children.splice(index, 0, item);\n }\n }\n mapChildren(children = []) {\n return children.map(c => {\n const { item, parent, children } = this.item(c.index);\n return {\n children: this.mapChildren(children),\n item,\n parent\n };\n });\n }\n}\nTreeViewLookupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTreeViewLookupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n *\n * Represents the CheckBox component of the Kendo UI TreeView for Angular.\n *\n */\nclass CheckBoxComponent {\n constructor(element, renderer, changeDetector) {\n this.element = element;\n this.renderer = renderer;\n this.changeDetector = changeDetector;\n /**\n * Specifies the [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) of the component.\n */\n this.id = `_${guid()}`;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Specifies the size of the component.\n */\n this.size = 'medium';\n /**\n * Fires when the user changes the check state of the component.\n */\n this.checkStateChange = new EventEmitter();\n this.checkState = 'none';\n }\n //XXX: implement ComponentValueAccessor\n //XXX: focus/blur methods\n get classWrapper() { return true; }\n get indeterminate() {\n return this.checkState === 'indeterminate';\n }\n get checked() {\n return this.checkState === 'checked';\n }\n get checkBoxClasses() {\n return `k-checkbox ${this.size ? getSizeClass('checkbox', this.size) : ''} k-rounded-md`;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.element.nativeElement, \"tabindex\");\n }\n ngDoCheck() {\n this.checkState = this.isChecked(this.node, this.index);\n }\n handleChange(e) {\n const state = e.target.checked ? 'checked' : 'none';\n // update the View State so that Angular updates the input if the isChecked value is the same\n this.checkState = state;\n this.changeDetector.detectChanges();\n this.checkStateChange.emit(state);\n }\n}\nCheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nCheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckBoxComponent, selector: \"kendo-checkbox\", inputs: { id: \"id\", isChecked: \"isChecked\", node: \"node\", index: \"index\", labelText: \"labelText\", tabindex: \"tabindex\", size: \"size\" }, outputs: { checkStateChange: \"checkStateChange\" }, host: { properties: { \"class.k-checkbox-wrapper\": \"this.classWrapper\" } }, ngImport: i0, template: `\n \n {{labelText}}\n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-checkbox',\n template: `\n \n {{labelText}}\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { classWrapper: [{\n type: HostBinding,\n args: ['class.k-checkbox-wrapper']\n }], id: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], node: [{\n type: Input\n }], index: [{\n type: Input\n }], labelText: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], checkStateChange: [{\n type: Output\n }] } });\n\nconst buildItem = (index, dataItem) => ({ dataItem, index });\nlet id = 0;\nconst TREE_ITEM_ROLE = 'treeitem';\nconst BUTTON_ROLE = 'button';\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nclass TreeViewItemDirective {\n constructor(element, expandService, navigationService, selectionService, lookupService, renderer, ib) {\n this.element = element;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.lookupService = lookupService;\n this.renderer = renderer;\n this.ib = ib;\n this.role = TREE_ITEM_ROLE;\n this.loadOnDemand = true;\n this.isDisabled = false;\n this.isVisible = true;\n this.ariaChecked = 'false';\n this.id = id++;\n this.isInitialized = false;\n this.subscriptions = [];\n this.subscribe();\n }\n set isChecked(checked) {\n if (checked === 'checked') {\n this.ariaChecked = 'true';\n }\n else if (checked === 'indeterminate') {\n this.ariaChecked = 'mixed';\n }\n else {\n this.ariaChecked = 'false';\n }\n }\n get isExpanded() {\n return this._isExpanded || false;\n }\n set isExpanded(isExpanded) {\n this._isExpanded = isExpanded;\n }\n get isSelected() {\n return this._isSelected || false;\n }\n set isSelected(isSelected) {\n this._isSelected = isSelected;\n }\n get isButton() {\n return this.role === BUTTON_ROLE;\n }\n get treeItem() {\n return buildItem(this.index, this.dataItem);\n }\n get parentTreeItem() {\n return this.parentDataItem ? buildItem(this.parentIndex, this.parentDataItem) : null;\n }\n ngOnInit() {\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.registerItem(this.treeItem, this.parentTreeItem);\n }\n this.registerNavigationItem();\n this.isInitialized = true;\n this.setAttribute('role', this.role);\n this.setAriaAttributes();\n this.setDisabledClass();\n this.updateTabIndex();\n }\n ngOnChanges(changes) {\n const { index, isDisabled } = changes;\n if (anyChanged(['index', 'checkable', 'isChecked', 'expandable', 'isExpanded', 'selectable', 'isSelected'], changes)) {\n this.setAriaAttributes();\n }\n if (isDisabled) {\n this.setDisabledClass();\n }\n if (this.loadOnDemand && !this.isButton) {\n this.moveLookupItem(changes);\n }\n this.moveNavigationItem(index);\n if (anyChanged(['isDisabled', 'isVisible'], changes)) {\n this.updateNodeAvailability();\n }\n }\n ngOnDestroy() {\n this.navigationService.unregisterItem(this.id, this.index);\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.unregisterItem(this.index, this.dataItem);\n }\n this.subscriptions = this.subscriptions.reduce((list, callback) => (callback.unsubscribe(), list), []);\n }\n subscribe() {\n this.subscriptions = [\n this.navigationService.moves\n .subscribe((navState) => {\n this.updateTabIndex();\n this.focusItem(navState.shouldScroll);\n }),\n this.navigationService.expands\n .pipe(filter(({ index }) => index === this.index && !this.isDisabled))\n .subscribe(({ expand }) => this.expand(expand))\n ];\n }\n registerNavigationItem() {\n this.navigationService.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n this.activateItem();\n }\n activateItem() {\n if (this.isDisabled) {\n return;\n }\n const navigationService = this.navigationService;\n const selectionService = this.selectionService;\n const index = this.index;\n selectionService.setFirstSelected(index, this.isSelected);\n if (!navigationService.isActive(index) && selectionService.isFirstSelected(index)) {\n navigationService.activateIndex(index);\n }\n }\n expand(shouldExpand) {\n this.expandService[shouldExpand ? 'expand' : 'collapse'](this.index, this.dataItem);\n }\n isFocusable() {\n return !this.isDisabled && this.navigationService.isFocusable(this.index);\n }\n focusItem(scrollIntoView = false) {\n if (this.isInitialized && this.navigationService.isActive(this.index)) {\n this.element.nativeElement.focus({ preventScroll: !scrollIntoView });\n }\n }\n moveLookupItem(changes = {}) {\n const { dataItem, index, parentDataItem, parentIndex } = changes;\n if ((index && index.firstChange) || //skip first change\n (!dataItem && !index && !parentDataItem && !parentIndex)) {\n return;\n }\n const oldIndex = (index || {}).previousValue || this.index;\n this.lookupService.replaceItem(oldIndex, this.treeItem, this.parentTreeItem);\n }\n moveNavigationItem(indexChange = {}) {\n const { currentValue, firstChange, previousValue } = indexChange;\n if (!firstChange && isPresent(currentValue) && isPresent(previousValue)) {\n this.navigationService.unregisterItem(this.id, previousValue);\n this.navigationService.registerItem(this.id, currentValue, this.isDisabled, this.isButton);\n }\n }\n updateNodeAvailability() {\n const service = this.navigationService;\n if (this.isDisabled || !this.isVisible) {\n service.activateClosest(this.index); // activate before unregister the item\n }\n else {\n service.activateFocusable();\n }\n service.unregisterItem(this.id, this.index);\n service.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n }\n setAriaAttributes() {\n this.setAttribute('aria-level', this.ib.level(this.index).toString());\n // don't render attributes when the component configuration doesn't allow the specified state\n this.setAttribute('aria-expanded', this.expandable ? this.isExpanded.toString() : null);\n this.setAttribute('aria-selected', this.selectable ? this.isSelected.toString() : null);\n this.setAttribute('aria-checked', this.checkable ? this.ariaChecked : null);\n }\n setDisabledClass() {\n this.setClass('k-disabled', this.isDisabled);\n }\n setClass(className, toggle) {\n const action = toggle ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n updateTabIndex() {\n this.setAttribute('tabIndex', this.isFocusable() ? '0' : '-1');\n }\n setAttribute(attr, value) {\n if (!isPresent(value)) {\n this.renderer.removeAttribute(this.element.nativeElement, attr);\n return;\n }\n this.renderer.setAttribute(this.element.nativeElement, attr, value);\n }\n}\nTreeViewItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemDirective, deps: [{ token: i0.ElementRef }, { token: ExpandStateService }, { token: NavigationService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.Renderer2 }, { token: IndexBuilderService }], target: i0.ɵɵFactoryTarget.Directive });\nTreeViewItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewItemDirective, selector: \"[kendoTreeViewItem]\", inputs: { dataItem: \"dataItem\", index: \"index\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", role: \"role\", loadOnDemand: \"loadOnDemand\", checkable: \"checkable\", selectable: \"selectable\", expandable: \"expandable\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isVisible: \"isVisible\", isExpanded: \"isExpanded\", isSelected: \"isSelected\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItem]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ExpandStateService }, { type: NavigationService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: i0.Renderer2 }, { type: IndexBuilderService }]; }, propDecorators: { dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], role: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], checkable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], expandable: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LoadingIndicatorDirective {\n constructor(expandService, loadingService, cd) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.cd = cd;\n this._loading = false;\n }\n get loading() {\n return this._loading;\n }\n set loading(value) {\n this._loading = value;\n this.cd.markForCheck();\n }\n ngOnInit() {\n const loadingNotifications = this.loadingService\n .changes\n .pipe(filter(index => index === this.index));\n this.subscription = this.expandService\n .changes\n .pipe(filter(({ index }) => index === this.index), tap(({ expand }) => {\n if (!expand && this.loading) {\n this.loading = false;\n }\n }), filter(({ expand }) => expand), switchMap(x => of(x).pipe(delay(100), takeUntil(loadingNotifications))))\n .subscribe(() => this.loading = true);\n this.subscription.add(loadingNotifications.subscribe(() => this.loading = false));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nLoadingIndicatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingIndicatorDirective, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nLoadingIndicatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingIndicatorDirective, selector: \"[kendoTreeViewLoading]\", inputs: { index: [\"kendoTreeViewLoading\", \"index\"] }, host: { properties: { \"class.k-i-loading\": \"this.loading\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingIndicatorDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewLoading]' }]\n }], ctorParameters: function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { loading: [{\n type: HostBinding,\n args: [\"class.k-i-loading\"]\n }], index: [{\n type: Input,\n args: [\"kendoTreeViewLoading\"]\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nclass TreeViewItemContentDirective {\n constructor(element, navigationService, selectionService, renderer) {\n this.element = element;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.renderer = renderer;\n this.initialSelection = false;\n this.isSelected = isSelected;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.navigationService.moves\n .subscribe(this.updateFocusClass.bind(this)));\n this.subscriptions.add(this.navigationService.selects\n .pipe(filter((index) => index === this.index))\n .subscribe((index) => this.selectionService.select(index, this.dataItem)));\n this.subscriptions.add(this.selectionService.changes\n .subscribe(() => {\n this.updateSelectionClass(this.isSelected(this.dataItem, this.index));\n }));\n }\n ngOnChanges(changes) {\n if (changes.initialSelection) {\n this.updateSelectionClass(this.initialSelection);\n }\n if (changes.index) {\n this.updateFocusClass();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n updateFocusClass() {\n this.render(this.navigationService.isActive(this.index), 'k-focus');\n }\n updateSelectionClass(selected) {\n this.render(selected, 'k-selected');\n }\n render(addClass, className) {\n const action = addClass ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n}\nTreeViewItemContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemContentDirective, deps: [{ token: i0.ElementRef }, { token: NavigationService }, { token: SelectionService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTreeViewItemContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewItemContentDirective, selector: \"[kendoTreeViewItemContent]\", inputs: { dataItem: \"dataItem\", index: \"index\", initialSelection: \"initialSelection\", isSelected: \"isSelected\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemContentDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItemContent]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NavigationService }, { type: SelectionService }, { type: i0.Renderer2 }]; }, propDecorators: { dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], initialSelection: [{\n type: Input\n }], isSelected: [{\n type: Input\n }] } });\n\nconst TOP_ITEM = 'k-treeview-top';\nconst MID_ITEM = 'k-treeview-mid';\nconst BOT_ITEM = 'k-treeview-bot';\n/**\n * @hidden\n */\nclass TreeViewGroupComponent {\n constructor(expandService, loadingService, indexBuilder, treeViewLookupService, navigationService, nodeChildrenService, dataChangeNotification, changeDetectorRef) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.indexBuilder = indexBuilder;\n this.treeViewLookupService = treeViewLookupService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.dataChangeNotification = dataChangeNotification;\n this.changeDetectorRef = changeDetectorRef;\n this.kGroupClass = true;\n this.role = 'group';\n this.loadOnDemand = true;\n this.textField = \"\";\n this.size = 'medium';\n this.initialNodesLoaded = false;\n this.loadingMoreNodes = false;\n this._data = [];\n this.singleRecordSubscriptions = new Subscription();\n this.isChecked = () => 'none';\n this.isDisabled = () => false;\n this.isExpanded = () => false;\n this.isVisible = () => true;\n this.isSelected = () => false;\n this.children = () => of([]);\n this.hasChildren = () => false;\n }\n get moreNodesAvailable() {\n if (!isPresent(this.loadMoreService) || this.data.length === 0) {\n return false;\n }\n return this.pageSize < this.totalNodesCount;\n }\n get pageSize() {\n if (!isPresent(this.loadMoreService)) {\n return null;\n }\n return this.loadMoreService.getGroupSize(this.parentDataItem);\n }\n set pageSize(pageSize) {\n this.loadMoreService.setGroupSize(this.parentDataItem, pageSize);\n }\n get data() {\n if (isPresent(this.pageSize)) {\n const normalizedSizeValue = this.pageSize > 0 ? this.pageSize : 0;\n return this._data.slice(0, normalizedSizeValue);\n }\n return this._data;\n }\n set data(data) {\n this._data = data;\n this.registerLoadedNodes(this.data);\n }\n get loadMoreButtonIndex() {\n if (!this.loadMoreService) {\n return null;\n }\n return this.nodeIndex(this.data.length);\n }\n /**\n * Represents the total number of nodes for the current level.\n */\n get totalNodesCount() {\n if (!this.loadMoreService) {\n return this.data.length;\n }\n return this.loadMoreService.getTotalNodesCount(this.parentDataItem, this._data.length);\n }\n get hasTemplate() {\n return isPresent(this.nodeTemplateRef);\n }\n expandNode(index, dataItem, expand) {\n if (expand) {\n this.expandService.expand(index, dataItem);\n }\n else {\n this.expandService.collapse(index, dataItem);\n }\n }\n checkNode(index) {\n this.navigationService.checkIndex(index);\n this.navigationService.activateIndex(index);\n }\n nodeIndex(index) {\n return this.indexBuilder.nodeIndex(index.toString(), this.parentIndex);\n }\n nodeText(dataItem) {\n const textField = isArray(this.textField) ? this.textField[0] : this.textField;\n return getter(textField)(dataItem);\n }\n ngOnDestroy() {\n if (isPresent(this.nodesSubscription)) {\n this.nodesSubscription.unsubscribe();\n }\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.singleRecordSubscriptions.unsubscribe();\n }\n ngOnInit() {\n this.subscribeToNodesChange();\n this.singleRecordSubscriptions.add(this.dataChangeNotification\n .changes\n .subscribe(this.subscribeToNodesChange.bind(this)));\n this.singleRecordSubscriptions.add(this.navigationService.loadMore\n .pipe(filter(index => index === this.loadMoreButtonIndex))\n .subscribe(this.loadMoreNodes.bind(this)));\n }\n ngOnChanges(changes) {\n if (changes.parentIndex && this.loadOnDemand) {\n this.setNodeChildren(this.mapToTreeItem(this.data));\n }\n }\n fetchChildren(node, index) {\n return this.children(node)\n .pipe(catchError(() => {\n this.loadingService.notifyLoaded(index);\n return EMPTY;\n }), tap(() => this.loadingService.notifyLoaded(index)));\n }\n get nextFields() {\n if (isArray(this.textField)) {\n return this.textField.length > 1 ? this.textField.slice(1) : this.textField;\n }\n return [this.textField];\n }\n loadMoreNodes() {\n if (isPresent(this.loadMoreService.loadMoreNodes)) {\n this.fetchMoreNodes();\n }\n else {\n this.loadMoreLocalNodes();\n }\n }\n /**\n * @hidden\n */\n setItemClasses(dataLength, index) {\n if (dataLength === 1) {\n return this.parentIndex ? BOT_ITEM : `${TOP_ITEM} ${BOT_ITEM}`;\n }\n if (index === 0) {\n return TOP_ITEM;\n }\n if (index > 0 && index < dataLength - 1) {\n return MID_ITEM;\n }\n return index === this.totalNodesCount - 1 ? BOT_ITEM : MID_ITEM;\n }\n loadMoreLocalNodes() {\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += this.loadMoreService.getInitialPageSize(this.parentDataItem);\n this.registerLoadedNodes(this.data);\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n fetchMoreNodes() {\n if (this.loadingMoreNodes) {\n return;\n }\n this.loadingMoreNodes = true;\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.loadMoreNodesSubscription = this.loadMoreService\n .loadMoreNodes({\n dataItem: this.parentDataItem,\n skip: this.data.length,\n take: this.loadMoreService.getInitialPageSize(this.parentDataItem)\n })\n .pipe(finalize(() => this.loadingMoreNodes = false))\n .subscribe(items => {\n if (!(Array.isArray(items) && items.length > 0)) {\n return;\n }\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += items.length;\n this.data = this.data.concat(items);\n if (this.navigationService.isActive(initialLoadMoreButtonIndex)) {\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n });\n }\n setNodeChildren(children) {\n this.treeViewLookupService.registerChildren(this.parentIndex, children);\n }\n mapToTreeItem(data) {\n if (!this.parentIndex) {\n return [];\n }\n return data.map((dataItem, idx) => ({ dataItem, index: this.nodeIndex(idx) }));\n }\n emitChildrenLoaded(children) {\n if (!this.parentIndex) {\n return;\n }\n // ignores the registered load-more button\n const contentChildren = children.filter(item => item.dataItem);\n this.nodeChildrenService.childrenLoaded({ dataItem: this.parentDataItem, index: this.parentIndex }, contentChildren);\n }\n subscribeToNodesChange() {\n if (this.nodesSubscription) {\n this.nodesSubscription.unsubscribe();\n }\n this.nodesSubscription = this.nodes(this.parentDataItem, this.parentIndex)\n .subscribe(data => {\n this.data = data;\n this.initialNodesLoaded = true;\n });\n }\n reselectItemAt(index) {\n if (!isPresent(index)) {\n return;\n }\n // make sure the old index is cleared first\n this.navigationService.deactivate();\n this.navigationService.activateIndex(index);\n }\n registerLoadedNodes(nodes = []) {\n const mappedChildren = this.mapToTreeItem(nodes);\n if (this.loadOnDemand) {\n this.setNodeChildren(mappedChildren);\n }\n this.emitChildrenLoaded(mappedChildren);\n }\n}\nTreeViewGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewGroupComponent, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: IndexBuilderService }, { token: TreeViewLookupService }, { token: NavigationService }, { token: NodeChildrenService }, { token: DataChangeNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: { checkboxes: \"checkboxes\", expandIcons: \"expandIcons\", disabled: \"disabled\", selectable: \"selectable\", touchActions: \"touchActions\", loadOnDemand: \"loadOnDemand\", trackBy: \"trackBy\", nodes: \"nodes\", textField: \"textField\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", nodeTemplateRef: \"nodeTemplateRef\", loadMoreButtonTemplateRef: \"loadMoreButtonTemplateRef\", loadMoreService: \"loadMoreService\", size: \"size\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isVisible: \"isVisible\", isSelected: \"isSelected\", children: \"children\", hasChildren: \"hasChildren\" }, host: { properties: { \"class.k-treeview-group\": \"this.kGroupClass\", \"attr.role\": \"this.role\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{nodeText(node)}}\n \n \n \n \n
    \n \n \n \n \n
    \n \n \n \n \n \n \n \n Load more\n \n \n \n
    \n \n `, isInline: true, components: [{ type: CheckBoxComponent, selector: \"kendo-checkbox\", inputs: [\"id\", \"isChecked\", \"node\", \"index\", \"labelText\", \"tabindex\", \"size\"], outputs: [\"checkStateChange\"] }, { type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: [\"checkboxes\", \"expandIcons\", \"disabled\", \"selectable\", \"touchActions\", \"loadOnDemand\", \"trackBy\", \"nodes\", \"textField\", \"parentDataItem\", \"parentIndex\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"loadMoreService\", \"size\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isVisible\", \"isSelected\", \"children\", \"hasChildren\"] }], directives: [{ type: i9.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TreeViewItemDirective, selector: \"[kendoTreeViewItem]\", inputs: [\"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"role\", \"loadOnDemand\", \"checkable\", \"selectable\", \"expandable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"isExpanded\", \"isSelected\"] }, { type: i9.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LoadingIndicatorDirective, selector: \"[kendoTreeViewLoading]\", inputs: [\"kendoTreeViewLoading\"] }, { type: TreeViewItemContentDirective, selector: \"[kendoTreeViewItemContent]\", inputs: [\"dataItem\", \"index\", \"initialSelection\", \"isSelected\"] }, { type: i9.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i9.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i9.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }], animations: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewGroupComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ],\n // eslint-disable-next-line\n selector: '[kendoTreeViewGroup]',\n template: `\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{nodeText(node)}}\n \n \n \n \n
    \n \n \n \n \n
    \n \n \n \n \n \n \n \n Load more\n \n \n \n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: IndexBuilderService }, { type: TreeViewLookupService }, { type: NavigationService }, { type: NodeChildrenService }, { type: DataChangeNotificationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { kGroupClass: [{\n type: HostBinding,\n args: [\"class.k-treeview-group\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], checkboxes: [{\n type: Input\n }], expandIcons: [{\n type: Input\n }], disabled: [{\n type: Input\n }], selectable: [{\n type: Input\n }], touchActions: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], nodes: [{\n type: Input\n }], textField: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], nodeTemplateRef: [{\n type: Input\n }], loadMoreButtonTemplateRef: [{\n type: Input\n }], loadMoreService: [{\n type: Input\n }], size: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], children: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }] } });\n\nconst LOAD_MORE_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\nconst providers = [\n ExpandStateService,\n IndexBuilderService,\n TreeViewLookupService,\n LoadingNotificationService,\n NodeChildrenService,\n NavigationService,\n SelectionService,\n DataChangeNotificationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.treeview'\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n }\n];\n/**\n * Represents the [Kendo UI TreeView component for Angular]({% slug overview_treeview %}).\n *\n * @example\n * {% meta height:450 %}\n * {% embed_file get-started/app.component.ts preview %}\n * {% embed_file get-started/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nclass TreeViewComponent {\n constructor(element, changeDetectorRef, expandService, navigationService, nodeChildrenService, selectionService, treeViewLookupService, ngZone, renderer, dataChangeNotification, localization) {\n this.element = element;\n this.changeDetectorRef = changeDetectorRef;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.selectionService = selectionService;\n this.treeViewLookupService = treeViewLookupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.dataChangeNotification = dataChangeNotification;\n this.localization = localization;\n this.classNames = true;\n this.role = 'tree';\n /**\n * The hint which is displayed when the component is empty.\n */\n this.filterInputPlaceholder = \"\";\n /** @hidden */\n this.fetchNodes = () => this.data;\n /**\n * Fires when the children of the expanded node are loaded.\n */\n this.childrenLoaded = new EventEmitter();\n /**\n * Fires when the user blurs the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user focuses the component.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the user expands a TreeView node.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the user collapses a TreeView node.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires just before the dragging of the node starts ([see example]({% slug draganddrop_treeview %}#toc-setup)). This event is preventable.\n * If you prevent the event default, no drag hint will be created and the subsequent drag-related events will not be fired.\n */\n this.nodeDragStart = new EventEmitter();\n /**\n * Fires when an item is being dragged ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDrag = new EventEmitter();\n /**\n * Emits when the built-in filtering mechanism in the data-binding directives updates the node's visibility.\n * Used for the built-in auto-expand functionalities of the component and available for custom implementations.\n */\n this.filterStateChange = new EventEmitter();\n /**\n * Fires on the target TreeView when a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * This event is preventable. If you prevent the event default (`event.preventDefualt()`) or invalidate its state (`event.setValid(false)`),\n * the `addItem` and `removeItem` events will not be triggered.\n *\n * Both operations cancel the default drop operation, but the indication to the user is different. `event.setValid(false)` indicates that the operation was\n * unsuccessful by animating the drag clue to its original position. `event.preventDefault()` simply removes the clue, as if it has been dropped successfully.\n * As a general rule, use `preventDefault` to manually handle the add and remove operations, and `setValid(false)` to indicate the operation was unsuccessful.\n */\n this.nodeDrop = new EventEmitter();\n /**\n * Fires on the source TreeView after the dragged item has been dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDragEnd = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView where the item is dropped.\n */\n this.addItem = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView from where the item is dragged.\n */\n this.removeItem = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node checkbox\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n this.checkedChange = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the user clicks a TreeView node.\n */\n this.nodeClick = new EventEmitter();\n /**\n * Fires when the user double clicks a TreeView node.\n */\n this.nodeDblClick = new EventEmitter();\n /**\n * A function that defines how to track node changes.\n * By default, the TreeView tracks the nodes by data item object reference.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n *
    \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n *\n * public trackBy(index: number, item: any): any {\n * return item.text;\n * }\n * }\n * ```\n */\n this.trackBy = trackBy;\n /**\n * A function which determines if a specific node is disabled.\n */\n this.isDisabled = isDisabled;\n /**\n * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isVisible = isVisible;\n /**\n * Determines whether the TreeView keyboard navigable is enabled.\n */\n this.navigable = true;\n /**\n * A function which provides the child nodes for a given parent node\n * ([see example]({% slug databinding_treeview %})).\n */\n this.children = () => of([]);\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the TreeView.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the TreeView manually]({% slug filtering_treeview %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %}) and [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * Sets an initial value of the built-in input element used for filtering.\n */\n this.filter = '';\n this.checkboxes = false;\n this.expandIcons = false;\n this.selectable = false;\n this.touchActions = true;\n this.isActive = false;\n this.data = new BehaviorSubject([]);\n this._animate = true;\n this._size = 'medium';\n this.subscriptions = new Subscription();\n this.domSubscriptions = [];\n validatePackage(packageMetadata);\n }\n /** @hidden */\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Determines whether the content animation is enabled.\n */\n set animate(value) {\n this._animate = value;\n }\n get animate() {\n return !this._animate;\n }\n /**\n * @hidden\n *\n * Defines the template for each node.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set nodeTemplateRef(template) {\n this._nodeTemplateRef = template;\n }\n get nodeTemplateRef() {\n return this._nodeTemplateRef || this.nodeTemplateQuery;\n }\n /**\n * @hidden\n *\n * Defines the template for each load-more button.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set loadMoreButtonTemplateRef(template) {\n this._loadMoreButtonTemplateRef = template;\n }\n get loadMoreButtonTemplateRef() {\n return this._loadMoreButtonTemplateRef || this.loadMoreButtonTemplateQuery;\n }\n /**\n * The nodes which will be displayed by the TreeView\n * ([see example]({% slug databinding_treeview %})).\n */\n set nodes(value) {\n this.data.next(value || []);\n this.dataChangeNotification.notify();\n }\n get nodes() {\n return this.data.value;\n }\n /**\n * A function which determines if a specific node has child nodes\n * ([see example]({% slug databinding_treeview %})).\n */\n get hasChildren() {\n return this._hasChildren || hasChildren;\n }\n set hasChildren(callback) {\n this._hasChildren = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is checked\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n get isChecked() {\n return this._isChecked || isChecked;\n }\n set isChecked(callback) {\n this._isChecked = callback;\n this.checkboxes = Boolean(this._isChecked);\n }\n /**\n * A function which determines if a specific node is expanded.\n */\n get isExpanded() {\n return this._isExpanded || isExpanded;\n }\n set isExpanded(callback) {\n this._isExpanded = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is selected\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n get isSelected() {\n return this._isSelected || isSelected;\n }\n set isSelected(callback) {\n this._isSelected = callback;\n this.selectable = Boolean(this._isSelected);\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : 'medium';\n if (this.size !== 'none') {\n this.renderer.removeClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', newSize));\n this._size = size;\n }\n get size() {\n return this._size;\n }\n ngOnChanges(changes) {\n this.navigationService.navigable = Boolean(this.navigable);\n // TODO: should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'children', 'hasChildren', 'loadOnDemand'], changes, false) && !this.loadOnDemand) {\n this.preloadChildNodes();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domSubscriptions.forEach(subscription => subscription());\n }\n ngOnInit() {\n this.subscriptions.add(this.nodeChildrenService\n .changes\n .subscribe((x) => this.childrenLoaded.emit(x)));\n this.subscriptions.add(this.expandService.changes\n .subscribe(({ index, dataItem, expand }) => expand\n ? this.expand.emit({ index, dataItem })\n : this.collapse.emit({ index, dataItem })));\n this.subscriptions.add(this.navigationService.checks\n .subscribe((x) => this.checkedChange.emit(this.treeViewLookupService.itemLookup(x))));\n this.subscriptions.add(this.selectionService.changes\n .subscribe((x) => {\n if (hasObservers(this.selectionChange)) {\n this.ngZone.run(() => {\n this.selectionChange.emit(x);\n });\n }\n }));\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.attachDomHandlers();\n });\n }\n if (this.size) {\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n }\n /**\n * Blurs the focused TreeView item.\n */\n blur() {\n if (!isDocumentAvailable()) {\n return;\n }\n const target = focusableNode(this.element);\n if (document.activeElement === target) {\n target.blur();\n }\n }\n /**\n * Focuses the first focusable item in the TreeView component if no hierarchical index is provided.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n * }\n * ```\n */\n focus(index) {\n const focusIndex = index || nodeIndex(this.navigationService.focusableItem);\n this.navigationService.activateIndex(focusIndex);\n const target = focusableNode(this.element);\n if (target) {\n target.focus();\n }\n }\n /**\n * Based on the specified index, returns the TreeItemLookup node.\n *\n * @param index - The index of the node.\n * @returns {TreeItemLookup} - The item that was searched (looked up).\n */\n itemLookup(index) {\n return this.treeViewLookupService.itemLookup(index);\n }\n /**\n * Triggers the [`children`]({% slug api_treeview_treeviewcomponent %}#toc-children) function for every expanded node,\n * causing all rendered child nodes to be fetched again.\n */\n rebindChildren() {\n this.dataChangeNotification.notify();\n }\n /**\n * Triggers the `expand` event for the provided node and displays it's loading indicator.\n */\n expandNode(item, index) {\n this.expandService.expand(index, item);\n }\n /**\n * Triggers the `collapse` event for the provided node.\n */\n collapseNode(item, index) {\n this.expandService.collapse(index, item);\n }\n /**\n * Gets the current page size of the checked data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to get its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @returns {number} - The page size of the checked data item children collection.\n */\n getNodePageSize(dataItem) {\n this.verifyLoadMoreService();\n return this.loadMoreService.getGroupSize(dataItem);\n }\n /**\n * Sets the page size of the targeted data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to target its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @param pageSize {number} - The new page size.\n */\n setNodePageSize(dataItem, pageSize) {\n this.verifyLoadMoreService();\n this.loadMoreService.setGroupSize(dataItem, pageSize);\n }\n /**\n * @hidden\n *\n * Clears the current TreeViewLookupService node map and re-registers all nodes anew.\n * Child nodes are acquired through the provided `children` callback.\n */\n preloadChildNodes() {\n this.treeViewLookupService.reset();\n this.registerLookupItems(this.nodes);\n }\n attachDomHandlers() {\n const element = this.element.nativeElement;\n this.clickHandler = this.clickHandler.bind(this);\n this.domSubscriptions.push(this.renderer.listen(element, 'contextmenu', this.clickHandler), this.renderer.listen(element, 'click', this.clickHandler), this.renderer.listen(element, 'dblclick', this.clickHandler), this.renderer.listen(element, 'focusin', this.focusHandler.bind(this)), this.renderer.listen(element, 'focusout', this.blurHandler.bind(this)), this.renderer.listen(element, 'keydown', this.keydownHandler.bind(this)));\n }\n focusHandler(e) {\n let focusItem;\n if (match(e.target, '.k-treeview-item')) {\n focusItem = e.target;\n }\n else if (!isFocusable(e.target)) { // with compliments to IE\n focusItem = closestNode(e.target);\n }\n if (focusItem) {\n this.navigationService.activateIndex(nodeId(e.target));\n if (!this.isActive && hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n this.isActive = true;\n }\n }\n blurHandler(e) {\n if (this.isActive && match(e.target, '.k-treeview-item') &&\n (!e.relatedTarget || !match(e.relatedTarget, '.k-treeview-item') || !hasParent(e.relatedTarget, this.element.nativeElement))) {\n this.navigationService.deactivate();\n this.isActive = false;\n if (hasObservers(this.onBlur)) {\n this.ngZone.run(() => {\n this.onBlur.emit();\n });\n }\n }\n }\n clickHandler(e) {\n const target = e.target;\n if ((e.type === 'contextmenu' && !hasObservers(this.nodeClick)) ||\n (e.type === 'click' && !hasObservers(this.nodeClick) && !hasObservers(this.selectionChange) && !isLoadMoreButton(target)) ||\n (e.type === 'dblclick' && !hasObservers(this.nodeDblClick)) || isFocusable(target) ||\n (!isContent(target) && !isLoadMoreButton(target)) || !hasParent(target, this.element.nativeElement)) {\n return;\n }\n const index = nodeId(closestNode(target));\n // the disabled check is probably not needed due to the k-disabled styles\n if (!index || this.navigationService.isDisabled(index)) {\n return;\n }\n this.ngZone.run(() => {\n // record this value before emitting selectionChange (`this.navigationService.selectIndex`), as the treeview state may be changed on its emission\n const lookup = this.treeViewLookupService.itemLookup(index);\n if (e.type === 'click') {\n const loadMoreButton = this.navigationService.model.findNode(index).loadMoreButton;\n if (loadMoreButton) {\n this.navigationService.notifyLoadMore(index);\n return;\n }\n else {\n this.navigationService.selectIndex(index);\n }\n }\n const emitter = e.type === 'dblclick' ? this.nodeDblClick : this.nodeClick;\n emitter.emit({\n item: lookup.item,\n originalEvent: e,\n type: e.type\n });\n });\n }\n keydownHandler(e) {\n if (this.isActive && this.navigable) {\n this.ngZone.run(() => {\n this.navigationService.move(e);\n });\n }\n }\n verifyLoadMoreService() {\n if (isDevMode() && !isPresent(this.loadMoreService)) {\n throw new Error(`To use the TreeView paging functionality, you need to assign the \\`kendoTreeViewLoadMore\\` directive. See ${LOAD_MORE_DOC_LINK$1}.`);\n }\n }\n registerLookupItems(data, parentItem = null) {\n if (!isPresent(data) || data.length === 0) {\n return;\n }\n const parentIndex = nodeIndex(parentItem);\n const treeItems = data.map((node, index) => buildTreeItem(node, index, parentIndex));\n if (isPresent(parentItem)) {\n this.treeViewLookupService.registerChildren(parentIndex, treeItems);\n }\n treeItems.forEach(item => {\n this.treeViewLookupService.registerItem(item, parentItem);\n if (this.hasChildren(item.dataItem)) {\n this.children(item.dataItem)\n .subscribe(children => this.registerLookupItems(children, item));\n }\n });\n }\n}\nTreeViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: ExpandStateService }, { token: NavigationService }, { token: NodeChildrenService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DataChangeNotificationService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewComponent, selector: \"kendo-treeview\", inputs: { filterInputPlaceholder: \"filterInputPlaceholder\", animate: \"animate\", nodeTemplateRef: [\"nodeTemplate\", \"nodeTemplateRef\"], loadMoreButtonTemplateRef: [\"loadMoreButtonTemplate\", \"loadMoreButtonTemplateRef\"], trackBy: \"trackBy\", nodes: \"nodes\", textField: \"textField\", hasChildren: \"hasChildren\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isSelected: \"isSelected\", isVisible: \"isVisible\", navigable: \"navigable\", children: \"children\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", size: \"size\" }, outputs: { childrenLoaded: \"childrenLoaded\", onBlur: \"blur\", onFocus: \"focus\", expand: \"expand\", collapse: \"collapse\", nodeDragStart: \"nodeDragStart\", nodeDrag: \"nodeDrag\", filterStateChange: \"filterStateChange\", nodeDrop: \"nodeDrop\", nodeDragEnd: \"nodeDragEnd\", addItem: \"addItem\", removeItem: \"removeItem\", checkedChange: \"checkedChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", nodeClick: \"nodeClick\", nodeDblClick: \"nodeDblClick\" }, host: { properties: { \"class.k-treeview\": \"this.classNames\", \"attr.role\": \"this.role\", \"attr.dir\": \"this.direction\", \"@.disabled\": \"this.animate\" } }, providers: providers, queries: [{ propertyName: \"nodeTemplateQuery\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"loadMoreButtonTemplateQuery\", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"assetsContainer\", first: true, predicate: [\"assetsContainer\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoTreeView\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n
      \n
    \n \n `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: \"kendo-textbox\", inputs: [\"focusableId\", \"title\", \"disabled\", \"readonly\", \"tabindex\", \"value\", \"selectOnFocus\", \"showSuccessIcon\", \"showErrorIcon\", \"clearButton\", \"successIcon\", \"errorIcon\", \"clearButtonIcon\", \"size\", \"rounded\", \"fillMode\", \"tabIndex\", \"placeholder\", \"maxlength\"], outputs: [\"valueChange\", \"inputFocus\", \"inputBlur\", \"focus\", \"blur\"], exportAs: [\"kendoTextBox\"] }, { type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: [\"checkboxes\", \"expandIcons\", \"disabled\", \"selectable\", \"touchActions\", \"loadOnDemand\", \"trackBy\", \"nodes\", \"textField\", \"parentDataItem\", \"parentIndex\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"loadMoreService\", \"size\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isVisible\", \"isSelected\", \"children\", \"hasChildren\"] }], directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: \"[kendoTextBoxPrefixTemplate]\" }], changeDetection: i0.ChangeDetectionStrategy.Default });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.Default,\n exportAs: 'kendoTreeView',\n providers: providers,\n selector: 'kendo-treeview',\n template: `\n \n \n \n \n \n \n \n
      \n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: ExpandStateService }, { type: NavigationService }, { type: NodeChildrenService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: DataChangeNotificationService }, { type: i1.LocalizationService }]; }, propDecorators: { classNames: [{\n type: HostBinding,\n args: [\"class.k-treeview\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], direction: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], assetsContainer: [{\n type: ViewChild,\n args: ['assetsContainer', { read: ViewContainerRef, static: true }]\n }], filterInputPlaceholder: [{\n type: Input\n }], animate: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['@.disabled']\n }], childrenLoaded: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], nodeDragStart: [{\n type: Output\n }], nodeDrag: [{\n type: Output\n }], filterStateChange: [{\n type: Output\n }], nodeDrop: [{\n type: Output\n }], nodeDragEnd: [{\n type: Output\n }], addItem: [{\n type: Output\n }], removeItem: [{\n type: Output\n }], checkedChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], nodeClick: [{\n type: Output\n }], nodeDblClick: [{\n type: Output\n }], nodeTemplateQuery: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], nodeTemplateRef: [{\n type: Input,\n args: ['nodeTemplate']\n }], loadMoreButtonTemplateQuery: [{\n type: ContentChild,\n args: [LoadMoreButtonTemplateDirective, { static: false }]\n }], loadMoreButtonTemplateRef: [{\n type: Input,\n args: ['loadMoreButtonTemplate']\n }], trackBy: [{\n type: Input\n }], nodes: [{\n type: Input\n }], textField: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], navigable: [{\n type: Input\n }], children: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], size: [{\n type: Input\n }] } });\n\nconst indexChecked = (keys, index) => keys.filter(k => k === index).length > 0;\nconst matchKey = index => k => {\n if (index === k) {\n return true;\n }\n if (!k.split) {\n return false;\n }\n return k.split('_').reduce(({ key, result }, part) => {\n key += part;\n if (index === key || result) {\n return { result: true };\n }\n key += \"_\";\n return { key, result: false };\n }, { key: \"\", result: false }).result;\n};\n/**\n * A directive which manages the in-memory checked state of the TreeView node\n * ([see example]({% slug checkboxes_treeview %})).\n */\nclass CheckDirective {\n constructor(treeView, zone) {\n this.treeView = treeView;\n this.zone = zone;\n /**\n * Fires when the `checkedKeys` collection was updated.\n */\n this.checkedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.checkActions = {\n 'multiple': (e) => this.checkMultiple(e),\n 'single': (e) => this.checkSingle(e)\n };\n /**\n * Reflectes the internal `checkedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe((e) => this.check(e)));\n let expandedItems = [];\n this.subscriptions.add(this.treeView.childrenLoaded\n .pipe(filter(() => this.options.checkChildren && this.treeView.loadOnDemand), tap(item => expandedItems.push(item)), switchMap(() => this.zone.onStable.pipe(take(1))))\n .subscribe(() => this.addCheckedItemsChildren(expandedItems)));\n this.treeView.isChecked = this.isItemChecked.bind(this);\n }\n /**\n * @hidden\n */\n set isChecked(value) {\n this.treeView.isChecked = value;\n }\n get options() {\n const defaultOptions = {\n checkChildren: true,\n checkParents: true,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.checkable) || typeof this.checkable === 'string') {\n return defaultOptions;\n }\n const checkSettings = isBoolean(this.checkable)\n ? { enabled: this.checkable }\n : this.checkable;\n return Object.assign(defaultOptions, checkSettings);\n }\n ngOnChanges(changes) {\n if (changes.checkable) {\n this.treeView.checkboxes = this.options.enabled;\n this.toggleCheckOnClick();\n }\n if (isChanged('checkedKeys', changes, false) && changes.checkedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.checkedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n isItemChecked(dataItem, index) {\n if (!this.checkKey) {\n return this.isIndexChecked(index);\n }\n const hasKey = this.state.has(this.itemKey({ dataItem, index }));\n return hasKey ? 'checked' : 'none';\n }\n isIndexChecked(index) {\n const checkedKeys = Array.from(this.state).filter(matchKey(index));\n if (indexChecked(checkedKeys, index)) {\n return 'checked';\n }\n const { mode, checkParents } = this.options;\n if (mode === 'multiple' && checkParents && checkedKeys.length) {\n return 'indeterminate';\n }\n return 'none';\n }\n itemKey(item) {\n if (!isPresent(this.checkKey)) {\n return item.index;\n }\n if (typeof this.checkKey === \"string\" && isPresent(item.dataItem)) {\n return item.dataItem[this.checkKey];\n }\n if (typeof this.checkKey === \"function\") {\n return this.checkKey(item);\n }\n }\n check(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.checkActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n checkSingle(node) {\n const key = this.itemKey(node.item);\n const hasKey = this.state.has(key);\n this.state.clear();\n if (!hasKey) {\n this.state.add(key);\n }\n this.notify();\n }\n checkMultiple(node) {\n this.checkNode(node);\n if (this.options.checkParents) {\n this.checkParents(node.parent);\n }\n this.notify();\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.options.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick.subscribe(args => {\n if (args.type === 'click') {\n const lookup = this.treeView.itemLookup(args.item.index);\n this.check(lookup);\n }\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(node) {\n if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index)) {\n return;\n }\n const currentKey = this.itemKey(node.item);\n if (!isPresent(currentKey)) {\n return;\n }\n const pendingCheck = [currentKey];\n if (this.options.checkChildren) {\n const descendants = fetchLoadedDescendants(node, ({ item }) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index))\n .map(({ item }) => this.itemKey(item));\n pendingCheck.push(...descendants);\n }\n const shouldCheck = !this.state.has(currentKey);\n pendingCheck.forEach(key => {\n if (shouldCheck) {\n this.state.add(key);\n }\n else {\n this.state.delete(key);\n }\n });\n }\n checkParents(parent) {\n if (!isPresent(parent)) {\n return;\n }\n let currentParent = parent;\n while (currentParent) {\n const parentKey = this.itemKey(currentParent.item);\n const allChildrenSelected = currentParent.children.every(item => this.state.has(this.itemKey(item)));\n if (allChildrenSelected) {\n this.state.add(parentKey);\n }\n else {\n this.state.delete(parentKey);\n }\n currentParent = currentParent.parent;\n }\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.checkedKeysChange.emit(this.lastChange);\n }\n addCheckedItemsChildren(lookups) {\n if (!isPresent(lookups) || lookups.length === 0) {\n return;\n }\n const initiallyCheckedItemsCount = this.state.size;\n lookups.forEach(lookup => {\n const itemKey = this.itemKey(lookup.item);\n if (!this.state.has(itemKey)) {\n return;\n }\n lookup.children.forEach(item => {\n // ensure both the parent item and each child node is enabled\n if (!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index)) {\n this.state.add(this.itemKey(item));\n }\n });\n });\n const hasNewlyCheckedItems = initiallyCheckedItemsCount !== this.state.size;\n if (hasNewlyCheckedItems) {\n this.zone.run(() => this.notify());\n }\n }\n}\nCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, deps: [{ token: TreeViewComponent }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckDirective, selector: \"[kendoTreeViewCheckable]\", inputs: { isChecked: \"isChecked\", checkKey: [\"checkBy\", \"checkKey\"], checkedKeys: \"checkedKeys\", checkable: [\"kendoTreeViewCheckable\", \"checkable\"] }, outputs: { checkedKeysChange: \"checkedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewCheckable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }, { type: i0.NgZone }]; }, propDecorators: { isChecked: [{\n type: Input\n }], checkKey: [{\n type: Input,\n args: [\"checkBy\"]\n }], checkedKeys: [{\n type: Input\n }], checkable: [{\n type: Input,\n args: ['kendoTreeViewCheckable']\n }], checkedKeysChange: [{\n type: Output\n }] } });\n\n/**\n * A directive which manages the disabled in-memory state of the TreeView node\n * ([see example]({% slug disabledstate_treeview %})).\n */\nclass DisableDirective {\n constructor(treeView, cdr) {\n this.treeView = treeView;\n this.cdr = cdr;\n /**\n * Defines the collection that will store the disabled keys.\n */\n this.disabledKeys = [];\n this.treeView.isDisabled = (dataItem, index) => (this.disabledKeys.indexOf(this.itemKey({ dataItem, index })) > -1);\n }\n /**\n * @hidden\n */\n set isDisabled(value) {\n this.treeView.isDisabled = value;\n }\n ngOnChanges(changes = {}) {\n const { disabledKeys } = changes;\n if (disabledKeys && !disabledKeys.firstChange) {\n this.cdr.markForCheck();\n }\n }\n itemKey(e) {\n if (!this.disableKey) {\n return e.index;\n }\n if (typeof this.disableKey === \"string\") {\n return e.dataItem[this.disableKey];\n }\n if (typeof this.disableKey === \"function\") {\n return this.disableKey(e);\n }\n }\n}\nDisableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisableDirective, deps: [{ token: TreeViewComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nDisableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DisableDirective, selector: \"[kendoTreeViewDisable]\", inputs: { isDisabled: \"isDisabled\", disableKey: [\"kendoTreeViewDisable\", \"disableKey\"], disabledKeys: \"disabledKeys\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisableDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewDisable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { isDisabled: [{\n type: Input\n }], disableKey: [{\n type: Input,\n args: [\"kendoTreeViewDisable\"]\n }], disabledKeys: [{\n type: Input\n }] } });\n\nconst DEFAULT_FILTER_EXPAND_SETTINGS = {\n maxAutoExpandResults: -1,\n expandMatches: false,\n expandedOnClear: \"none\"\n};\n/**\n * A directive which manages the expanded state of the TreeView.\n * ([see example]({% slug expandedstate_treeview %})).\n */\nclass ExpandDirective {\n constructor(component) {\n this.component = component;\n /**\n * Whether or not to auto-expand the nodes leading from the root node to each filter result.\n * To fine-tune this behavior, pass a [`FilterExpandSettings`]({% slug api_treeview_filterexpandsettings %}) object to this input.\n * @default false\n */\n this.expandOnFilter = false;\n /**\n * Fires when the `expandedKeys` collection was updated.\n */\n this.expandedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n /**\n * Reflectes the internal `expandedKeys` state.\n */\n this.state = new Set();\n this.originalExpandedKeys = new Set();\n this.isFiltered = false;\n /**\n * Fills array with the correct expand keys according to wrapper metadata.\n */\n this.updateExpandedNodes = (collection, node, autoExpandMatches) => {\n if (node.containsMatches || node.isMatch && autoExpandMatches && isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.updateExpandedNodes(collection, child, autoExpandMatches);\n });\n }\n };\n /**\n * Fills array with the expand key of every node.\n */\n this.getEveryExpandKey = (collection, node) => {\n if (isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.getEveryExpandKey(collection, child);\n });\n }\n };\n this.subscriptions.add(merge(this.component.expand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.component.collapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleExpand.bind(this)));\n if (this.component.filterStateChange) {\n this.subscriptions.add(this.component.filterStateChange.subscribe(this.handleAutoExpand.bind(this)));\n }\n this.component.isExpanded = (dataItem, index) => this.state.has(this.itemKey({ dataItem, index }));\n }\n /**\n * @hidden\n */\n set isExpanded(value) {\n this.component.isExpanded = value;\n }\n get filterExpandSettings() {\n const settings = isBoolean(this.expandOnFilter) ? { enabled: this.expandOnFilter } : Object.assign(Object.assign({}, this.expandOnFilter), { enabled: true });\n return Object.assign({}, DEFAULT_FILTER_EXPAND_SETTINGS, settings);\n }\n ngOnChanges(changes) {\n if (isChanged('expandedKeys', changes, false) && changes.expandedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.expandedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n itemKey(e) {\n if (this.expandKey) {\n if (typeof this.expandKey === \"string\") {\n return e.dataItem[this.expandKey];\n }\n if (typeof this.expandKey === \"function\") {\n return this.expandKey(e);\n }\n }\n return e.index;\n }\n toggleExpand({ index, dataItem, expand }) {\n const key = this.itemKey({ index, dataItem });\n const isExpanded = this.state.has(key);\n let notify = false;\n if (isExpanded && !expand) {\n this.state.delete(key);\n notify = true;\n }\n else if (!isExpanded && expand) {\n this.state.add(key);\n notify = true;\n }\n if (notify) {\n this.notify();\n }\n }\n handleAutoExpand({ nodes, matchCount, term }) {\n if (!this.filterExpandSettings.enabled) {\n return;\n }\n const { maxAutoExpandResults, expandMatches: autoExpandMatches, expandedOnClear } = this.filterExpandSettings;\n if (!this.isFiltered) {\n this.originalExpandedKeys = new Set(this.state);\n }\n const exitingFilteredState = this.isFiltered && !term;\n const maxExceeded = maxAutoExpandResults !== -1 && matchCount > maxAutoExpandResults;\n const exitAutoExpandedState = exitingFilteredState || maxExceeded;\n if (exitAutoExpandedState) {\n switch (expandedOnClear) {\n case \"initial\": {\n if (!sameValues(this.state, this.originalExpandedKeys)) {\n this.state = this.originalExpandedKeys;\n this.notify();\n }\n break;\n }\n case \"all\": {\n this.state = new Set(nodes.reduce((acc, rootNode) => {\n this.getEveryExpandKey(acc, rootNode);\n return acc;\n }, []));\n this.notify();\n break;\n }\n case \"unchanged\": {\n break;\n }\n case \"none\":\n default: {\n if (this.state.size !== 0) {\n this.state.clear();\n this.notify();\n }\n break;\n }\n }\n this.isFiltered = false;\n return;\n }\n const indicesToExpand = new Set(nodes.reduce((acc, rootNode) => {\n this.updateExpandedNodes(acc, rootNode, autoExpandMatches);\n return acc;\n }, []));\n if (!sameValues(this.state, indicesToExpand)) {\n this.state = indicesToExpand;\n this.notify();\n }\n this.isFiltered = true;\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.expandedKeysChange.emit(this.lastChange);\n }\n}\nExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDirective, deps: [{ token: ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandDirective, selector: \"[kendoTreeViewExpandable]\", inputs: { isExpanded: \"isExpanded\", expandKey: [\"expandBy\", \"expandKey\"], expandOnFilter: \"expandOnFilter\", expandedKeys: \"expandedKeys\" }, outputs: { expandedKeysChange: \"expandedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewExpandable]' }]\n }], ctorParameters: function () { return [{ type: ExpandableComponent }]; }, propDecorators: { isExpanded: [{\n type: Input\n }], expandKey: [{\n type: Input,\n args: [\"expandBy\"]\n }], expandOnFilter: [{\n type: Input\n }], expandedKeysChange: [{\n type: Output\n }], expandedKeys: [{\n type: Input\n }] } });\n\n/**\n * A directive which manages the in-memory selection state of the TreeView node\n * ([see example]({% slug selection_treeview %})).\n */\nclass SelectDirective {\n constructor(treeView) {\n this.treeView = treeView;\n /**\n * Fires when the `selectedKeys` collection was updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.selectActions = {\n 'multiple': (e) => this.selectMultiple(e),\n 'single': (e) => this.selectSingle(e)\n };\n /**\n * Reflectes the internal `selectedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.selectionChange.subscribe(this.select.bind(this)));\n this.treeView.isSelected = (dataItem, index) => (this.state.has(this.itemKey({ dataItem, index })));\n }\n /**\n * @hidden\n */\n set isSelected(value) {\n this.treeView.isSelected = value;\n }\n get getAriaMultiselectable() {\n return this.options.mode === 'multiple';\n }\n get options() {\n const defaultOptions = {\n enabled: true,\n mode: 'single'\n };\n if (!isPresent(this.selection) || typeof this.selection === 'string') {\n return defaultOptions;\n }\n const selectionSettings = isBoolean(this.selection) ? { enabled: this.selection } : this.selection;\n return Object.assign(defaultOptions, selectionSettings);\n }\n ngOnChanges(changes) {\n if (isChanged('selectedKeys', changes, false) && changes.selectedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.selectedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n itemKey(e) {\n if (!this.selectKey) {\n return e.index;\n }\n if (typeof this.selectKey === 'string') {\n return e.dataItem[this.selectKey];\n }\n if (typeof this.selectKey === 'function') {\n return this.selectKey(e);\n }\n }\n select(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.selectActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n selectSingle(node) {\n const key = this.itemKey(node);\n if (!this.state.has(key)) {\n this.state.clear();\n this.state.add(key);\n this.notify();\n }\n }\n selectMultiple(node) {\n const key = this.itemKey(node);\n const isSelected = this.state.has(key);\n if (!isPresent(key)) {\n return;\n }\n if (isSelected) {\n this.state.delete(key);\n }\n else {\n this.state.add(key);\n }\n this.notify();\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.selectedKeysChange.emit(this.lastChange);\n }\n}\nSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectDirective, selector: \"[kendoTreeViewSelectable]\", inputs: { isSelected: \"isSelected\", selectKey: [\"selectBy\", \"selectKey\"], selection: [\"kendoTreeViewSelectable\", \"selection\"], selectedKeys: \"selectedKeys\" }, outputs: { selectedKeysChange: \"selectedKeysChange\" }, host: { properties: { \"attr.aria-multiselectable\": \"this.getAriaMultiselectable\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewSelectable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { isSelected: [{\n type: Input\n }], selectKey: [{\n type: Input,\n args: ['selectBy']\n }], selection: [{\n type: Input,\n args: ['kendoTreeViewSelectable']\n }], selectedKeys: [{\n type: Input\n }], selectedKeysChange: [{\n type: Output\n }], getAriaMultiselectable: [{\n type: HostBinding,\n args: ['attr.aria-multiselectable']\n }] } });\n\n/**\n * Describes the attempted drop action during dragging.\n * Passed as `action` value to the [`kendoTreeViewDragClueTemplate`]({% slug api_treeview_dragcluetemplatedirective %}) directive.\n * By default, this value defines the rendered icon in the drag clue.\n */\nvar DropAction;\n(function (DropAction) {\n DropAction[DropAction[\"Add\"] = 0] = \"Add\";\n DropAction[DropAction[\"InsertTop\"] = 1] = \"InsertTop\";\n DropAction[DropAction[\"InsertBottom\"] = 2] = \"InsertBottom\";\n DropAction[DropAction[\"InsertMiddle\"] = 3] = \"InsertMiddle\";\n DropAction[DropAction[\"Invalid\"] = 4] = \"Invalid\";\n})(DropAction || (DropAction = {}));\n\n/**\n * Describes where the dragged item is dropped relative to the drop target item.\n */\nvar DropPosition;\n(function (DropPosition) {\n DropPosition[DropPosition[\"Over\"] = 0] = \"Over\";\n DropPosition[DropPosition[\"Before\"] = 1] = \"Before\";\n DropPosition[DropPosition[\"After\"] = 2] = \"After\";\n})(DropPosition || (DropPosition = {}));\n\n/**\n * @hidden\n */\nvar ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Up\"] = -1] = \"Up\";\n ScrollDirection[ScrollDirection[\"Down\"] = 1] = \"Down\";\n})(ScrollDirection || (ScrollDirection = {}));\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop) event.\n */\nclass TreeItemDropEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer, originalEvent) {\n super();\n /**\n * @hidden\n */\n this.isValid = true;\n Object.assign(this, initializer);\n this.originalEvent = originalEvent;\n }\n /**\n * Specifies if the drop action should be marked as valid.\n * If set to `false`, the [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events will not be fired and the drag clue\n * will be animated back to the source item to indicate the action is marked as invalid.\n */\n setValid(isValid) {\n this.isValid = isValid;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart) event.\n */\nclass TreeItemDragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer) {\n super();\n Object.assign(this, initializer);\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag) and\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend) events.\n */\nclass TreeItemDragEvent {\n /** @hidden */\n constructor() { }\n}\n\n/**\n * Checks if the browser supports relative stacking context.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!(isDocumentAvailable() && isPresent(document.body))) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * Stores the result of the passed function's first invokation and returns it instead of invoking it again afterwards.\n */\nfunction memoize(fn) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fn(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n *\n * Gets the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the `fixed` children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n *\n * If no parent container is `transform`-ed the function will return `{ left: 0, top: 0 }`;\n */\nconst getContainerOffset = (element) => {\n if (!(element && hasRelativeStackingContext())) {\n return { left: 0, top: 0 };\n }\n let offsetParent = element.parentElement;\n while (offsetParent) {\n if (window.getComputedStyle(offsetParent).transform !== 'none') {\n break;\n }\n offsetParent = offsetParent.parentElement;\n }\n if (offsetParent) {\n const rect = offsetParent.getBoundingClientRect();\n return {\n left: rect.left - offsetParent.scrollLeft,\n top: rect.top - offsetParent.scrollTop\n };\n }\n return { left: 0, top: 0 };\n};\n/**\n * @hidden\n */\nconst getDropAction = (dropPosition, dropTarget) => {\n if (!(isPresent(dropPosition) && isPresent(dropTarget))) {\n return DropAction.Invalid;\n }\n switch (dropPosition) {\n case DropPosition.Over:\n return DropAction.Add;\n case DropPosition.Before:\n return isPresent(closestNode(dropTarget).previousElementSibling) ? DropAction.InsertMiddle : DropAction.InsertTop;\n case DropPosition.After:\n return isPresent(closestNode(dropTarget).nextElementSibling) ? DropAction.InsertMiddle : DropAction.InsertBottom;\n default:\n return DropAction.Invalid;\n }\n};\n/**\n * @hidden\n */\nconst getDropPosition = (draggedItem, target, clientY, targetTreeView, containerOffset) => {\n if (!(isPresent(draggedItem) && isPresent(target) && isPresent(targetTreeView) && isPresent(containerOffset))) {\n return;\n }\n // the .k-treeview-mid element starts just after the checkbox/expand arrow and stretches till the end of the treeview on the right\n const item = closestWithMatch(target, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n if (!isPresent(item)) {\n return;\n }\n // the content element (.k-treeview-leaf:not(.k-treeview-load-more-button)) holds just the treeview item text\n const content = getContentElement(item);\n const targetChildOfDraggedItem = hasParent(item, closestNode(draggedItem));\n if (!isPresent(content) || (content === draggedItem) || targetChildOfDraggedItem) {\n return;\n }\n const itemViewPortCoords = content.getBoundingClientRect();\n /*\n if the user is hovering a treeview item, split the item height into four parts:\n - dropping into the top quarter should insert the dragged item before the drop target\n - dropping into the bottom quarter should insert the dragged item after the drop target\n - dropping into the second or third quarter should add the item as child node of the drop target\n\n if the user is NOT hovering a treeview item (he's dragging somewhere on the right), split the item height to just two parts:\n - dropping should insert before or after\n */\n const itemDivisionHeight = itemViewPortCoords.height / (isContent(target) ? 4 : 2);\n // clear any possible container offset created by parent elements with `transform` css property set\n const pointerPosition = clientY - containerOffset.top;\n const itemTop = itemViewPortCoords.top - containerOffset.top;\n if (pointerPosition < itemTop + itemDivisionHeight) {\n return DropPosition.Before;\n }\n if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {\n return DropPosition.After;\n }\n return DropPosition.Over;\n};\n/**\n * @hidden\n */\nconst treeItemFromEventTarget = (treeView, dropTarget) => {\n if (!(isPresent(treeView) && isPresent(dropTarget))) {\n return null;\n }\n const node = closestNode(dropTarget);\n const index = nodeId(node);\n const lookup = treeView.itemLookup(index);\n if (!(isPresent(lookup) && isPresent(lookup.item.dataItem))) {\n return null;\n }\n return lookup;\n};\n/**\n * @hidden\n *\n * Emits `collapse` on the specified TreeView node if the latter is left empty after its last child node was dragged out.\n */\nconst collapseEmptyParent = (parent, parentNodes, treeview) => {\n if (isPresent(parent) && parentNodes.length === 0 && treeview.isExpanded(parent.item.dataItem, parent.item.index)) {\n treeview.collapseNode(parent.item.dataItem, parent.item.index);\n }\n};\n/**\n * @hidden\n *\n * Expands the node if it's dropped into and it's not yet expanded.\n */\nconst expandDropTarget = (dropTarget, treeView) => {\n if (!treeView.isExpanded(dropTarget.item.dataItem, dropTarget.item.index)) {\n treeView.expandNode(dropTarget.item.dataItem, dropTarget.item.index);\n }\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = (event) => {\n if (!(isDocumentAvailable() && isPresent(document.elementFromPoint))) {\n return event.target;\n }\n return document.elementFromPoint(event.clientX, event.clientY);\n};\n/**\n * @hidden\n *\n * Checks if the original index is before the new one and corrects the new one by decrementing the index for the level, where the original item stood.\n */\nconst updateMovedItemIndex = (newIndex, originalIndex) => {\n const movedItemNewIndexParts = newIndex.split('_');\n const originalItemIndexParts = originalIndex.split('_');\n // if the original item was moved from a deeper level, there's no need for index correction\n // e.g. 4_0_1 is moved to 5_0 => removing 4_0_1 will not cause 5_0 to be moved\n if (movedItemNewIndexParts.length < originalItemIndexParts.length) {\n return newIndex;\n }\n // check if the parent item paths are the same - index correction is not required when the original item path differs from the path of the moved item - they belong to different hierarchies\n // e.g. 4_1 is moved to 5_1 - the parent item paths are differen (4 compared to 5) => removing 4_1 will not cause 5_1 to be moved\n // e.g 4_1 is moved to 4_3 - the parent paths are the same (both 4) => removing 4_1 will cause 4_3 to be moved\n const originalItemParentPathLength = originalItemIndexParts.length - 1;\n const originalItemParentPath = originalItemIndexParts.slice(0, originalItemParentPathLength).join('_');\n const movedItemParentPath = movedItemNewIndexParts.slice(0, originalItemParentPathLength).join('_');\n // check if the the index of the level where the original item is taken from is greater than the one of the moved item\n // e.g. 4_5 is moved to 4_1 (comapre 5 and 1) => removing 4_5 will not cause 4_1 to be moved\n // e.g. 4_1 is moved to 4_5 (comapre 1 and 5) => removing 4_1 will cause 4_5 to be moved\n const originalItemIndexLevel = originalItemIndexParts.length - 1;\n const originalItemLevelIndex = Number(originalItemIndexParts[originalItemIndexLevel]);\n const movedItemLevelIndex = Number(movedItemNewIndexParts[originalItemIndexLevel]);\n if ((originalItemParentPath === movedItemParentPath) && (movedItemLevelIndex > originalItemLevelIndex)) {\n // if the removed item causes the dropped item to be moved a position up - decrement the index at that level\n movedItemNewIndexParts[originalItemIndexLevel] = String(movedItemLevelIndex - 1);\n return movedItemNewIndexParts.join('_');\n }\n return newIndex;\n};\n/**\n * @hidden\n */\nconst SCROLLBAR_REG_EXP = new RegExp('(auto|scroll)');\n/**\n * @hidden\n *\n * Retrives the first scrollable element starting the search from the provided one, traversing to the top of the DOM tree.\n */\nconst getScrollableContainer = (node) => {\n while (isPresent(node) && node.nodeName !== 'HTML') {\n const hasOverflow = node.scrollHeight > node.clientHeight;\n const hasScrollbar = SCROLLBAR_REG_EXP.test(getComputedStyle(node).overflowY);\n if (hasOverflow && hasScrollbar) {\n return node;\n }\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n *\n * Checks if the top of the scrollable element is reached.\n * Floors the scrollTop value.\n */\nconst isTopReached = (element) => Math.floor(element.scrollTop) <= 0;\n/**\n * @hidden\n *\n * Checks if the bottom of the scrollable element is reached.\n * Ceils the scrollTop value.\n */\nconst isBottomReached = (element) => Math.ceil(element.scrollTop) >= element.scrollHeight - element.clientHeight;\n/**\n * @hidden\n *\n * Scrolls the element in the given direction by the provided step.\n *\n * If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),\n * increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.\n *\n * Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.\n */\nconst scrollElementBy = (element, step, direction) => {\n if (!(isPresent(element) && isDocumentAvailable())) {\n return;\n }\n const initialScrollTop = element.scrollTop;\n let currentStep = step;\n let iterations = 0;\n while (initialScrollTop === element.scrollTop &&\n !(direction === ScrollDirection.Up && isTopReached(element)) &&\n !(direction === ScrollDirection.Down && isBottomReached(element)) &&\n iterations < 20 // as the bulgarian saying goes - to ties our underpants\n ) {\n element.scrollTop += (currentStep * direction);\n currentStep += 1;\n iterations += 1;\n }\n};\n\n/**\n * @hidden\n */\nconst copyPageSize = (treeview, source, target) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const sourceGroupSize = treeview.getNodePageSize(source);\n treeview.setNodePageSize(target, sourceGroupSize);\n};\n/**\n * @hidden\n */\nconst incrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize + 1);\n};\n/**\n * @hidden\n */\nconst decrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize - 1);\n};\n\n/**\n * @hidden\n */\nclass HierarchyEditingService {\n constructor(hierarchyBinding) {\n this.hierarchyBinding = hierarchyBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationChildren = this.childrenFor(getDataItem(destinationItem));\n // add the moved node just before the load more button if load more is enabled\n const targetIndex = isPresent(destinationTree.loadMoreService) ?\n Math.min(destinationTree.loadMoreService.getGroupSize(getDataItem(destinationItem)), destinationChildren.length) : // the page size might be greater than the actual children array length\n destinationChildren.length;\n destinationChildren.splice(targetIndex, 0, clonedSourceDataItem);\n setter(this.hierarchyBinding.childrenField)(getDataItem(destinationItem), destinationChildren);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, targetIndex);\n }\n else {\n const destinationParentNodes = this.getParentNodes(destinationItem, destinationTree);\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = destinationParentNodes.indexOf(getDataItem(destinationItem)) + shiftIndex;\n destinationParentNodes.splice(targetIndex, 0, clonedSourceDataItem);\n const parentIndex = destinationItem.parent ? destinationItem.parent.item.index : null;\n this.movedItemNewIndex = buildTreeIndex(parentIndex, targetIndex);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceParentNodes = this.getParentNodes(sourceItem, sourceTree);\n const sourceItemIndex = sourceParentNodes.indexOf(getDataItem(sourceItem));\n sourceParentNodes.splice(sourceItemIndex, 1);\n // emit collapse for the parent node if its last child node was spliced\n collapseEmptyParent(sourceItem.parent, sourceParentNodes, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n getParentNodes(node, treeView) {\n return isPresent(node.parent) ?\n this.childrenFor(getDataItem(node.parent)) :\n treeView.nodes;\n }\n childrenFor(dataItem) {\n return getter(this.hierarchyBinding.childrenField)(dataItem) || [];\n }\n}\n\n/**\n * @hidden\n */\nconst DEFAULT_FILTER_SETTINGS = {\n operator: 'contains',\n ignoreCase: true,\n mode: \"lenient\"\n};\n\n/**\n * @hidden\n */\nclass FilteringBase {\n constructor(component) {\n this.component = component;\n this.visibleNodes = new Set();\n this._filterSettings = DEFAULT_FILTER_SETTINGS;\n }\n /**\n * The settings which are applied when performing a filter on the component's data.\n */\n set filterSettings(settings) {\n this._filterSettings = Object.assign(Object.assign({}, DEFAULT_FILTER_SETTINGS), settings);\n }\n get filterSettings() {\n return this._filterSettings;\n }\n /**\n * Applies a filter and changes the visibility of the component's nodes accordingly.\n */\n set filter(term) {\n this.handleFilterChange(term);\n }\n /**\n * @hidden\n */\n handleFilterChange(term) {\n if (!this.filterData) {\n return;\n }\n this.resetNodesVisibility(this.filterData);\n if (term) {\n filterTree(this.filterData, term, this.filterSettings, this.component.textField);\n }\n this.updateVisibleNodes(this.filterData);\n if (isPresent(this.component.filterStateChange)) {\n this.component.filterStateChange.emit({\n nodes: this.filterData,\n matchCount: this.visibleNodes.size,\n term,\n filterSettings: this.filterSettings\n });\n }\n }\n updateVisibleNodes(items) {\n items.forEach((wrapper) => {\n if (wrapper.visible) {\n this.visibleNodes.add(wrapper.dataItem);\n }\n if (wrapper.children) {\n this.updateVisibleNodes(wrapper.children);\n }\n });\n }\n resetNodesVisibility(items) {\n this.visibleNodes.clear();\n items.forEach((wrapper) => {\n wrapper.visible = true;\n if (wrapper.children) {\n this.resetNodesVisibility(wrapper.children);\n }\n });\n }\n}\nFilteringBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilteringBase, deps: [{ token: DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilteringBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilteringBase, inputs: { filterSettings: \"filterSettings\", filter: \"filter\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilteringBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: DataBoundComponent }]; }, propDecorators: { filterSettings: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DragClueComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.hostClasses = true;\n this.posistionStyle = 'fixed';\n }\n get statusIconClass() {\n switch (this.action) {\n case DropAction.Add: return 'k-i-plus';\n case DropAction.InsertTop: return 'k-i-insert-up';\n case DropAction.InsertBottom: return 'k-i-insert-down';\n case DropAction.InsertMiddle: return 'k-i-insert-middle';\n case DropAction.Invalid:\n default: return 'k-i-cancel';\n }\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.cdr.detectChanges();\n }\n}\nDragClueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDragClueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragClueComponent, selector: \"kendo-treeview-drag-clue\", host: { properties: { \"class.k-header\": \"this.hostClasses\", \"class.k-drag-clue\": \"this.hostClasses\", \"style.position\": \"this.posistionStyle\" } }, ngImport: i0, template: `\n \n \n {{text}}\n \n\n \n
    \n `, isInline: true, directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drag-clue',\n template: `\n \n \n {{text}}\n \n\n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-header']\n }, {\n type: HostBinding,\n args: ['class.k-drag-clue']\n }], posistionStyle: [{\n type: HostBinding,\n args: ['style.position']\n }] } });\n\n/**\n * @hidden\n */\nclass DragAndDropAssetService {\n get componentRef() {\n if (!isPresent(this._componentRef)) {\n throw new Error('The `initalize` method must be called before calling other service methods.');\n }\n return this._componentRef;\n }\n set componentRef(componentRef) {\n this._componentRef = componentRef;\n }\n get element() {\n return this.componentRef.location.nativeElement;\n }\n ngOnDestroy() {\n if (!isPresent(this._componentRef)) {\n return;\n }\n this.element.parentElement.removeChild(this.element);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n move(left, top, offset = 0) {\n this.element.style.left = `${left + offset}px`;\n this.element.style.top = `${top + offset}px`;\n }\n}\nDragAndDropAssetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDragAndDropAssetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst CLUE_OFFSET = 10;\n/**\n * @hidden\n */\nconst RETURN_ANIMATION_DURATION = 200;\n/**\n * @hidden\n */\nclass DragClueService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const clueComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DragClueComponent);\n this.componentRef = container.createComponent(clueComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n ngOnDestroy() {\n this.cancelReturnAnimation();\n this.cancelScroll();\n super.ngOnDestroy();\n }\n move(left, top) {\n super.move(left, top, CLUE_OFFSET);\n }\n animateDragClueToElementPosition(target) {\n if (!(isPresent(target) && isPresent(this.element.animate))) {\n this.hide();\n return;\n }\n const targetElementViewPortCoords = target.getBoundingClientRect();\n const clueElementViewPortCoords = this.element.getBoundingClientRect();\n this.returnAnimation = this.element.animate([\n { transform: 'translate(0, 0)' },\n { transform: `translate(${targetElementViewPortCoords.left - clueElementViewPortCoords.left}px, ${targetElementViewPortCoords.top - clueElementViewPortCoords.top}px)` }\n ], RETURN_ANIMATION_DURATION);\n this.returnAnimation.onfinish = () => this.hide();\n }\n cancelReturnAnimation() {\n if (!isPresent(this.returnAnimation)) {\n return;\n }\n this.returnAnimation.cancel();\n this.returnAnimation = null;\n }\n updateDragClueData(action, sourceItem, destinationItem) {\n const dragClue = this.componentRef.instance;\n if (action === dragClue.action && dataItemsEqual(sourceItem, dragClue.sourceItem) && dataItemsEqual(destinationItem, dragClue.destinationItem)) {\n return;\n }\n dragClue.action = action;\n dragClue.sourceItem = sourceItem;\n dragClue.destinationItem = destinationItem;\n dragClue.detectChanges();\n }\n updateText(text) {\n if (text === this.componentRef.instance.text) {\n return;\n }\n this.componentRef.instance.text = text;\n this.componentRef.instance.detectChanges();\n }\n /**\n * Triggers the first scrollable parent to scroll upwards or downwards.\n * Uses setInterval, so should be called outside the angular zone.\n */\n scrollIntoView({ step, interval }) {\n this.cancelScroll();\n const scrollableContainer = getScrollableContainer(this.element);\n if (!isPresent(scrollableContainer)) {\n return;\n }\n const containerRect = scrollableContainer.getBoundingClientRect();\n const clueRect = this.element.getBoundingClientRect();\n // if the beginning of the scrollable container is above the current viewport, fall-back to 0\n const firstVisibleClientTopPart = Math.max(containerRect.top, 0);\n // start scrolling up when the first visible item is dragged over\n const topLimit = firstVisibleClientTopPart + clueRect.height;\n // if the end of the scrollable container is beneath the current viewport, fall-back to its client height\n // add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached\n const bottomLimit = firstVisibleClientTopPart + Math.min(containerRect.bottom, scrollableContainer.clientHeight);\n if (clueRect.top < topLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Up), interval);\n }\n else if (clueRect.bottom > bottomLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Down), interval);\n }\n }\n /**\n * Cancels out the on-going scroll animation, if present.\n */\n cancelScroll() {\n if (isPresent(this.scrollInterval)) {\n clearInterval(this.scrollInterval);\n this.scrollInterval = null;\n }\n }\n}\nDragClueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });\nDragClueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * @hidden\n */\nclass DropHintComponent {\n constructor(changeDetectorRef) {\n this.changeDetectorRef = changeDetectorRef;\n this.hostClass = true;\n this.position = 'fixed';\n this.pointerEvents = 'none';\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.changeDetectorRef.detectChanges();\n }\n}\nDropHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDropHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropHintComponent, selector: \"kendo-treeview-drop-hint\", host: { properties: { \"class.k-drop-hint-container\": \"this.hostClass\", \"style.position\": \"this.position\", \"style.pointer-events\": \"this.pointerEvents\" } }, ngImport: i0, template: `\n \n
    \n
    \n \n\n \n \n `, isInline: true, directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drop-hint',\n template: `\n \n
    \n
    \n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-drop-hint-container']\n }], position: [{\n type: HostBinding,\n args: ['style.position']\n }], pointerEvents: [{\n type: HostBinding,\n args: ['style.pointer-events']\n }] } });\n\n/**\n * @hidden\n */\nclass DropHintService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const hintComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DropHintComponent);\n this.componentRef = container.createComponent(hintComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n updateDropHintData(action, sourceItem, destinationItem) {\n const dropHint = this.componentRef.instance;\n if (action === dropHint.action && dataItemsEqual(sourceItem, dropHint.sourceItem) && dataItemsEqual(destinationItem, dropHint.destinationItem)) {\n return;\n }\n dropHint.action = action;\n dropHint.sourceItem = sourceItem;\n dropHint.destinationItem = destinationItem;\n dropHint.detectChanges();\n }\n}\nDropHintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });\nDropHintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * Represents the template for the TreeView drag clue when an item is dragged. To define the clue template,\n * nest an `` tag with the `kendoTreeViewDragClueTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n *\n * The text, attempted drop action, source item and destination item are available as context variables in the template:\n *\n *\n * - `let-text=\"text\"` (`string`)\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nclass DragClueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDragClueTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDragClueTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragClueTemplateDirective, selector: \"[kendoTreeViewDragClueTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragClueTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the TreeView drop hint when an item is dragged. To define the hint template,\n * nest an `` tag with the `kendoTreeViewDropHintTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n * The attempted drop action, source item and destination item are available as context variables in the template:\n *\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nclass DropHintTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDropHintTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDropHintTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropHintTemplateDirective, selector: \"[kendoTreeViewDropHintTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDropHintTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst DEFAULT_SCROLL_SETTINGS = {\n enabled: true,\n step: 1,\n interval: 1\n};\n/**\n * A directive which enables the dragging and dropping items inside the current TreeView or between multiple linked TreeView component instances\n * ([see example]({% slug draganddrop_treeview %})).\n *\n * Triggers the [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart),\n * [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag),\n * [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop),\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend),\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * events when the corresponding actions occur on the respective TreeView instance.\n */\nclass DragAndDropDirective {\n constructor(element, zone, treeview, dragClueService, dropHintService) {\n this.element = element;\n this.zone = zone;\n this.treeview = treeview;\n this.dragClueService = dragClueService;\n this.dropHintService = dropHintService;\n /**\n * Specifies whether the `removeItem` event will be fired after an item is dropped when the `ctrl` key is pressed.\n * If enabled, the `removeItem` event will not be fired on the source TreeView\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n *\n * @default false\n */\n this.allowCopy = false;\n /**\n * Specifes the TreeViewComponent instances into which dragged items from the current TreeViewComponent can be dropped\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n */\n this.dropZoneTreeViews = [];\n /**\n * Specifies the distance in pixels from the initial item pointerdown event, before the dragging is initiated.\n * The `nodeDragStart` and all consequent TreeView drag events will not be fired until the actual dragging begins.\n *\n * @default 5\n */\n this.startDragAfter = 5;\n /**\n * Controlls the auto-scrolling behavior during drag-and-drop ([see example]({% slug draganddrop_treeview %}#toc-auto-scrolling)).\n * Enbaled by default. To turn the auto-scrolling off, set this prop to `false`.\n *\n * By default, the scrolling will be performed by 1 pixel at every 1 millisecond, when the dragged item reaches the top or the bottom of the scrollable container.\n * The `step` and `interval` can be overridden by providing a `DragAndDropScrollSettings` object to this prop.\n *\n * @default true\n */\n this.autoScroll = true;\n /**\n * @hidden\n */\n this.userSelectStyle = 'none';\n /**\n * Describes the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the fixed children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\n this.containerOffset = { top: 0, left: 0 };\n this.treeview.touchActions = false;\n }\n get scrollSettings() {\n const userProvidedSettings = typeof this.autoScroll === 'boolean' ?\n { enabled: this.autoScroll } :\n this.autoScroll;\n return Object.assign({}, DEFAULT_SCROLL_SETTINGS, userProvidedSettings);\n }\n ngAfterContentInit() {\n this.initalizeDraggable();\n this.dragClueService.initialize(this.treeview.assetsContainer, this.dragClueTemplate && this.dragClueTemplate.templateRef);\n this.dropHintService.initialize(this.treeview.assetsContainer, this.dropHintTemplate && this.dropHintTemplate.templateRef);\n }\n ngOnDestroy() {\n this.draggable.destroy();\n }\n /**\n * @hidden\n */\n handlePress({ originalEvent }) {\n if (!isContent(originalEvent.target)) {\n return;\n }\n // store the drag target on press, show it only when it's actually dragged\n this.draggedItem = closestWithMatch(originalEvent.target, '.k-treeview-leaf');\n // record the current pointer down coords - copared to the `startDragAfter` value to calculate whether to initiate dragging\n this.pendingDragStartEvent = originalEvent;\n }\n /**\n * @hidden\n */\n handleDrag({ originalEvent, clientX, clientY }) {\n if (this.shouldInitiateDragStart({ clientX, clientY })) {\n this.initiateDragStart();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n if (hasObservers(this.treeview.nodeDrag)) {\n this.zone.run(() => this.notifyDrag(originalEvent, dropTarget));\n }\n const targetTreeView = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, targetTreeView, this.containerOffset);\n const dropHintAnchor = closestWithMatch(dropTarget, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n const dropAction = getDropAction(dropPosition, dropTarget);\n const sourceItem = treeItemFromEventTarget(this.treeview, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(targetTreeView, dropTarget);\n this.updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem);\n this.updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem);\n if (this.scrollSettings.enabled) {\n this.dragClueService.scrollIntoView(this.scrollSettings);\n }\n }\n /**\n * @hidden\n */\n handleRelease({ originalEvent, clientY }) {\n if (this.scrollSettings.enabled) {\n this.dragClueService.cancelScroll();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n const sourceTree = this.treeview;\n const destinationTree = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, this.getTargetTreeView(dropTarget), this.containerOffset);\n const sourceItem = treeItemFromEventTarget(sourceTree, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(destinationTree, dropTarget);\n if (isPresent(destinationItem) && isPresent(dropPosition)) {\n this.zone.run(() => this.notifyDrop({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }, originalEvent));\n }\n else {\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n if (hasObservers(this.treeview.nodeDragEnd)) {\n this.zone.run(() => this.notifyDragEnd({ sourceItem, destinationItem, originalEvent }));\n }\n this.dropHintService.hide();\n this.draggedItem = null;\n }\n updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem) {\n if (!isPresent(dropHintAnchor) || dropPosition === DropPosition.Over || !isPresent(dropPosition)) {\n this.dropHintService.hide();\n return;\n }\n const anchorViewPortCoords = dropHintAnchor.getBoundingClientRect();\n const insertBefore = dropPosition === DropPosition.Before;\n const top = insertBefore ? anchorViewPortCoords.top : (anchorViewPortCoords.top + anchorViewPortCoords.height);\n this.dropHintService.updateDropHintData(dropAction, sourceItem, destinationItem);\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dropHintService.move(anchorViewPortCoords.left - this.containerOffset.left, top - this.containerOffset.top);\n this.dropHintService.show();\n }\n updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem) {\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dragClueService.move(clientX - this.containerOffset.left, clientY - this.containerOffset.top);\n this.dragClueService.updateDragClueData(dropAction, sourceItem, destinationItem);\n this.dragClueService.show();\n }\n initalizeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n notifyDragStart(originalEvent, dropTarget) {\n const sourceItem = treeItemFromEventTarget(this.treeview, dropTarget);\n const event = new TreeItemDragStartEvent({ sourceItem, originalEvent });\n this.treeview.nodeDragStart.emit(event);\n return event;\n }\n notifyDrag(originalEvent, dropTarget) {\n const dragEvent = {\n sourceItem: treeItemFromEventTarget(this.treeview, this.draggedItem),\n destinationItem: treeItemFromEventTarget(this.getTargetTreeView(dropTarget), dropTarget),\n originalEvent\n };\n this.treeview.nodeDrag.emit(dragEvent);\n }\n notifyDrop(args, originalEvent) {\n const event = new TreeItemDropEvent(args, originalEvent);\n args.destinationTree.nodeDrop.emit(event);\n // disable the animations on drop and restore them afterwards (if they were initially turned on)\n this.disableAnimationsForNextTick(args.destinationTree);\n if (args.sourceTree !== args.destinationTree) {\n this.disableAnimationsForNextTick(args.sourceTree);\n }\n if (!event.isDefaultPrevented() && event.isValid) {\n this.dragClueService.hide();\n // order matters in a flat data binding scenario (first add, then remove)\n args.destinationTree.addItem.emit(args);\n if (!(originalEvent.ctrlKey && this.allowCopy)) {\n args.sourceTree.removeItem.emit(args);\n }\n }\n else if (event.isDefaultPrevented()) {\n // directly hide the clue if the default is prevented\n this.dragClueService.hide();\n }\n else if (!event.isValid) {\n // animate the clue back to the source item position if marked as invalid\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n }\n notifyDragEnd(dragEndEvent) {\n this.treeview.nodeDragEnd.emit(dragEndEvent);\n }\n getTargetTreeView(dropTarget) {\n const treeViewTagName = this.treeview.element.nativeElement.tagName;\n const targetTreeView = closestWithMatch(dropTarget, treeViewTagName);\n return [this.treeview, ...this.dropZoneTreeViews].find(treeView => isPresent(treeView) && treeView.element.nativeElement === targetTreeView);\n }\n disableAnimationsForNextTick(treeView) {\n // the treeView.animate getter returns `true` when the animations are turned off\n // confusing, but seems on purpose (the `animate` prop sets the value of the @.disabled host-bound attribute)\n if (treeView.animate) {\n return;\n }\n treeView.animate = false;\n this.zone.runOutsideAngular(() => setTimeout(() => treeView.animate = true));\n }\n shouldInitiateDragStart(currentPointerCoords) {\n if (!isPresent(this.pendingDragStartEvent)) {\n return false;\n }\n const distanceFromPointerDown = Math.sqrt(Math.pow((this.pendingDragStartEvent.clientX - currentPointerCoords.clientX), 2) +\n Math.pow((this.pendingDragStartEvent.clientY - currentPointerCoords.clientY), 2));\n return distanceFromPointerDown >= this.startDragAfter;\n }\n initiateDragStart() {\n if (hasObservers(this.treeview.nodeDragStart)) {\n const dragStartEvent = this.zone.run(() => this.notifyDragStart(this.pendingDragStartEvent, getDropTarget(this.pendingDragStartEvent)));\n if (dragStartEvent.isDefaultPrevented()) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n }\n this.dragClueService.cancelReturnAnimation();\n this.dragClueService.updateText(this.draggedItem.innerText);\n this.containerOffset = getContainerOffset(this.draggedItem);\n this.pendingDragStartEvent = null;\n }\n}\nDragAndDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TreeViewComponent }, { token: DragClueService }, { token: DropHintService }], target: i0.ɵɵFactoryTarget.Directive });\nDragAndDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragAndDropDirective, selector: \"[kendoTreeViewDragAndDrop]\", inputs: { allowCopy: \"allowCopy\", dropZoneTreeViews: \"dropZoneTreeViews\", startDragAfter: \"startDragAfter\", autoScroll: \"autoScroll\" }, host: { properties: { \"style.user-select\": \"this.userSelectStyle\", \"style.-ms-user-select\": \"this.userSelectStyle\", \"style.-moz-user-select\": \"this.userSelectStyle\", \"style.-webkit-user-select\": \"this.userSelectStyle\" } }, providers: [\n DragClueService,\n DropHintService\n ], queries: [{ propertyName: \"dragClueTemplate\", first: true, predicate: DragClueTemplateDirective, descendants: true }, { propertyName: \"dropHintTemplate\", first: true, predicate: DropHintTemplateDirective, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDrop]',\n providers: [\n DragClueService,\n DropHintService\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TreeViewComponent }, { type: DragClueService }, { type: DropHintService }]; }, propDecorators: { allowCopy: [{\n type: Input\n }], dropZoneTreeViews: [{\n type: Input\n }], startDragAfter: [{\n type: Input\n }], autoScroll: [{\n type: Input\n }], dragClueTemplate: [{\n type: ContentChild,\n args: [DragClueTemplateDirective, { static: false }]\n }], dropHintTemplate: [{\n type: ContentChild,\n args: [DropHintTemplateDirective, { static: false }]\n }], userSelectStyle: [{\n type: HostBinding,\n args: ['style.user-select']\n }, {\n type: HostBinding,\n args: ['style.-ms-user-select']\n }, {\n type: HostBinding,\n args: ['style.-moz-user-select']\n }, {\n type: HostBinding,\n args: ['style.-webkit-user-select']\n }] } });\n\nconst indexBuilder$1 = new IndexBuilderService();\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder$1.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of child nodes.\n */\nclass HierarchyBindingDirective extends FilteringBase {\n constructor(component, dragAndDropDirective) {\n super(component);\n this.component = component;\n this.dragAndDropDirective = dragAndDropDirective;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n this.originalData = [];\n const shouldFilter = !isPresent(this.dragAndDropDirective);\n this.component.isVisible = shouldFilter ? (node) => this.visibleNodes.has(node) : isVisible;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n set childrenField(value) {\n if (!value) {\n throw new Error(\"'childrenField' cannot be empty\");\n }\n this._childrenField = value;\n }\n /**\n * The nodes which will be displayed by the TreeView.\n */\n set nodes(values) {\n this.originalData = values || [];\n this.filterData = mapToWrappers(values, this.childrenField) || [];\n this.updateVisibleNodes(this.filterData);\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n get childrenField() {\n return this._childrenField;\n }\n ngOnInit() {\n if (isPresent(this.childrenField)) {\n this.component.children = item => of(getter(this.childrenField)(item));\n this.component.hasChildren = item => {\n const children = getter(this.childrenField)(item);\n return Boolean(children && children.length);\n };\n this.component.editService = new HierarchyEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n ngOnChanges(changes) {\n if (isChanged('childrenField', changes, false)) {\n this.nodes = this.originalData;\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n}\nHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: DataBoundComponent }, { token: DragAndDropDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HierarchyBindingDirective, selector: \"[kendoTreeViewHierarchyBinding]\", inputs: { childrenField: \"childrenField\", nodes: \"nodes\", isVisible: \"isVisible\", loadOnDemand: \"loadOnDemand\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewHierarchyBinding]' }]\n }], ctorParameters: function () { return [{ type: DataBoundComponent }, { type: DragAndDropDirective, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { childrenField: [{\n type: Input\n }], nodes: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions must have a unary.\n */\nconst compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n\n/**\n * @hidden\n */\nclass FlatEditingService {\n constructor(flatBinding) {\n this.flatBinding = flatBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationItemId = getter(this.flatBinding.idField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemId);\n const lastChildNodeIndex = this.getLastVisibleChildNodeIndex(destinationTree, this.flatBinding.originalData, getDataItem(destinationItem));\n // insert after the last visible child\n const targetIndex = lastChildNodeIndex + 1;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const focusTarget = this.fetchChildNodes(getDataItem(destinationItem), destinationTree).indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, focusTarget);\n }\n else {\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = this.flatBinding.originalData.indexOf(getDataItem(destinationItem)) + shiftIndex;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n const destinationItemParentId = getter(this.flatBinding.parentIdField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemParentId);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const parentIndex = destinationItem.parent ?\n destinationItem.parent.item.index :\n null;\n const parentContainer = destinationItem.parent ?\n this.fetchChildNodes(getDataItem(destinationItem.parent), destinationTree) :\n destinationTree.nodes;\n const focusTarget = parentContainer.indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(parentIndex, focusTarget);\n }\n if (sourceTree !== destinationTree) {\n this.addChildNodes(clonedSourceDataItem, sourceTree);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceDataItem = getDataItem(sourceItem);\n const sourceItemIndex = this.flatBinding.originalData.indexOf(sourceDataItem);\n this.flatBinding.originalData.splice(sourceItemIndex, 1);\n if (sourceTree !== destinationTree) {\n this.removeChildNodes(sourceDataItem, sourceTree);\n }\n this.rebindData();\n // emit collapse for the parent node if its last child node was spliced\n const parentChildren = sourceItem.parent ? sourceItem.parent.children : [];\n collapseEmptyParent(sourceItem.parent, parentChildren, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n addChildNodes(dataItem, source) {\n const itemChildren = this.fetchAllDescendantNodes(dataItem, source);\n this.flatBinding.originalData.push(...itemChildren);\n }\n removeChildNodes(dataItem, source) {\n const sourceChildren = this.fetchAllDescendantNodes(dataItem, source);\n sourceChildren.forEach(item => {\n const index = this.flatBinding.originalData.indexOf(item);\n this.flatBinding.originalData.splice(index, 1);\n });\n }\n fetchAllDescendantNodes(node, treeview) {\n let nodes = this.fetchChildNodes(node, treeview);\n nodes.forEach(node => nodes = nodes.concat(this.fetchAllDescendantNodes(node, treeview) || []));\n return nodes;\n }\n fetchChildNodes(node, treeview) {\n if (!node) {\n return [];\n }\n let nodes = [];\n treeview\n .children(node)\n .pipe(take(1))\n .subscribe(children => nodes = nodes.concat(children || []));\n return nodes;\n }\n getLastVisibleChildNodeIndex(treeview, data, node) {\n if (!isPresent(treeview.loadMoreService) || !treeview.hasChildren(node)) {\n return data.length;\n }\n const visibleNodesCount = treeview.loadMoreService.getGroupSize(node);\n const visibleChildren = this.fetchChildNodes(node, treeview).slice(0, visibleNodesCount);\n const lastNode = visibleChildren[visibleChildren.length - 1];\n const lastNodeIndex = data.indexOf(lastNode);\n return lastNodeIndex;\n }\n rebindData() {\n this.flatBinding.nodes = this.flatBinding.originalData;\n }\n}\n\nconst findChildren = (prop, nodes, value) => nodes.filter((x) => prop(x) === value);\nconst indexBuilder = new IndexBuilderService();\nconst mapToTree = (currentLevelNodes, allNodes, parentIdField, idField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToTree(findChildren(getter(parentIdField), allNodes || [], getter(idField)(node)), allNodes, parentIdField, idField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes.\n */\nclass FlatDataBindingDirective extends FilteringBase {\n constructor(component) {\n super(component);\n this.component = component;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n /**\n * @hidden\n */\n this.originalData = [];\n this.component.isVisible = (node) => this.visibleNodes.has(node);\n }\n /**\n * The nodes which will be displayed by the TreeView.\n */\n set nodes(values) {\n this.originalData = values || [];\n if (!isNullOrEmptyString(this.parentIdField)) {\n const prop = getter(this.parentIdField);\n this.component.nodes = this.originalData.filter(compose(isBlank, prop));\n this.filterData = mapToTree(this.component.nodes, this.originalData, this.parentIdField, this.idField);\n this.updateVisibleNodes(this.filterData);\n }\n else {\n this.component.nodes = this.originalData.slice(0);\n }\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (isPresent(this.parentIdField) && isPresent(this.idField)) {\n const fetchChildren = (node) => findChildren(getter(this.parentIdField), this.originalData || [], getter(this.idField)(node));\n this.component.hasChildren = (node) => fetchChildren(node).length > 0;\n this.component.children = (node) => of(fetchChildren(node));\n this.component.editService = new FlatEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (isChanged('parentIdField', changes, false)) {\n this.nodes = this.originalData;\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n}\nFlatDataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatDataBindingDirective, deps: [{ token: DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFlatDataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatDataBindingDirective, selector: \"[kendoTreeViewFlatDataBinding]\", inputs: { nodes: \"nodes\", parentIdField: \"parentIdField\", idField: \"idField\", loadOnDemand: \"loadOnDemand\", isVisible: \"isVisible\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatDataBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: \"[kendoTreeViewFlatDataBinding]\" }]\n }], ctorParameters: function () { return [{ type: DataBoundComponent }]; }, propDecorators: { nodes: [{\n type: Input\n }], parentIdField: [{\n type: Input\n }], idField: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], isVisible: [{\n type: Input\n }] } });\n\nconst COMPONENT_DIRECTIVES$1 = [\n CheckBoxComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the CheckBox component.\n */\nclass CheckBoxModule {\n}\nCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, declarations: [CheckBoxComponent], exports: [CheckBoxComponent] });\nCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1]\n }]\n }] });\n\n/**\n * A directive which enables the update of the initially provided data array during drag-and-drop.\n *\n * Either use this directive in combination with one of the data binding directives ([`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %})\n * or [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %})) which set their own edit handlers, or provide\n * your own [`editService`]({% slug api_treeview_editservice %}) to this directive. The latter subscribes to and calls the\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * handlers when the corresponding events are triggered by the TreeView component.\n */\nclass DragAndDropEditingDirective {\n constructor(treeview) {\n this.treeview = treeview;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeview.addItem.subscribe(this.handleAdd.bind(this)));\n this.subscriptions.add(this.treeview.removeItem.subscribe(this.handleRemove.bind(this)));\n }\n /**\n * Specifies the handlers called on drag-and-drop [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem)\n * and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events.\n */\n set editService(service) {\n this.treeview.editService = service;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleAdd(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.add(args);\n }\n handleRemove(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.remove(args);\n }\n}\nDragAndDropEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropEditingDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDragAndDropEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragAndDropEditingDirective, selector: \"[kendoTreeViewDragAndDropEditing]\", inputs: { editService: \"editService\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDropEditing]'\n }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { editService: [{\n type: Input\n }] } });\n\nconst LOAD_MORE_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\n/**\n * A directive that enables the display of only a limited amount of nodes per level\n * ([see example]({% slug loadmorebutton_treeview %})).\n */\nclass LoadMoreDirective {\n constructor(treeview) {\n this.treeview = treeview;\n /**\n * Keeps track of the current page size of each node over expand/collapse cycles.\n */\n this.pageSizes = new Map();\n /**\n * Used as an identifier for the root page size as the root collection of nodes is not associated with a data item.\n */\n this.rootLevelId = guid();\n this.treeview.loadMoreService = {\n getInitialPageSize: this.getInitalPageSize.bind(this),\n getGroupSize: this.getGroupSize.bind(this),\n setGroupSize: this.setGroupSize.bind(this),\n getTotalNodesCount: this.getTotalNodesCount.bind(this)\n };\n }\n /**\n * Specifies the callback that will be called when the load more button is clicked.\n * Providing a function is only required when additional nodes are fetched on demand\n * ([see example]({% slug loadmorebutton_treeview %}#toc-remote-data)).\n */\n set loadMoreNodes(loadMoreNodes) {\n if (typeof loadMoreNodes === 'string') {\n return;\n }\n this.treeview.loadMoreService.loadMoreNodes = loadMoreNodes;\n }\n ngOnChanges() {\n this.verifySettings();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.pageSize)) {\n throw new Error(`To use the TreeView \\`kendoTreeViewLoadMore\\` directive, you need to assign a \\`pageSize\\` value. See ${LOAD_MORE_DOC_LINK}.`);\n }\n const loadMoreNodes = this.treeview.loadMoreService.loadMoreNodes;\n if (isPresent(loadMoreNodes) && typeof loadMoreNodes !== 'function') {\n throw new Error(`The passed value to the \\`kendoTreeViewLoadMore\\` directive must be a function that retrieves additional nodes. See ${LOAD_MORE_DOC_LINK}.`);\n }\n if (isPresent(loadMoreNodes) && !isPresent(this.totalField)) {\n throw new Error(`When a function to fetch additional nodes is provided to the \\`kendoTreeViewLoadMore\\` directive, the \\`totalField\\` and \\`totalRootNodes\\` values must also be provided. See ${LOAD_MORE_DOC_LINK}.`);\n }\n }\n getGroupSize(dataItem) {\n const itemKey = dataItem || this.rootLevelId;\n return this.pageSizes.has(itemKey) ? this.pageSizes.get(itemKey) : this.pageSize;\n }\n setGroupSize(dataItem, pageSize) {\n const itemKey = dataItem || this.rootLevelId;\n const normalizedSizeValue = pageSize > 0 ? pageSize : 0;\n this.pageSizes.set(itemKey, normalizedSizeValue);\n }\n getTotalNodesCount(dataItem, loadedNodesCount) {\n if (isPresent(dataItem) && isPresent(this.totalField)) {\n return dataItem[this.totalField];\n }\n else if (!isPresent(dataItem) && isPresent(this.totalRootNodes)) {\n return this.totalRootNodes;\n }\n else {\n return loadedNodesCount;\n }\n }\n getInitalPageSize() {\n return this.pageSize;\n }\n}\nLoadMoreDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nLoadMoreDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadMoreDirective, selector: \"[kendoTreeViewLoadMore]\", inputs: { loadMoreNodes: [\"kendoTreeViewLoadMore\", \"loadMoreNodes\"], pageSize: \"pageSize\", totalRootNodes: \"totalRootNodes\", totalField: \"totalField\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMore]'\n }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { loadMoreNodes: [{\n type: Input,\n args: ['kendoTreeViewLoadMore']\n }], pageSize: [{\n type: Input\n }], totalRootNodes: [{\n type: Input\n }], totalField: [{\n type: Input\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective], imports: [CommonModule,\n CheckBoxModule,\n InputsModule], exports: [TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[\n CommonModule,\n CheckBoxModule,\n InputsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n imports: [\n CommonModule,\n CheckBoxModule,\n InputsModule\n ],\n entryComponents: [\n DragClueComponent,\n DropHintComponent\n ]\n }]\n }] });\n\nconst EXPORTS = [\n TreeViewComponent,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DropHintTemplateDirective,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the TreeView component.\n */\nclass TreeViewModule {\n}\nTreeViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTreeViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, imports: [SharedModule], exports: [TreeViewComponent,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DropHintTemplateDirective,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective] });\nTreeViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [EXPORTS],\n imports: [SharedModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckDirective, DataBoundComponent, DisableDirective, DragAndDropDirective, DragAndDropEditingDirective, DragClueService, DragClueTemplateDirective, DropAction, DropHintService, DropHintTemplateDirective, DropPosition, ExpandDirective, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, LoadMoreButtonTemplateDirective, LoadMoreDirective, NodeTemplateDirective, SelectDirective, TreeItemDragEvent, TreeItemDragStartEvent, TreeItemDropEvent, TreeViewComponent, TreeViewModule };\n\n","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n/**\n * @hidden\n */\nexport function fieldList(field) {\n const fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n return fields;\n}\n","import { fieldList } from './field-list';\nconst getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = fieldList(field);\n getterCache[field] = function (obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","import { fieldList } from './field-list';\nconst setterCache = {};\n// tslint:disable-next-line:no-string-literal\nsetterCache['undefined'] = obj => obj;\nconst defaultValue = (nextField, options) => options && options.arrays && !isNaN(Number(nextField)) ? [] : {};\n/**\n * @hidden\n */\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n const fields = fieldList(field);\n setterCache[field] = (obj, value, options) => {\n let root = obj;\n const depth = fields.length - 1;\n for (let idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || defaultValue(fields[idx + 1], options);\n }\n root[fields[depth]] = value;\n };\n return setterCache[field];\n}\n","export { detectMobileOS, detectDesktopBrowser, browser, mobileOS, touch, msPointers, pointers, touchEnabled } from './support';\nexport { getter } from './accessors/getter';\nexport { setter } from './accessors/setter';\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nconst agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nconst osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nconst desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nconst mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nconst testRx = (agent, rxs, dflt) => {\n for (let rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport const detectMobileOS = (ua) => {\n let minorVersion;\n let match = [];\n for (let agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n const os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport const detectDesktopBrowser = (ua) => {\n let browserInfo = null;\n let match = [];\n for (let agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nconst userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport const browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport const mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport const touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport const msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport const pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport const touchEnabled = mobileOS && (touch || msPointers || pointers);\n","/**\n * @hidden\n */\nexport const isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n","import { isPresent } from './utils';\nconst getterCache = {};\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport const getter = (field, safe) => {\n const key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n const fields = [];\n field.replace(FIELD_REGEX, (_, index, indexAccessor, field) => {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = obj => {\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\nimport { sort } from './sorting/sort';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport const orderBy = (data, descriptors) => {\n if (descriptors.some(x => isPresent(x.dir))) {\n data = data.slice(0);\n const comparer = composeSortDescriptors(descriptors);\n sort(data, 0, data.length, comparer);\n }\n return data;\n};\nconst defaultComparer = (a, b) => a === b;\nconst normalizeComparer = (comparer) => {\n if (isString(comparer)) {\n const accessor = getter(comparer);\n comparer = (a, b) => accessor(a) === accessor(b);\n }\n return comparer;\n};\nconst _distinct = (data, comparer) => data.filter((x, idx, xs) => xs.findIndex(comparer.bind(null, x)) === idx);\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport const distinct = (data, comparer = defaultComparer) => _distinct(data, normalizeComparer(comparer));\n/**\n * @hidden\n */\nexport const count = (data, predicate) => {\n let counter = 0;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport const limit = (data, predicate) => {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport const process = (data, state) => {\n const { skip: skipCount, take: takeCount, filter: filterDescriptor, sort, group } = state;\n const sortDescriptors = [...normalizeGroups(group || []), ...sort || []];\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n const hasFilters = isPresent(filterDescriptor) && filter.length;\n const hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n let total;\n const transformers = [];\n let predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n const transform = compose(...transformers);\n const result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","import { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport const wrapIf = predicate => (str, ...args) => predicate() ? `${str[0]}${args[0]}${str[1]}` : args[0];\n/**\n * @hidden\n */\nexport const toUTC = (date) => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n/**\n * @hidden\n */\nexport const quote = ({ field, value, ignoreCase, operator }) => ({\n value: `'${value.replace(/'/g, \"''\")}'`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const encodeValue = ({ field, value, ignoreCase, operator }) => ({\n value: `${encodeURIComponent(value)}`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const toLower = ({ field, value, ignoreCase, operator }) => ({\n field: wrapIf(() => ignoreCase) `tolower(${field})`,\n value,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const normalizeField = ({ field, value, ignoreCase, operator }) => ({\n value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const isStringValue = x => isString(x.value);\n/**\n * @hidden\n */\nexport const isDateValue = x => isDate(x.value);\n/**\n * @hidden\n */\nexport const serializeFilters = (map, join) => (filter) => {\n const brackets = wrapIf(() => filter.filters.length > 1);\n return brackets `(${filter.filters\n .map(map)\n .join(join(filter))})`;\n};\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport const isCompositeFilterDescriptor = (source) => {\n return isPresent(source.filters);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport const compileFilter = (descriptor) => {\n if (!descriptor || descriptor.filters.length === 0) {\n return () => true;\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport const filterBy = (data, descriptor) => {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nconst logic = {\n \"or\": {\n concat: (acc, fn) => a => acc(a) || fn(a),\n identity: () => false\n },\n \"and\": {\n concat: (acc, fn) => a => acc(a) && fn(a),\n identity: () => true\n }\n};\nconst operatorsMap = {\n contains: (a, b) => (a || \"\").indexOf(b) >= 0,\n doesnotcontain: (a, b) => (a || \"\").indexOf(b) === -1,\n doesnotendwith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0,\n doesnotstartwith: (a, b) => (a || \"\").lastIndexOf(b, 0) === -1,\n endswith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0,\n eq: (a, b) => a === b,\n gt: (a, b) => a > b,\n gte: (a, b) => a >= b,\n isempty: (a) => a === '',\n isnotempty: (a) => a !== '',\n isnotnull: (a) => isPresent(a),\n isnull: (a) => isBlank(a),\n lt: (a, b) => a < b,\n lte: (a, b) => a <= b,\n neq: (a, b) => a != b,\n startswith: (a, b) => (a || \"\").lastIndexOf(b, 0) === 0\n};\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst convertValue = (value, ignoreCase) => {\n if (value != null && isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nconst typedGetter = (prop, value, ignoreCase) => {\n if (!isPresent(value)) {\n return prop;\n }\n let acc = prop;\n if (isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = a => {\n const x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return a => {\n const x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nconst transformFilter = ({ field, ignoreCase, value, operator }) => {\n field = !isPresent(field) ? a => a : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n const itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n const op = isFunction(operator) ? operator : operatorsMap[operator];\n return a => op(itemProp(a), value, ignoreCase);\n};\n/**\n * @hidden\n */\nexport const transformCompositeFilter = (filter) => {\n const combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(x => isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x))\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nconst operatorMap = (key) => ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key);\nconst normalizeOperator = (descriptor) => {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(filter => {\n const result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nconst normalizeDescriptor = (descriptor) => {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport const normalizeFilters = (descriptor) => {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","/**\n * @hidden\n */\nexport const ifElse = (predicate, right, left) => value => predicate(value) ? right(value) : left(value);\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport const compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n/**\n * @hidden\n */\nexport const constant = x => () => x;\n/**\n * @hidden\n */\nexport const identity = x => x;\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nconst identity = map(x => x);\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult]({% slug api_kendo-data-query_aggregateresult %}) configuration.\n */\n// tslint:enable:max-line-length\nexport const aggregateBy = (data, descriptors = [], transformers = identity) => {\n const initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n const result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport const normalizeGroups = (descriptors) => {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(x => Object.assign({ dir: \"asc\" }, x));\n};\nconst identity = map(x => x);\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport const groupBy = (data, descriptors = [], transformers = identity, originalData = data) => {\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n const descriptor = descriptors[0];\n const initialValue = {};\n const view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n const result = [];\n Object.keys(view).forEach(field => {\n Object.keys(view[field]).forEach(value => {\n const group = view[field][value];\n let aggregateResult = {};\n let filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","export { isCompositeFilterDescriptor } from './filtering/filter-descriptor.interface';\nexport { toODataString } from './odata.operators';\nexport { toDataSourceRequestString, toDataSourceRequest } from './mvc/operators';\nexport { translateDataSourceResultGroups, translateAggregateResults } from './mvc/deserialization';\nexport { orderBy, process, distinct } from './array.operators';\nexport { getter } from './accessor';\nexport { filterBy, compileFilter } from './filtering/filter-expression.factory';\nexport { groupBy } from './grouping/group.operators';\nexport { composeSortDescriptors } from './sorting/sort-array.operator';\nexport { normalizeFilters } from './filtering/filter.operators';\nexport { normalizeGroups } from './grouping/group.operators';\nexport { aggregateBy } from './grouping/aggregate.operators';\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nconst set = (field, target, value) => {\n target[field] = value;\n return target;\n};\nconst toCamelCase = str => str.replace(/(^[A-Z])/g, (_, g1) => g1.toLowerCase());\nconst prop = (fieldName) => (obj) => {\n const value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n};\nconst member = prop(\"Member\");\nconst aggregateMethodName = prop(\"AggregateMethodName\");\nconst value = prop(\"Value\");\nconst convert = mapper => values => Object.keys(values).reduce(mapper.bind(null, values), {});\nconst translateAggregate = convert((source, acc, field) => set(field.toLowerCase(), acc, source[field]));\nconst translateAggregates = convert((source, acc, field) => set(field, acc, translateAggregate(source[field])));\nconst valueOrDefault = (value, defaultValue) => isPresent(value) ? value : defaultValue;\nconst normalizeGroup = group => ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n});\nconst translateGroup = compose(({ field, hasSubgroups, value, aggregates, items }) => ({\n aggregates: translateAggregates(aggregates),\n field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value\n}), normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport const translateDataSourceResultGroups = (data) => data.map(translateGroup);\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport const translateAggregateResults = (data) => ((data || []).reduce((acc, x) => set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))), {}));\n","import { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nconst toQueryString = values => values.reduce((acc, [key, value]) => [...acc, `${key}=${value}`], []);\nconst toObject = values => values.reduce((acc, [key, value]) => (Object.assign({}, acc, { [key]: value })), {});\nconst pairwise = key => value => [key, value];\nconst empty = () => null;\nconst isNotEmptyArray = value => isPresent(value) && isArray(value) && value.length > 0;\nconst has = accessor => value => isPresent(accessor(value));\nconst isNotEmpty = accessor => value => isNotEmptyArray(accessor(value));\nconst runOrEmpty = (predicate, fn) => ifElse(predicate, fn, empty);\nconst calcPage = ({ skip, take }) => Math.floor((skip || 0) / take) + 1;\nconst formatDescriptors = (accessor, formatter) => state => (accessor(state).map(formatter).join(\"~\"));\nconst removeAfter = (what) => (str) => str.slice(0, str.indexOf(what));\nconst replace = (patterns) => compose(...patterns.map(([left, right]) => (s) => s.replace(new RegExp(left, \"g\"), right)));\nconst sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nconst removeAfterDot = removeAfter(\".\");\nconst directionFormatter = ({ field, dir = \"asc\" }) => `${field}-${dir}`;\nconst aggregateFormatter = ({ field, aggregate }) => `${field}-${aggregate}`;\nconst take = getter(\"take\");\nconst aggregates = getter(\"aggregates\");\nconst skip = getter(\"skip\");\nconst group = getter(\"group\");\nconst sort = getter(\"sort\", true);\nconst formatSort = formatDescriptors(sort, directionFormatter);\nconst formatGroup = formatDescriptors(group, directionFormatter);\nconst formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nconst prefixDateValue = value => `datetime'${value}'`;\nconst formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nconst formatDate = ({ field, value, ignoreCase, operator }) => ({\n value: formatDateValue(value),\n field,\n ignoreCase,\n operator\n});\nconst normalizeSort = (state) => Object.assign({}, state, {\n sort: (sort(state) || []).filter(({ dir }) => isNotNullOrEmptyString(dir))\n});\nconst transformSkip = compose(pairwise('page'), calcPage);\nconst transformTake = compose(pairwise('pageSize'), take);\nconst transformGroup = compose(pairwise('group'), formatGroup);\nconst transformSort = compose(pairwise('sort'), formatSort);\nconst transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nconst serializePage = runOrEmpty(has(skip), transformSkip);\nconst serializePageSize = runOrEmpty(has(take), transformTake);\nconst serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nconst serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nconst serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nconst hasField = ({ field }) => isNotNullOrEmptyString(field);\nconst filterFormatter = ({ field, operator, value }) => `${field}~${operator}~${value}`;\nconst dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nconst typedFormatter = encode => runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter));\nconst join = ({ logic }) => `~${logic}~`;\nconst serialize = encode => serializeFilters(filter => ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter), join);\nconst serializeFilter = ({ filter }, encode) => {\n if (filter && filter.filters) {\n const filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nconst rules = (state, encode = true) => key => ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n}[key]);\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport const toDataSourceRequestString = (state) => (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&'));\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport const toDataSourceRequest = (state) => (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent)));\n","import { isCompositeFilterDescriptor } from './filtering/filter-descriptor.interface';\nimport { compose, ifElse } from './funcs';\nimport { normalizeField, quote, toLower, isDateValue, isStringValue, serializeFilters, encodeValue, toUTC } from './filter-serialization.common';\nimport { normalizeFilters } from './filtering/filter.operators';\nconst formatDate = ({ utcDates }) => ({ field, value, ignoreCase, operator }) => ({\n value: JSON.stringify(!utcDates ? toUTC(value) : value).replace(/\"/g, \"\"),\n field,\n ignoreCase,\n operator\n});\nconst fnFormatter = ({ operator }) => ({ field, value }) => `${operator}(${field},${value})`;\nconst singleOperatorFormatter = ({ operator }) => ({ field, value }) => `${field} ${operator} ${value}`;\nconst stringFormat = formatter => compose(formatter, encodeValue, quote, toLower, normalizeField);\nconst stringFnOperator = settings => stringFormat(fnFormatter(settings));\nconst stringOperator = settings => stringFormat(singleOperatorFormatter(settings));\nconst numericOperator = settings => compose(singleOperatorFormatter(settings), normalizeField);\nconst dateOperator = settings => compose(singleOperatorFormatter(settings), normalizeField, formatDate(settings));\nconst ifDate = settings => ifElse(isDateValue, dateOperator(settings), numericOperator(settings));\nconst typedOperator = settings => ifElse(isStringValue, stringOperator(settings), ifDate(settings));\nconst appendEqual = str => `${str} eq -1`;\nconst nonValueExpression = formatter => compose(formatter, normalizeField);\nconst filterOperators = (operator, settings) => ({\n contains: stringFnOperator(Object.assign({}, settings, { operator: \"contains\" })),\n doesnotcontain: compose(appendEqual, stringFnOperator(Object.assign({}, settings, { operator: \"indexof\" }))),\n endswith: stringFnOperator(Object.assign({}, settings, { operator: \"endswith\" })),\n eq: typedOperator(Object.assign({}, settings, { operator: \"eq\" })),\n gt: typedOperator(Object.assign({}, settings, { operator: \"gt\" })),\n gte: typedOperator(Object.assign({}, settings, { operator: \"ge\" })),\n isempty: nonValueExpression(({ field }) => `${field} eq ''`),\n isnotempty: nonValueExpression(({ field }) => `${field} ne ''`),\n isnotnull: nonValueExpression(({ field }) => `${field} ne null`),\n isnull: nonValueExpression(({ field }) => `${field} eq null`),\n lt: typedOperator(Object.assign({}, settings, { operator: \"lt\" })),\n lte: typedOperator(Object.assign({}, settings, { operator: \"le\" })),\n neq: typedOperator(Object.assign({}, settings, { operator: \"ne\" })),\n startswith: stringFnOperator(Object.assign({}, settings, { operator: \"startswith\" }))\n}[operator]);\nconst join = x => ` ${x.logic} `;\nconst serialize = settings => x => filterOperators(x.operator, settings)(x);\nconst serializeAll = settings => serializeFilters(filter => ifElse(isCompositeFilterDescriptor, serializeAll(settings), serialize(settings))(filter), join);\n/**\n * @hidden\n */\nexport const serializeFilter = (filter, settings = {}) => {\n if (filter.filters && filter.filters.length) {\n return \"$filter=\" + serializeAll(settings)(normalizeFilters(filter));\n }\n return \"\";\n};\n","import { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nconst serializeSort = (orderby) => {\n const str = orderby\n .filter(sort => isPresent(sort.dir))\n .map(sort => {\n const order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? `$orderby=${str}` : str;\n};\nconst emptyString = constant('');\nconst concat = a => b => a + b;\nconst serializeKey = (strings, val) => ifElse(isPresent, concat(strings[0]), emptyString)(val);\nconst rules = (settings, state) => (key) => ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey `$skip=${state.skip}`,\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey `$top=${state.take}`\n}[key]);\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport const toODataString = (state, settings = {}) => (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nconst compare = (a, b) => {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nconst compareDesc = (a, b) => compare(b, a);\nconst descriptorAsFunc = (descriptor) => {\n const prop = getter(descriptor.field, true);\n return (a, b) => (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b));\n};\nconst initial = (_a, _b) => 0;\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport const composeSortDescriptors = (descriptors) => (descriptors\n .filter(x => isPresent(x.dir))\n .map((descriptor) => descriptorAsFunc(descriptor))\n .reduce((acc, curr) => (a, b) => acc(a, b) || curr(a, b), initial));\n","const merge = (data, left, middle, right, compare) => {\n let leftLength = middle - left;\n let rightLength = right - middle;\n const temp = [];\n for (let idx = 0; idx < leftLength; idx++) {\n temp.push(data[left + idx]);\n }\n let cursor1 = 0;\n let cursor2 = middle;\n let dest = left;\n do {\n if (compare(data[cursor2], temp[cursor1]) < 0) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n else {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n } while (rightLength > 0 && leftLength > 0);\n while (leftLength) {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n while (rightLength) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n};\n/**\n * @hidden\n */\nexport const sort = (data, start, end, compare) => {\n if (end - start < 2) {\n return;\n }\n const mid = (start + end) >>> 1; // tslint:disable-line:no-bitwise\n sort(data, start, mid, compare);\n sort(data, mid, end, compare);\n merge(data, start, mid, end, compare);\n};\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nconst valueToString = (value) => {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport const groupCombinator = (field) => {\n const prop = getter(field, true);\n let position = 0;\n return (agg, value) => {\n agg[field] = agg[field] || {};\n const groupValue = prop(value);\n const key = valueToString(groupValue);\n const values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport const expandAggregates = (result = {}) => {\n Object.keys(result).forEach(field => {\n const aggregates = result[field];\n Object.keys(aggregates).forEach(aggregate => {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nconst aggregatesFuncs = (name) => ({\n average: () => {\n let value = 0;\n let count = 0;\n return {\n calc: (curr) => {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: () => isNumeric(value) ? value / count : value\n };\n },\n count: () => {\n let state = 0;\n return {\n calc: () => state++,\n result: () => state\n };\n },\n max: () => {\n let state = Number.NEGATIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n min: () => {\n let state = Number.POSITIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n sum: () => {\n let state = 0;\n return {\n calc: (value) => {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: () => state\n };\n }\n}[name]());\n/**\n * @hidden\n */\nexport const aggregatesCombinator = (descriptors) => {\n const functions = descriptors.map(descriptor => {\n const fieldAccessor = getter(descriptor.field, true);\n const aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n const aggregateAccessor = getter(aggregateName, true);\n return (state, value) => {\n const fieldAggregates = state[descriptor.field] || {};\n const aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return (state, value) => functions.reduce((agg, calc) => calc(agg, value), state);\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport const concat = (arr, value) => {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport const map = (transform) => ((reduce) => ((acc, curr, index) => reduce(acc, transform(curr, index))));\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport const filter = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : acc));\n/**\n * @hidden\n */\nexport const isTransformerResult = (source) => {\n return isPresent(source.__value);\n};\nconst reduced = (x) => {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const take = (count) => ((reduce) => ((acc, curr) => count-- > 0 ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const takeWhile = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport const skip = (count) => ((reduce) => ((acc, curr) => count-- <= 0 ? reduce(acc, curr) : acc));\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport const exec = (transform, initialValue, data) => {\n let result = initialValue;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","/**\n * @hidden\n */\nexport const isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nexport const isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nexport const isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nexport const isFunction = (value) => typeof value === 'function';\n/**\n * @hidden\n */\nexport const isString = (value) => typeof value === 'string';\n/**\n * @hidden\n */\nexport const isTruthy = (value) => !!value;\n/**\n * @hidden\n */\nexport const isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nexport const isNotNullOrEmptyString = (value) => !isNullOrEmptyString(value);\n/**\n * @hidden\n */\nexport const isNumeric = (value) => !isNaN(value - parseFloat(value));\n/**\n * @hidden\n */\nexport const isDate = (value) => value && value.getTime;\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport const addCenturies = (value, offset) => {\n return addYears(value, 100 * offset);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport const addDays = (date, offset) => {\n const newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport const addDecades = (value, offset) => {\n return addYears(value, 10 * offset);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nconst MONTHS_LENGTH = 12;\nconst normalize = (date, expectedMonth) => (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n);\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport const addMonths = (date, offset) => {\n const newDate = cloneDate(date);\n const diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n const expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n newDate.setMonth(newDate.getMonth() + offset);\n return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport const addWeeks = (date, offset) => {\n return addDays(date, offset * 7);\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport const addYears = (value, offset) => {\n return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport const adjustDST = (date, hour) => {\n const newDate = cloneDate(date);\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n return newDate;\n};\n","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport const cloneDate = (date) => date ? new Date(date.getTime()) : null;\n","/**\n * The number of milliseconds in one minute.\n */\nexport const MS_PER_MINUTE = 60000;\n/**\n * The number of milliseconds in one hour.\n */\nexport const MS_PER_HOUR = 3600000;\n/**\n * The number of milliseconds in one standard day.\n */\nexport const MS_PER_DAY = 86400000;\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport const createDate = (year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) => {\n const date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n return adjustDST(date, hours);\n};\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport const dayOfWeek = (date, weekDay, direction = Direction.Forward) => {\n const newDate = cloneDate(date);\n const newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n newDate.setDate(newDate.getDate() + newDay);\n return adjustDST(newDate, date.getHours());\n};\n","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n /**\n * The Sunday value with an underlying `0` number value.\n */\n Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * The Monday value with an underlying `1` number value.\n */\n Day[Day[\"Monday\"] = 1] = \"Monday\";\n /**\n * The Tuesday value with an underlying `2` number value.\n */\n Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * The Wednesday value with an underlying `3` number value.\n */\n Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * The Thursday value with an underlying `4` number value.\n */\n Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * The Friday value with an underlying `5` number value.\n */\n Day[Day[\"Friday\"] = 5] = \"Friday\";\n /**\n * The Saturday value with an underlying `6` number value.\n */\n Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n /**\n * The `Forward` value with an underlying `1` number value.\n */\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n /**\n * The `Backward` value with an underlying `-1` (minus one) number value.\n */\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInCenturies = (start, end) => ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100);\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInDecades = (start, end) => ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10);\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInMonths = (start, end) => (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth()));\n","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInYears = (start, end) => (end.getFullYear() - start.getFullYear());\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport const firstDayOfMonth = (date) => {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport const firstDecadeOfCentury = (value) => (normalizeYear(value, (y) => y - (y % 100)));\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport const firstMonthOfYear = (value) => setMonth(value, 0);\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport const firstYearOfDecade = (value) => (normalizeYear(value, (y) => y - (y % 10)));\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport const getDate = (date) => {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport const isEqual = (candidate, expected) => {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport const lastDayOfMonth = (date) => {\n const newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return addDays(newDate, -1);\n};\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport const lastDecadeOfCentury = (value) => (normalizeYear(value, (y) => y - (y % 100) + 90));\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport const lastMonthOfYear = (value) => setMonth(value, 11);\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport const lastYearOfDecade = (value) => (normalizeYear(value, (y) => y - (y % 10) + 9));\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport const normalizeYear = (value, year) => (setYear(value, year(value.getFullYear())));\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport const prevDayOfWeek = (date, weekDay) => {\n return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport const setMonth = (value, month) => {\n const day = value.getDate();\n const candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport const setYear = (value, year) => {\n const month = value.getMonth();\n const candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './constants';\nimport { getDate } from './get-date';\nconst moveDateToWeekStart = (date, weekStartDay) => {\n if (weekStartDay !== Day.Monday) {\n return addDays(prevDayOfWeek(date, weekStartDay), 4);\n }\n return addDays(date, (4 - (date.getDay() || 7)));\n};\nconst calcWeekInYear = (date, weekStartDay) => {\n const firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n const newDate = moveDateToWeekStart(date, weekStartDay);\n const diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n const days = Math.floor(diffInMS / MS_PER_DAY);\n return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport const weekInYear = (date, weekStartDay = Day.Monday) => {\n date = getDate(date);\n const prevWeekDate = addDays(date, -7);\n const nextWeekDate = addDays(date, 7);\n const weekNumber = calcWeekInYear(date, weekStartDay);\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n return weekNumber;\n};\n","export default class Class {\n // Empty base class needed for compatibility with Kendo UI for jQuery\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nconst DARK_TRESHOLD = 180;\n\nclass Color extends Class {\n constructor(value) {\n super();\n\n if (arguments.length === 1) {\n const formats = Color.formats;\n const resolvedColor = this.resolveColor(value);\n\n for (let idx = 0; idx < formats.length; idx++) {\n const formatRegex = formats[idx].re;\n const processor = formats[idx].process;\n const parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n const channels = processor(parts);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n toHex() {\n const pad = this.padDigit;\n const r = this.r.toString(16);\n const g = this.g.toString(16);\n const b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n }\n\n resolveColor(value) {\n let color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n }\n\n normalizeByte(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n }\n\n padDigit(value) {\n return (value.length === 1) ? \"0\" + value : value;\n }\n\n brightness(value) {\n const round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n }\n\n percBrightness() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n }\n\n isDark() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n\n static fromBytes(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n }\n\n static fromRGB(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n }\n\n static fromHSV(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n }\n\n static fromHSL(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n }\n}\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","const namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nconst browser = support.browser;\n\nlet matchNamedColor = (color) => {\n const colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n const regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = (color) => regexp.exec(color);\n\n return regexp.exec(color);\n};\n\nclass BaseColor extends Class {\n constructor() { super(); }\n toHSV() { return this; }\n\n toRGB() { return this; }\n\n toHex(options) { return this.toBytes().toHex(options); }\n\n toBytes() { return this; }\n\n toCss(options) { return \"#\" + this.toHex(options); }\n\n toCssRgba() {\n const rgb = this.toBytes();\n return `rgba(${ rgb.r }, ${ rgb.g }, ${ rgb.b }, ${ parseFloat((Number(this.a)).toFixed(3)) })`;\n }\n\n toDisplay() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n }\n\n equals(c) {\n return c === this || c !== null && this.toCssRgba() === parseColor(c).toCssRgba();\n }\n\n diff(other) {\n if (other === null) {\n return NaN;\n }\n\n const c1 = this.toBytes();\n const c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n }\n\n clone() {\n let c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n}\n\nclass RGB extends BaseColor {\n constructor(r, g, b, a) {\n super();\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n toHSV() {\n const { r, g, b } = this;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n const v = max;\n let h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n }\n\n toHSL() {\n const { r, g, b } = this;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n }\n\n toBytes() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n}\n\nclass Bytes extends RGB {\n constructor(r, g, b, a) {\n super(Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n toRGB() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toHex(options) {\n let value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n }\n\n toBytes() {\n return this;\n }\n}\n\nfunction hex(n, width, pad = \"0\") {\n let result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nclass HSV extends BaseColor {\n constructor(h, s, v, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n toRGB() {\n let { h, s, v } = this;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n const i = Math.floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - s * f);\n const t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nclass HSL extends BaseColor {\n constructor(h, s, l, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n toRGB() {\n let h = this.h / 360;\n let s = this.s / 100;\n let l = this.l / 100;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nfunction hue2rgb(p, q, s) {\n let t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n let m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n let color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","// XXX: the following will not work with IE9 (requires server proxy).\nexport default function saveAs(options) {\n const { dataURI, fileName } = options;\n let data = dataURI;\n\n if (typeof data == \"string\" && window.Blob) {\n const parts = data.split(\";base64,\");\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n data = new Blob([ array.buffer ], { type: contentType });\n }\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(data, fileName);\n } else {\n const link = document.createElement(\"a\");\n link.download = fileName;\n data = link.href = URL.createObjectURL(data);\n const e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n link.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(data);\n });\n }\n}","function matchUserAgent(userAgent) {\n const browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n let browser = {};\n\n for (let agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n const match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nlet browser = null;\n\nconst support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","export default function template() {\n throw new Error(\"Template implementation missing.\");\n}\n","import { Class } from '../common';\n\nclass HasObservers extends Class {\n observers() {\n this._observers = this._observers || [];\n return this._observers;\n }\n\n addObserver(element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n }\n\n removeObserver(element) {\n const observers = this.observers();\n const index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n }\n\n trigger(methodName, event) {\n const observers = this._observers;\n\n if (observers && !this._suspended) {\n for (let idx = 0; idx < observers.length; idx++) {\n let observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n }\n\n optionsChange(e = {}) {\n e.element = this;\n this.trigger(\"optionsChange\", e);\n }\n\n geometryChange() {\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n\n suspend() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n }\n\n resume() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n }\n\n _observerField(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n}\n\nexport default HasObservers;\n\n","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nconst toString = {}.toString;\n\nclass OptionsStore extends HasObservers {\n constructor(options, prefix = \"\") {\n super();\n\n this.prefix = prefix;\n\n for (let field in options) {\n let member = options[field];\n member = this._wrap(member, field);\n this[field] = member;\n }\n }\n\n get(field) {\n const parts = field.split(\".\");\n let result = this;\n\n while (parts.length && result) {\n let part = parts.shift();\n result = result[part];\n }\n\n return result;\n }\n\n set(field, value) {\n const current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n }\n\n _set(field, value) {\n const composite = field.indexOf(\".\") >= 0;\n let parentObj = this;\n let fieldName = field;\n\n if (composite) {\n const parts = fieldName.split(\".\");\n let prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n let obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n }\n\n _clear(field) {\n const current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n }\n\n _wrap(object, field) {\n const type = toString.call(object);\n let wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n }\n}\n\nexport default OptionsStore;\n","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nconst MAX_INTERVAL = 45;\nconst pow = Math.pow;\nconst accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nclass Arc extends withAccessors(HasObservers, accessors) {\n constructor(center = new Point(), options = {}) {\n super();\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n clone() {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n pointAt(angle) {\n const center = this.center;\n const radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n }\n\n curvePoints() {\n const startAngle = this.startAngle;\n const dir = this.anticlockwise ? -1 : 1;\n const curvePoints = [ this.pointAt(startAngle) ];\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n const subIntervalAngle = intervalAngle / subIntervalsCount;\n let currentAngle = startAngle;\n let transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (let i = 1; i <= subIntervalsCount; i++) {\n const nextAngle = currentAngle + dir * subIntervalAngle;\n const points = this._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n }\n\n bbox(matrix) {\n const interval = this._arcInterval();\n const startAngle = interval.startAngle;\n const endAngle = interval.endAngle;\n const extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n const extremeX = deg(extremeAngles.x);\n const extremeY = deg(extremeAngles.y);\n const endPoint = this.pointAt(endAngle).transformCopy(matrix);\n let currentAngleX = bboxStartAngle(extremeX, startAngle);\n let currentAngleY = bboxStartAngle(extremeY, startAngle);\n let currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n let minPoint = Point.min(currentPoint, endPoint);\n let maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n let currentPointX;\n if (currentAngleX < endAngle) {\n currentPointX = this.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n let currentPointY;\n if (currentAngleY < endAngle) {\n currentPointY = this.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _arcInterval() {\n let { startAngle, endAngle, anticlockwise } = this;\n\n if (anticlockwise) {\n let oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n\n _intervalCurvePoints(startAngle, endAngle, transformation) {\n const p1 = this.pointAt(startAngle);\n const p2 = this.pointAt(endAngle);\n const p1Derivative = this._derivativeAt(startAngle);\n const p2Derivative = this._derivativeAt(endAngle);\n const t = (rad(endAngle) - rad(startAngle)) / 3;\n const cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n const cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n }\n\n _derivativeAt(angle) {\n const radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n }\n\n containsPoint(point) {\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const { center, radiusX, radiusY } = this;\n const distance = center.distanceTo(point);\n const angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n const pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n const startPoint = this.pointAt(this.startAngle).round(PRECISION);\n const endPoint = this.pointAt(this.endAngle).round(PRECISION);\n const intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n let containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n let angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n let inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n }\n\n _isOnPath(point, width) {\n const interval = this._arcInterval();\n const center = this.center;\n let angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n const inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n }\n\n static fromPoints(start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n const arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n }\n}\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n const cos = round((x - cx) / rx, 3);\n const sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n let { x1, y1, x2, y2, rx, ry, largeArc, swipe, rotation = 0 } = parameters;\n\n const radians = rad(rotation);\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n\n const xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n const yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n const sign = largeArc !== swipe ? 1 : -1;\n\n const xt2 = Math.pow(xT, 2);\n const yt2 = Math.pow(yT, 2);\n let rx2 = Math.pow(rx, 2);\n let ry2 = Math.pow(ry, 2);\n\n let delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n let constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n const cxT = constT * (rx * yT) / ry;\n const cyT = - constT * (ry * xT) / rx;\n\n const cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n const cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n const uX = (xT - cxT) / rx;\n const uY = (yT - cyT) / ry;\n const vX = -(xT + cxT) / rx;\n const vY = -(yT + cyT) / ry;\n\n const startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n const angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n let angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n let endAngle = startAngle + angle;\n const signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n let startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nconst PI_DIV_2 = Math.PI / 2;\n\nclass Circle extends withAccessors(HasObservers, [ \"radius\" ]) {\n constructor(center = new Point(), radius = 0) {\n super();\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n equals(other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n }\n\n clone() {\n return new Circle(this.center.clone(), this.radius);\n }\n\n pointAt(angle) {\n return this._pointAt(rad(angle));\n }\n\n bbox(matrix) {\n const extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n let minPoint = Point.maxPoint();\n let maxPoint = Point.minPoint();\n\n for (let i = 0; i < 4; i++) {\n let currentPointX = this._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n let currentPointY = this._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n let currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _pointAt(angle) {\n const { center, radius } = this;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n }\n\n containsPoint(point) {\n const { center, radius } = this;\n const inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n }\n\n _isOnPath(point, width) {\n const { center, radius } = this;\n const pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n }\n}\n\nexport default Circle;\n","const PRECISION = 10;\n\nexport { PRECISION };","export default function calculateCurveAt(t, field, points) {\n const t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance = PRECISION) {\n return round(Math.abs(a - b), tolerance) === 0;\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nclass ComplexNumber extends Class {\n\n constructor(real = 0, img = 0) {\n super();\n\n this.real = real;\n this.img = img;\n }\n\n add(cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n }\n\n addConstant(value) {\n return new ComplexNumber(this.real + value, this.img);\n }\n\n negate() {\n return new ComplexNumber(-this.real, -this.img);\n }\n\n multiply(cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n }\n\n multiplyConstant(value) {\n return new ComplexNumber(this.real * value, this.img * value);\n }\n\n nthRoot(n) {\n const rad = Math.atan2(this.img, this.real);\n const r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n const nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n }\n\n equals(cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n }\n\n isReal() {\n return this.img === 0;\n }\n}\n\nexport default ComplexNumber;","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n const polynomial = toCubicPolynomial(points, \"x\");\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n let rayIntersection, intersectsRay;\n let count = 0;\n for (let i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n let extremeX = 0;\n let extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n const polynomial = toCubicPolynomial(points, rootField);\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n let intersection;\n\n for (let idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n const angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n const rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n const s1x = p1.x - p0.x;\n const s2x = p3.x - p2.x;\n const s1y = p1.y - p0.y;\n const s2y = p3.y - p2.y;\n const nx = p0.x - p2.x;\n const ny = p0.y - p2.y;\n const d = s1x * s2y - s2x * s1y;\n const s = (s1x * ny - s1y * nx) / d;\n const t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","export default function lineIntersectionsCount(a, b, point) {\n let intersects;\n if (a.x !== b.x) {\n const minX = Math.min(a.x, b.x);\n const maxX = Math.max(a.x, b.x);\n const minY = Math.min(a.y, b.y);\n const maxY = Math.max(a.y, b.y);\n const inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n const squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n const p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n const q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n const Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n const i = new ComplexNumber(0,1);\n const b3a = -b / (3 * a);\n let x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n const result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nclass Matrix extends Class {\n\n constructor(a = 0, b = 0, c = 0, d = 0, e = 0, f = 0) {\n super();\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n multiplyCopy(matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n }\n\n invert() {\n const { a, b, c: d, d: e, e: g, f: h } = this;\n const det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n }\n\n clone() {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n }\n\n equals(other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n }\n\n round(precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n }\n\n toArray(precision) {\n const result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (let i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n }\n\n toString(precision, separator = \",\") {\n return this.toArray(precision).join(separator);\n }\n\n static translate(x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n }\n\n static unit() {\n return new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n static rotate(angle, x, y) {\n const matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n }\n\n static scale(scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n }\n}\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nclass Point extends withAccessors(HasObservers, [ \"x\", \"y\" ]) {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n equals(other) {\n return other && other.x === this.x && other.y === this.y;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n }\n\n translate(x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n }\n\n translateWith(point) {\n return this.translate(point.x, point.y);\n }\n\n move(x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n }\n\n scale(scaleX, scaleY = scaleX) {\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n }\n\n scaleCopy(scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n }\n\n transform(transformation) {\n const matrix = toMatrix(transformation);\n const { x, y } = this;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n }\n\n transformCopy(transformation) {\n const point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n round(digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const x = doRound ? round(this.x, digits) : this.x;\n const y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n }\n\n toString(digits, separator = \" \") {\n let { x, y } = this;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n }\n\n static min() {\n let minX = MAX_NUM;\n let minY = MAX_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n let point = arguments[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n }\n\n static max() {\n let maxX = MIN_NUM;\n let maxY = MIN_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n const point = arguments[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n }\n\n static minPoint() {\n return new Point(MIN_NUM, MIN_NUM);\n }\n\n static maxPoint() {\n return new Point(MAX_NUM, MAX_NUM);\n }\n\n static get ZERO() {\n return new Point(0, 0);\n }\n}\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nclass Rect extends HasObservers {\n constructor(origin = new Point(), size = new Size(), cornerRadius = 0) {\n super();\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n clone() {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n }\n\n equals(other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n }\n\n setOrigin(value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getOrigin() {\n return this.origin;\n }\n\n setCornerRadius(radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n }\n\n getCornerRadius() {\n return this.cornerRadius;\n }\n\n setSize(value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n }\n\n getSize() {\n return this.size;\n }\n\n width() {\n return this.size.width;\n }\n\n height() {\n return this.size.height;\n }\n\n topLeft() {\n return this.origin.clone();\n }\n\n bottomRight() {\n return this.origin.clone().translate(this.width(), this.height());\n }\n\n topRight() {\n return this.origin.clone().translate(this.width(), 0);\n }\n\n bottomLeft() {\n return this.origin.clone().translate(0, this.height());\n }\n\n center() {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n }\n\n bbox(matrix) {\n const tl = this.topLeft().transformCopy(matrix);\n const tr = this.topRight().transformCopy(matrix);\n const br = this.bottomRight().transformCopy(matrix);\n const bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n }\n\n transformCopy(m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n }\n\n expand(x, y = x) {\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n }\n\n expandCopy(x, y) {\n return this.clone().expand(x, y);\n }\n\n containsPoint(point) {\n const origin = this.origin;\n const bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n }\n\n _isOnPath(point, width) {\n const rectOuter = this.expandCopy(width, width);\n const rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n }\n\n static fromPoints() {\n const topLeft = Point.min.apply(null, arguments);\n const bottomRight = Point.max.apply(null, arguments);\n const size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n }\n\n static union(a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n }\n\n static intersect(a, b) {\n const rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n const rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n }\n}\n\nexport default Rect;\n","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nconst points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nclass Segment extends withPoints(HasObservers, points) {\n constructor(anchor, controlIn, controlOut) {\n super();\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n bboxTo(toSegment, matrix) {\n const segmentAnchor = this.anchor().transformCopy(matrix);\n const toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n let rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n }\n\n _lineBoundingBox(p1, p2) {\n return Rect.fromPoints(p1, p2);\n }\n\n _curveBoundingBox(p1, cp1, cp2, p2) {\n const points = [ p1, cp1, cp2, p2 ];\n const extremesX = this._curveExtremesFor(points, \"x\");\n const extremesY = this._curveExtremesFor(points, \"y\");\n const xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n const yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n }\n\n _curveExtremesFor(points, field) {\n const extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n }\n\n _curveExtremes(x1, x2, x3, x4) {\n const a = x1 - 3 * x2 + 3 * x3 - x4;\n const b = - 2 * (x1 - 2 * x2 + x3);\n const c = x1 - x2;\n const sqrt = Math.sqrt(b * b - 4 * a * c);\n let t1 = 0;\n let t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n let min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n let max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n _intersectionsTo(segment, point) {\n let intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n }\n\n _isOnCurveTo(segment, point, width, endSegment) {\n const bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n const p1 = this.anchor();\n const p2 = this.controlOut();\n const p3 = segment.controlIn();\n const p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n const points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n const rotation = transform().rotate(45, point);\n const rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n }\n\n _isOnLineTo(segment, point, width) {\n const p1 = this.anchor();\n const p2 = segment.anchor();\n const angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n const rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n }\n\n _isOnPathTo(segment, point, width, endSegment) {\n let isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n }\n}\n\nfunction arrayLimits(arr) {\n let length = arr.length;\n let min = MAX_NUM;\n let max = MIN_NUM;\n\n for (let i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nclass Size extends withAccessors(HasObservers, [ \"width\", \"height\" ]) {\n constructor(width, height) {\n super();\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n equals(other) {\n return other && other.width === this.width && other.height === this.height;\n }\n\n clone() {\n return new Size(this.width, this.height);\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const width = doRound ? round(this.width, digits) : this.width;\n const height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n }\n\n static get ZERO() {\n return new Size(0, 0);\n }\n}\n\nexport default Size;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nclass Transformation extends HasObservers {\n constructor(matrix = Matrix.unit()) {\n super();\n\n this._matrix = matrix;\n }\n\n clone() {\n return new Transformation(\n this._matrix.clone()\n );\n }\n\n equals(other) {\n return other &&\n other._matrix.equals(this._matrix);\n }\n\n translate(x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n }\n\n scale(scaleX, scaleY = scaleX, origin = null) {\n let originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n }\n\n multiply(transformation) {\n const matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n }\n\n matrix(value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n }\n\n _optionsChange() {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n }\n}\n\nexport default Transformation;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nconst options = [ \"offset\", \"color\", \"opacity\" ];\n\nclass GradientStop extends withOptions(HasObservers, options) {\n constructor(offset, color, opacity) {\n super();\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n static create(arg) {\n if (defined(arg)) {\n let stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n }\n}\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nclass Gradient extends HasObservers {\n get nodeType() {\n return \"Gradient\";\n }\n\n constructor(options = {}) {\n super();\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n userSpace(value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n }\n\n _createStops(stops = []) {\n const result = [];\n for (let idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n }\n\n addStop(offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n }\n\n removeStop(stop) {\n const index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n }\n\n optionsChange(e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n }\n\n geometryChange() {\n this.optionsChange();\n }\n}\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nconst points = [ \"start\", \"end\" ];\n\nclass LinearGradient extends withPoints(Gradient, points) {\n constructor(options = {}) {\n super(options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n}\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nclass RadialGradient extends withPoints(Gradient, [ \"center\" ]) {\n constructor(options = {}) {\n super(options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n radius(value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n }\n\n fallbackFill(value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n }\n}\n\nexport default RadialGradient;\n","import ElementsArray from '../shapes/elements-array';\n\nclass StopsArray extends ElementsArray {\n _change() {\n this.optionsChange({\n field: \"stops\"\n });\n }\n}\n\nexport default StopsArray;","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, LinearGradient } from \"../drawing\";\nimport { encodeBase64 } from \"../util\";\n\nconst browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nconst inBrowser = typeof window !== 'undefined';\nconst microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nclass TextRect extends Text {\n constructor(str, rect, options) {\n super(str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n rect() {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n }\n rawBBox() {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n }\n}\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n}\n\n// clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n const clone = (function dive(node){\n const clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (let i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n const canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach((canvas, i) => {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n const orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach((el, i) => {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n let page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n const el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid.k-widget\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid.k-widget\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\nfunction drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n}\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n if (color) {\n let match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n if (!pending) {\n next();\n }\n function next() {\n if (--pending <= 0) {\n callback();\n }\n }\n}\n\nfunction cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n if (transform == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n let fake = [];\n function pseudo(kind, place) {\n let style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n let psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n let saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n const r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function(box){\n const g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform(path, transform);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[listStyleType];\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n group.append(wrap);\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new geo.Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction serializeSVG(element) {\n const serializer = new window.XMLSerializer();\n let xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n const doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n const svg = doc.documentElement;\n const box = getContentBox(element);\n svg.setAttribute(\"width\", box.width);\n svg.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg);\n }\n\n return xml;\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n let xml = serializeSVG(element);\n let dataURL = `data:image/svg+xml;base64,${encodeBase64(xml)}`;\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var hasDecoration = underline || lineThrough || overline;\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (hasDecoration) {\n range.selectNode(node);\n slice(range.getClientRects()).forEach(decorate);\n }\n\n return; // only function declarations after this line\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, l => l.toUpperCase());\n break;\n }\n\n var text = new TextRect(\n str, new geo.Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function decorate(box) {\n line(underline, box.bottom);\n line(lineThrough, box.bottom - box.height / 2.7);\n line(overline, box.top);\n function line(color, ypos) {\n if (color) {\n var width = fontSize / 12;\n var path = new Path({ stroke: {\n width: width,\n color: color\n }});\n\n ypos -= width;\n path.moveTo(box.left, ypos)\n .lineTo(box.right, ypos);\n group.append(path);\n }\n }\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nexport { drawDOM, drawText, getFontFaces };\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nconst IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nconst measurable = TBase => (\n class extends TBase {\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n const matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n let bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n const strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n }\n\n geometryChange() {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n }\n);\n\nexport default measurable;","import { defined } from '../util';\n\nconst GRADIENT = \"Gradient\";\n\nconst paintable = TBase => (\n class extends TBase {\n fill(color, opacity) {\n const options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n const newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n }\n\n stroke(color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n }\n}\n);\n\nexport default paintable;\n","const traversable = (TBase, childrenField) => (\n class extends TBase {\n traverse(callback) {\n const children = this[childrenField];\n\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n }\n }\n);\n\nexport default traversable;\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i];\n let capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nconst withAccessors = (TBase, names) => {\n const result = class extends TBase {};\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nconst withGeometry = (TBase, names = [ \"geometry\" ]) => {\n const result = class extends TBase {};\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nconst withOptions = (TBase, names) => {\n const result = class extends TBase {};\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nconst withPoints = (TBase, names) => {\n const result = class extends TBase {};\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nconst SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nconst SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nconst MOVE = \"m\";\nconst CLOSE = \"z\";\n\nfunction parseParameters(str) {\n const parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n const position = new Point();\n let previousCommand;\n\n str.replace(SEGMENT_REGEX, (match, element, params, closePath) => {\n let command = element.toLowerCase();\n const isRelative = command === element;\n const parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import Point from '../geometry/point';\nimport { last } from '../util';\n\nconst ShapeMap = {\n l: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 2) {\n let point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 6) {\n let controlOut = new Point(parameters[i], parameters[i + 1]);\n let controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n let point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n const value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n const value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 7) {\n const radiusX = parameters[i];\n const radiusY = parameters[i + 1];\n const rotation = parameters[i + 2];\n const largeArc = parameters[i + 3];\n const swipe = parameters[i + 4];\n const endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlIn = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n let controlOut;\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlPoint = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n let lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (let i = 0; i < parameters.length; i += 2) {\n let endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n const insertPosition = isVertical ? 0 : 1;\n\n for (let i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nconst third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n const scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nimport { encodeUTF16BE, BOM } from \"../util/encode-utf\";\nimport { encodeBase64 } from \"../util\";\n\nconst browser = support.browser;\nconst NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\n\nconst PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments[i];\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n }\n else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n }\n else if (isArray(x)) {\n renderArray(x, out);\n }\n else if (isDate(x)) {\n renderDate(x, out);\n }\n else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n }\n // make sure it doesn't end up in exponent notation\n var num = x.toFixed(7);\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n if (num == \"-0\") {\n num = \"0\";\n }\n output.writeString(num);\n }\n else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n }\n else if (typeof x.get == \"function\") {\n output.write(x.get());\n }\n else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function(data) {\n output.write(data);\n };\n out.withIndent = function(f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function() {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n out.offset = function() {\n return output.offset();\n };\n out.toString = function() {\n throw new Error(\"FIX CALLER\");\n };\n out.get = function() {\n return output.get();\n };\n out.stream = function() {\n return output;\n };\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function(){};\n\n value.render = function(out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function(out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n var margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\" : true,\n \"Times-Bold\" : true,\n \"Times-Italic\" : true,\n \"Times-BoldItalic\" : true,\n \"Helvetica\" : true,\n \"Helvetica-Bold\" : true,\n \"Helvetica-Oblique\" : true,\n \"Helvetica-BoldOblique\" : true,\n \"Courier\" : true,\n \"Courier-Bold\" : true,\n \"Courier-Oblique\" : true,\n \"Courier-BoldOblique\" : true,\n \"Symbol\" : true,\n \"ZapfDingbats\" : true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n let m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n req.onload = function() {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function(data){\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont, options) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n xhr.onload = function() {\n blob = xhr.response;\n if (browser.mozilla && blob.type == \"image/svg+xml\") {\n // Firefox won't render SVGs that don't contain width and height attributes.\n let reader = new FileReader();\n reader.onload = function() {\n let doc = new window.DOMParser().parseFromString(this.result, \"image/svg+xml\");\n let svg = doc.documentElement;\n if (svg.getAttribute(\"width\") && svg.getAttribute(\"height\")) {\n // we're good, continue with the existing blob.\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n } else {\n svg.setAttribute(\"width\", size.width);\n svg.setAttribute(\"height\", size.height);\n let xml = new window.XMLSerializer().serializeToString(svg);\n let dataURL = `data:image/svg+xml;base64,${encodeBase64(xml)}`;\n _load(dataURL);\n }\n };\n reader.readAsText(blob);\n } else {\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n }\n };\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n // IE, bless its little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload.call(img);\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = { width: img.width, height: img.height };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n\n // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n\n if (hasAlpha || options.keepPNG) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\", options.jpegQuality);\n data = data.substr(data.indexOf(\";base64,\") + 8);\n\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n const svg = (blob && blob.type === 'image/svg+xml') || (\n /^data:image\\/svg\\+xml;/i.test(this.src.substring(0, 19))\n );\n\n const upscale = size.width >= img.width || size.height >= img.height;\n\n // Use the original image if requested size is bigger than the source,\n // unless it's an SVG that can be upscaled.\n if (!svg && upscale) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n let reader = new FileReader();\n reader.onload = function() {\n try {\n let img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function(urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback, options) {\n options = Object.assign({\n jpegQuality : 0.92,\n keepPNG : false\n }, options);\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function(url){\n loadImage(url, images[url], next, options);\n });\n};\n\nclass PDFDocument {\n constructor (options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return (options && options[name] != null) ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function(value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n\n self.pages = [];\n\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n self.GRAD_COL = {}; // cache for whole color gradient objects\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n let nameTree = {};\n nameTree.JavaScript = new PDFDictionary({ Names: [\n new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))\n ] });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n\n var info = self.attach(new PDFDictionary({\n Producer : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\"), true), // XXX: kendo.version?\n Title : new PDFString(getOption(\"title\", \"\"), true),\n Author : new PDFString(getOption(\"author\", \"\"), true),\n Subject : new PDFString(getOption(\"subject\", \"\"), true),\n Keywords : new PDFString(getOption(\"keywords\", \"\"), true),\n Creator : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\"), true),\n CreationDate : getOption(\"date\", new Date())\n }));\n\n self.addPage = function(options) {\n var paperOptions = getPaperOptions(function(name, defval){\n return (options && options[name] != null) ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents : self.attach(content),\n Parent : pageTree,\n MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n\n // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top);\n // XXX: clip to right/bottom margin. Make this optional?\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function() {\n var i;\n /// file header\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n /// file body\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n\n /// cross-reference table\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n out(NL);\n\n /// trailer\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n\n /// end\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n\n return out.stream().offset(0);\n };\n\n self.loadFonts = loadFonts;\n self.loadImages = loadImages;\n }\n\n getFont(url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n }\n\n getImage(url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n if (img === \"ERROR\") {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n }\n\n getOpacityGS(opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n cache[id] = gs;\n }\n return gs;\n }\n\n dict(props) {\n return new PDFDictionary(props);\n }\n\n name(str) {\n return _(str);\n }\n\n stream(props, content) {\n return new PDFStream(content, props);\n }\n}\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n if (a.length > 0) {\n out.withIndent(function(){\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n });\n //out.indent();\n }\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\",\n zeropad(date.getUTCFullYear(), 4),\n zeropad(date.getUTCMonth() + 1, 2),\n zeropad(date.getUTCDate(), 2),\n zeropad(date.getUTCHours(), 2),\n zeropad(date.getUTCMinutes(), 2),\n zeropad(date.getUTCSeconds(), 2),\n \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nclass PDFValue {\n beforeRender() {}\n}\n\nclass PDFString extends PDFValue {\n constructor(value, utf16be) {\n super();\n this.value = value;\n this.utf16be = Boolean(utf16be);\n }\n\n render(out) {\n let txt = this.value;\n if (this.utf16be) {\n txt = BOM + encodeUTF16BE(txt);\n txt = txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n out(\"(\", txt, \")\");\n } else {\n // out.writeString truncates charcodes to 8 bits and\n // 0x128 & 0xFF is 40, the code for open paren.\n // therefore we need to do the chopping here to make\n // sure we backslash all cases.\n let data = [ 40 ]; // open PDF string '('\n for (var i = 0; i < txt.length; ++i) {\n let code = txt.charCodeAt(i) & 0xFF;\n if (code == 40 || code == 41 || code == 92) {\n // backslash before (, ) and \\\n data.push(92);\n }\n data.push(code);\n }\n data.push(41); // ')' close PDF string\n out.writeData(data);\n }\n }\n\n toString() {\n return this.value;\n }\n}\n\nclass PDFHexString extends PDFString {\n constructor(value) {\n super(value);\n this.value = value;\n }\n\n render(out) {\n out(\"<\");\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this.value.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n}\n\n/// names\nclass PDFName extends PDFValue {\n static get(name) {\n return _(name);\n }\n\n constructor(name) {\n super();\n this.name = name;\n }\n\n render(out) {\n out(\"/\" + this.escape());\n }\n\n escape() {\n return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n }\n\n toString() {\n return this.name;\n }\n}\n\nvar PDFName_cache = {};\n\nfunction _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return (PDFName_cache[name] = new PDFName(name));\n}\n\n/// dictionary\n\nclass PDFDictionary extends PDFValue {\n constructor(props) {\n super();\n this.props = props;\n }\n\n render(out) {\n var props = this.props, empty = true;\n out(\"<<\");\n out.withIndent(function(){\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out(\">>\");\n }\n}\n\n/// streams\n\nclass PDFStream extends PDFValue {\n constructor(data, props, compress) {\n super();\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }\n\n render(out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [ props.Filter ];\n }\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n }\n}\n\n/// catalog\n\nclass PDFCatalog extends PDFDictionary {\n constructor() {\n super({\n Type: _(\"Catalog\")\n });\n }\n\n setPages(pagesObj) {\n this.props.Pages = pagesObj;\n }\n}\n\n/// page tree\n\nclass PDFPageTree extends PDFDictionary {\n constructor() {\n super({\n Type : _(\"Pages\"),\n Kids : [],\n Count : 0\n });\n }\n\n addPage(pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n}\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nclass PDFJpegImage {\n constructor(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : bitsPerComponent,\n Filter : _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n break;\n }\n\n this.asStream = function() {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n }\n}\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nclass PDFRawImage {\n constructor(width, height, rgb, alpha) {\n this.asStream = function(pdf) {\n var mask = new PDFStream(alpha, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceRGB\"),\n SMask : pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n }\n}\n\n/// standard fonts\n\nclass PDFStandardFont extends PDFDictionary {\n constructor(name){\n super({\n Type : _(\"Font\"),\n Subtype : _(\"Type1\"),\n BaseFont : _(name)\n });\n\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n }\n\n encodeText(str) {\n return new PDFString(String(str));\n }\n}\n\n/// TTF fonts\n\nclass PDFFont extends PDFDictionary {\n constructor(pdf, font, props){\n super({});\n\n props = this.props;\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n var head = font.head;\n\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n\n this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n (this.isSerif ? 1 << 1 : 0) |\n (this.isScript ? 1 << 3 : 0) |\n (this.italicAngle !== 0 ? 1 << 6 : 0) |\n (1 << 5));\n }\n\n encodeText(text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n }\n\n getTextWidth(fontSize, text) {\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n }\n\n beforeRender() {\n var self = this;\n var sub = self._sub;\n\n // write the TTF data\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type : _(\"FontDescriptor\"),\n FontName : _(self._sub.psName),\n FontBBox : self.bbox,\n Flags : self.flags,\n StemV : self.stemV,\n ItalicAngle : self.italicAngle,\n Ascent : self.ascent,\n Descent : self.descent,\n CapHeight : self.capHeight,\n XHeight : self.xHeight,\n FontFile2 : self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk){\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar);\n\n // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry : new PDFString(\"Adobe\"),\n Ordering : new PDFString(\"Identity\"),\n Supplement : 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n }\n\n _makeCidToGidMap() {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n}\n\nclass PDFToUnicodeCmap extends PDFValue {\n constructor(firstChar, lastChar, map){\n super();\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }\n\n render(out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function(){\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([ unicode ]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n }\n}\n\n/// gradients\n\nfunction makeHash(a) {\n return a.map(function(x){\n return isArray(x) ? makeHash(x)\n : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1, 0, 1, 0, 1 ],\n N: 1,\n C0: [ r1 , g1 , b1 ],\n C1: [ r2 , g2 , b2 ]\n }));\n }\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([ a1, a2 ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1 ],\n N: 1,\n C0: [ a1 ],\n C1: [ a2 ]\n }));\n }\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(\n pdf,\n prevColor.r, prevColor.g, prevColor.b,\n curColor.r, curColor.g, curColor.b\n ));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(\n pdf, prevColor.a, curColor.a\n ));\n }\n }\n offsets.pop();\n return {\n hasAlpha : hasAlpha,\n colors : assemble(colors),\n opacities : hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [ 0, 1 ],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n Function: funcs,\n Extend: [ true, true ]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: (box ? [\n box.left, box.top + box.height, box.left + box.width, box.top\n ] : [ 0, 1, 1, 0 ]),\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: { CA: 1, ca: 1 }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [ true, true ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x , gradient.start.y , gradient.start.r,\n gradient.end.x , gradient.end.y , gradient.end.r\n ] : [\n gradient.start.x , gradient.start.y,\n gradient.end.x , gradient.end.y\n ];\n var shading = cacheColorGradient(\n pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n );\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n ) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n}\n\n/// page object\n\nclass PDFPage extends PDFDictionary {\n constructor(pdf, props){\n super(props);\n\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n this._annotations = [];\n\n this._font = null;\n this._fontSize = null;\n\n this._contextStack = [];\n\n props = this.props;\n props.Type = _(\"Page\");\n props.ProcSet = [\n _(\"PDF\"),\n _(\"Text\"),\n _(\"ImageB\"),\n _(\"ImageC\"),\n _(\"ImageI\")\n ];\n props.Resources = new PDFDictionary({\n Font : new PDFDictionary(this._fontResources),\n ExtGState : new PDFDictionary(this._gsResources),\n XObject : new PDFDictionary(this._xResources),\n Pattern : new PDFDictionary(this._patResources),\n Shading : new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }\n\n _out() {\n this._content.data.apply(null, arguments);\n }\n\n transform(a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n this._out(NL);\n }\n }\n\n translate(dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n }\n\n scale(sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n }\n\n rotate(angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n }\n\n beginText() {\n this._textMode = true;\n this._out(\"BT\", NL);\n }\n\n endText() {\n this._textMode = false;\n this._out(\"ET\", NL);\n }\n\n _requireTextMode() {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n }\n\n _requireFont() {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n }\n\n setFont(font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n }\n\n setTextLeading(size) {\n this._requireTextMode();\n this._out(size, \" TL\", NL);\n }\n\n setTextRenderingMode(mode) {\n this._requireTextMode();\n this._out(mode, \" Tr\", NL);\n }\n\n showText(text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, \" Tz \");\n }\n this._out(this._font.encodeText(text), \" Tj\", NL);\n }\n\n showTextNL(text) {\n this._requireFont();\n this._out(this._font.encodeText(text), \" '\", NL);\n }\n\n addLink(uri, box) {\n var ll = this._toPage({ x: box.left, y: box.bottom });\n var ur = this._toPage({ x: box.right, y: box.top });\n this._annotations.push(new PDFDictionary({\n Type : _(\"Annot\"),\n Subtype : _(\"Link\"),\n Rect : [ ll.x, ll.y, ur.x, ur.y ],\n Border : [ 0, 0, 0 ],\n A : new PDFDictionary({\n Type : _(\"Action\"),\n S : _(\"URI\"),\n URI : new PDFString(uri)\n })\n }));\n }\n\n setStrokeColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n }\n\n setOpacity(opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n }\n\n setStrokeOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n }\n\n setFillColor(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n }\n\n setFillOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n }\n\n gradient(gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out(\"/\" + oname + \" gs \");\n }\n this._out(\"/\" + sname + \" sh\", NL);\n this.restore();\n }\n\n setDashPattern(dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n }\n\n setLineWidth(width) {\n this._out(width, \" w\", NL);\n }\n\n setLineCap(lineCap) {\n this._out(lineCap, \" J\", NL);\n }\n\n setLineJoin(lineJoin) {\n this._out(lineJoin, \" j\", NL);\n }\n\n setMitterLimit(mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n }\n\n save() {\n this._contextStack.push(this._context());\n this._out(\"q\", NL);\n }\n\n restore() {\n this._out(\"Q\", NL);\n this._context(this._contextStack.pop());\n }\n\n\n // paths\n moveTo(x, y) {\n this._out(x, \" \", y, \" m\", NL);\n }\n\n lineTo(x, y) {\n this._out(x, \" \", y, \" l\", NL);\n }\n\n bezier(x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n }\n\n bezier1(x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n }\n\n bezier2(x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n }\n\n close() {\n this._out(\"h\", NL);\n }\n\n rect(x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n }\n\n ellipse(x, y, rx, ry) {\n function _X(v) { return x + v; }\n function _Y(v) { return y + v; }\n\n // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n var k = 0.5522847498307936;\n\n this.moveTo(_X(0), _Y(ry));\n this.bezier(\n _X(rx * k) , _Y(ry),\n _X(rx) , _Y(ry * k),\n _X(rx) , _Y(0)\n );\n this.bezier(\n _X(rx) , _Y(-ry * k),\n _X(rx * k) , _Y(-ry),\n _X(0) , _Y(-ry)\n );\n this.bezier(\n _X(-rx * k) , _Y(-ry),\n _X(-rx) , _Y(-ry * k),\n _X(-rx) , _Y(0)\n );\n this.bezier(\n _X(-rx) , _Y(ry * k),\n _X(-rx * k) , _Y(ry),\n _X(0) , _Y(ry)\n );\n }\n\n circle(x, y, r) {\n this.ellipse(x, y, r, r);\n }\n\n stroke() {\n this._out(\"S\", NL);\n }\n\n nop() {\n this._out(\"n\", NL);\n }\n\n clip() {\n this._out(\"W n\", NL);\n }\n\n clipStroke() {\n this._out(\"W S\", NL);\n }\n\n closeStroke() {\n this._out(\"s\", NL);\n }\n\n fill() {\n this._out(\"f\", NL);\n }\n\n fillStroke() {\n this._out(\"B\", NL);\n }\n\n drawImage(url) {\n var img = this._pdf.getImage(url);\n if (img) { // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, \" Do\", NL);\n }\n }\n\n comment(txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function(line){\n self._out(\"% \", line, NL);\n });\n }\n\n // internal\n _context(val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n }\n\n _toPage(p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a*p.x + c*p.y + e,\n y: b*p.x + d*p.y + f\n };\n }\n}\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return { fontSize: 12, fontFamily: \"sans-serif\" };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic : m[2] && m[2].toLowerCase() == \"italic\",\n variant : m[4],\n bold : m[6] && /bold|700/i.test(m[6]),\n fontSize : fontSize,\n lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n if (style.italic) {\n name += \"|italic\";\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == \"function\") {\n url = url();\n }\n if (!url) {\n url = \"Times-Roman\";\n }\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\" : \"Times-Roman\",\n \"serif|bold\" : \"Times-Bold\",\n \"serif|italic\" : \"Times-Italic\",\n \"serif|bold|italic\" : \"Times-BoldItalic\",\n \"sans-serif\" : \"Helvetica\",\n \"sans-serif|bold\" : \"Helvetica-Bold\",\n \"sans-serif|italic\" : \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\" : \"Helvetica-BoldOblique\",\n \"monospace\" : \"Courier\",\n \"monospace|bold\" : \"Courier-Bold\",\n \"monospace|italic\" : \"Courier-Oblique\",\n \"monospace|bold|italic\" : \"Courier-BoldOblique\",\n \"zapfdingbats\" : \"ZapfDingbats\",\n \"zapfdingbats|bold\" : \"ZapfDingbats\",\n \"zapfdingbats|italic\" : \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function() {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + \"|bold\"] = function() {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n FONT_MAPPINGS[alias + \"|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\" , \"monospace\");\nfontAlias(\"Arial\" , \"sans-serif\");\nfontAlias(\"Helvetica\" , \"sans-serif\");\nfontAlias(\"Verdana\" , \"sans-serif\");\nfontAlias(\"Tahoma\" , \"sans-serif\");\nfontAlias(\"Georgia\" , \"sans-serif\");\nfontAlias(\"Monaco\" , \"monospace\");\nfontAlias(\"Andale Mono\" , \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n\n // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n switch (name) {\n case \"dejavu sans\" : FONT_MAPPINGS[\"sans-serif\"] = url; break;\n case \"dejavu sans|bold\" : FONT_MAPPINGS[\"sans-serif|bold\"] = url; break;\n case \"dejavu sans|italic\" : FONT_MAPPINGS[\"sans-serif|italic\"] = url; break;\n case \"dejavu sans|bold|italic\" : FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url; break;\n case \"dejavu serif\" : FONT_MAPPINGS[\"serif\"] = url; break;\n case \"dejavu serif|bold\" : FONT_MAPPINGS[\"serif|bold\"] = url; break;\n case \"dejavu serif|italic\" : FONT_MAPPINGS[\"serif|italic\"] = url; break;\n case \"dejavu serif|bold|italic\" : FONT_MAPPINGS[\"serif|bold|italic\"] = url; break;\n case \"dejavu mono\" : FONT_MAPPINGS[\"monospace\"] = url; break;\n case \"dejavu mono|bold\" : FONT_MAPPINGS[\"monospace|bold\"] = url; break;\n case \"dejavu mono|italic\" : FONT_MAPPINGS[\"monospace|italic\"] = url; break;\n case \"dejavu mono|bold|italic\" : FONT_MAPPINGS[\"monospace|bold|italic\"] = url; break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nconst TEXT_RENDERING_MODE = {\n fill : 0,\n stroke : 1,\n fillAndStroke : 2,\n invisible : 3,\n fillAndClip : 4,\n strokeAndClip : 5,\n fillStrokeClip : 6,\n clip : 7\n};\n\nexport {\n PDFDocument as Document,\n BinaryStream,\n defineFont,\n parseFontDef,\n getFontURL,\n loadFonts,\n loadImages,\n getPaperOptions,\n clearImageCache,\n TEXT_RENDERING_MODE\n};\n","import { deflate as pakoDeflate } from '@progress/pako-esm';\n\nexport const deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n return true;\n}\n\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { createPromise } from \"../util\";\nimport { parseColor as utils_parseColor, saveAs as util_saveAs, support } from \"../common\";\nimport * as PDF from \"./core\";\nimport { Group, Path, MultiPath, Gradient, RadialGradient } from '../drawing';\nimport * as geo from \"../geometry\";\n\nconst DEFAULT_IMAGE_DPI = 300;\nconst TEXT_RENDERING_MODE = PDF.TEXT_RENDERING_MODE;\n\nconst DASH_PATTERNS = {\n dash : [ 4 ],\n dashDot : [ 4, 2, 1, 2 ],\n dot : [ 1, 2 ],\n longDash : [ 8, 2 ],\n longDashDot : [ 8, 2, 1, 2 ],\n longDashDotDot : [ 8, 2, 1, 2, 1, 2 ],\n solid : []\n};\n\nconst LINE_CAP = {\n butt : 0,\n round : 1,\n square : 2\n};\n\nconst LINE_JOIN = {\n miter : 0,\n round : 1,\n bevel : 2\n};\n\nfunction render(group, callback) {\n var fonts = [], images = {}, options = group.options;\n\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n\n var multiPage = getOption(\"multiPage\");\n var imgDPI = getOption(\"imgDPI\", DEFAULT_IMAGE_DPI);\n\n PDF.clearImageCache();\n\n group.traverse(function(element){\n dispatch({\n Image: function(element) {\n var url = element.src();\n var size = element.bbox().size;\n if (imgDPI) {\n var prev = images[url];\n size = {\n width: Math.ceil(size.width * imgDPI / 72),\n height: Math.ceil(size.height * imgDPI / 72)\n };\n\n if (prev) {\n size.width = Math.max(prev.width, size.width);\n size.height = Math.max(prev.height, size.height);\n }\n }\n\n images[url] = size;\n },\n Text: function(element) {\n var style = PDF.parseFontDef(element.options.font);\n var url = PDF.getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n }, element);\n });\n\n function doIt() {\n if (--count > 0) {\n return;\n }\n\n var pdf = new (PDF.Document)({\n producer : getOption(\"producer\"),\n title : getOption(\"title\"),\n author : getOption(\"author\"),\n subject : getOption(\"subject\"),\n keywords : getOption(\"keywords\"),\n creator : getOption(\"creator\"),\n date : getOption(\"date\"),\n\n autoPrint : getOption(\"autoPrint\")\n });\n\n function drawPage(group) {\n var options = group.options;\n\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n // var tmp, bbox;\n\n var paperSize = getOption(\"paperSize\", getOption(\"paperSize\", \"auto\"), options), addMargin = false;\n if (paperSize == \"auto\") {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [ size.width, size.height ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new Group();\n tmp.transform(new geo.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n }\n else {\n paperSize = \"A4\";\n }\n }\n\n var page;\n page = pdf.addPage({\n paperSize : paperSize,\n margin : getOption(\"margin\", getOption(\"margin\"), options),\n addMargin : addMargin,\n landscape : getOption(\"landscape\", getOption(\"landscape\", false), options)\n });\n drawElement(group, page, pdf);\n }\n\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n\n callback(pdf.render(), pdf);\n }\n\n var count = 2;\n PDF.loadFonts(fonts, doIt);\n PDF.loadImages(images, doIt, {\n jpegQuality : getOption(\"jpegQuality\", 0.92),\n keepPNG : getOption(\"keepPNG\", false)\n });\n}\n\nfunction toDataURL(group, callback) {\n render(group, function(data){\n callback(\"data:application/pdf;base64,\" + data.base64());\n });\n}\n\nfunction toBlob(group, callback) {\n render(group, function(data){\n callback(new window.Blob([ data.get() ], { type: \"application/pdf\" }));\n });\n}\n\nfunction saveAs(group, filename, proxy, callback) {\n // XXX: Safari has Blob, but does not support the download attribute\n // so we'd end up converting to dataURL and using the proxy anyway.\n if (window.Blob && !support.browser.safari) {\n toBlob(group, function(blob){\n util_saveAs({ dataURI: blob, fileName: filename });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function(dataURL){\n util_saveAs({ dataURI: dataURL, fileName: filename, proxyURL: proxy });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n}\n\nfunction dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n}\n\nfunction drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment(\"BEGIN: \" + element.options._pdfDebug);\n }\n\n var transform = element.transform();\n var opacity = element.opacity();\n\n page.save();\n\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n\n setClipping(element, page, pdf);\n\n dispatch({\n Path : drawPath,\n MultiPath : drawMultiPath,\n Circle : drawCircle,\n Arc : drawArc,\n Text : drawText,\n Image : drawImage,\n Group : drawGroup,\n Rect : drawRect\n }, element, page, pdf);\n\n page.restore();\n\n if (element.options._pdfDebug) {\n page.comment(\"END: \" + element.options._pdfDebug);\n }\n}\n\nfunction setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n\n var color = stroke.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no stroke\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return; // no stroke\n }\n page.setLineWidth(width);\n }\n\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n}\n\nfunction setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n\n if (fill instanceof Gradient) {\n return;\n }\n\n var color = fill.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no fill\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n}\n\nfunction setClipping(element, page, pdf) {\n // XXX: only Path supported at the moment.\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n // page.setStrokeColor(Math.random(), Math.random(), Math.random());\n // page.setLineWidth(1);\n // page.stroke();\n }\n}\n\nfunction shouldDraw(thing) {\n return (thing &&\n (thing instanceof Gradient ||\n (thing.color && !/^(none|transparent)$/i.test(thing.color) &&\n (thing.width == null || thing.width > 0) &&\n (thing.opacity == null || thing.opacity > 0))));\n}\n\nfunction maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof RadialGradient;\n var start, end;\n if (isRadial) {\n start = { x: fill.center().x , y: fill.center().y , r: 0 };\n end = { x: fill.center().x , y: fill.center().y , r: fill.radius() };\n } else {\n start = { x: fill.start().x , y: fill.start().y };\n end = { x: fill.end().x , y: fill.end().y };\n }\n\n var stops = fill.stops.elements().map(function(stop){\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n\n // Duplicats first and last stop to fix\n // https://github.com/telerik/kendo-ui-core/issues/1782\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n\n var gradient = {\n userSpace : fill.userSpace(),\n type : isRadial ? \"radial\" : \"linear\",\n start : start,\n end : end,\n stops : stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left : tl.x,\n top : tl.y,\n width : size.width,\n height : size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n}\n\nfunction maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n // we should not get here; the path should have been\n // optimized away. but let's be prepared.\n page.nop();\n }\n}\n\nfunction maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n // detect if this path looks like a rectangle parallel to the axis\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) { // has curve?\n return false;\n }\n a[i] = segments[i].anchor();\n }\n // it's a rectangle if the y/x/y/x or x/y/x/y coords of\n // consecutive points are the same.\n var isRect = (\n a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x\n ) || (\n a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y\n );\n if (isRect) {\n // this saves a bunch of instructions in PDF:\n // moveTo, lineTo, lineTo, lineTo, close -> rect.\n page.rect(a[0].x, a[0].y,\n a[2].x - a[0].x /*width*/,\n a[2].y - a[0].y /*height*/);\n return true;\n }\n }\n}\n\nfunction _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(\n prevOut.x , prevOut.y,\n controlIn.x , controlIn.y,\n anchor.x , anchor.y\n );\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n}\n\nfunction drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(\n points[i].x, points[i++].y,\n points[i].x, points[i++].y,\n points[i].x, points[i++].y\n );\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawText(element, page) {\n var style = PDF.parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE.fillAndStroke;\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE.stroke;\n }\n\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n page.beginText();\n page.setFont(PDF.getFontURL(style), style.fontSize);\n page.setTextRenderingMode(mode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n page.endText();\n}\n\nfunction drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n}\n\nfunction drawImage(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n}\n\nfunction drawRect(element, page, pdf) {\n var geometry = element.geometry();\n const [ rx, ry ] = geometry.cornerRadius;\n if (rx === 0 && ry === 0) {\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n } else {\n drawPath(Path.fromRect(geometry, element.options), page, pdf);\n }\n}\n\nfunction parseColor(value) {\n var color = utils_parseColor(value, true);\n return color ? color.toRGB() : null;\n}\n\nfunction optimize(root) {\n var clipbox = false;\n var matrix = geo.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return { root: root, bbox: currentBox };\n\n function change(newShape) {\n changed = true;\n return newShape;\n }\n\n function visible(shape) {\n return (shape.visible() && shape.opacity() > 0 &&\n ( shouldDraw(shape.fill()) ||\n shouldDraw(shape.stroke()) ));\n }\n\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n\n var clip = shape.clip();\n if (clip) {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? geo.Rect.intersect(clipbox, clip) : clip;\n }\n }\n\n try {\n return f();\n }\n finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n var box = shape.rawBBox().bbox(matrix);\n if (clipbox && box) {\n box = geo.Rect.intersect(box, clipbox);\n }\n return box;\n }\n\n function opt(shape) {\n return withClipping(shape, function(){\n if (!(shape instanceof Group || shape instanceof MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? geo.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function(shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function(shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n var el = new Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n}\n\nfunction exportPDF(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n toDataURL(group, promise.resolve);\n\n return promise;\n}\n\n// XXX: the duplication is in order to keep exportPDF return a data\n// URI, which is what previous versions do. Currently only IE9 does\n// not support Blob, IMO we should switch to Blob by default\n// everywhere.\nfunction exportPDFToBlob(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n if (window.Blob && !support.browser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n\n return promise;\n}\n\n\nexport { exportPDF, exportPDFToBlob, saveAs, toDataURL, toBlob, render };\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\nclass Directory {\n constructor(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag : data.readString(4),\n checksum : data.readLong(),\n offset : data.readLong(),\n length : data.readLong()\n };\n tables[entry.tag] = entry;\n }\n }\n\n readTable(name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n return (this[name] = def.table = new Ctor(this, def));\n }\n\n render(tables) {\n var tableCount = Object.keys(tables).length;\n\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n\n out.writeString(tag);\n out.writeLong(this.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n\n tableData.write(table);\n if (tag == \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n }\n\n checksum(data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 0xFFFFFFFF;\n }\n}\n\nclass Table {\n constructor(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n }\n\n raw() {\n return this.rawData.slice(this.offset, this.length);\n }\n\n parse() {} // abstract\n}\n\nclass HeadTable extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n }\n\n render(indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n }\n}\n\nclass LocaTable extends Table {\n parse(data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function(){\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n }\n\n offsetOf(id) {\n return this.offsets[id];\n }\n\n lengthOf(id) {\n return this.offsets[id + 1] - this.offsets[id];\n }\n\n render(offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n }\n}\n\nclass HheaTable extends Table {\n parse(data) {\n data.offset(this.offset);\n\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n }\n\n render(ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n\n out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n }\n}\n\nclass MaxpTable extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n }\n\n render(glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n }\n}\n\nclass HmtxTable extends Table {\n parse(data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n }\n\n forGlyph(id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n }\n\n render(glyphIds) {\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n }\n}\n\nvar GlyfTable = (function(){\n class SimpleGlyph {\n get compound() {\n return false;\n }\n\n constructor(raw) {\n this.raw = raw;\n }\n\n render() {\n return this.raw.get();\n }\n }\n\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080;\n //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n class CompoundGlyph {\n get compound() {\n return true;\n }\n\n constructor(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) { // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n }\n\n render(old2new) {\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this.glyphIds[i];\n out.offset(this.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n }\n }\n\n return class extends Table {\n parse() {\n this.cache = {};\n }\n\n glyphFor(id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return (cache[id] = null);\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n\n var glyph = cache[id] = numberOfContours < 0 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n\n return glyph;\n }\n\n render(glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n };\n}());\n\nvar NameTable = (function(){\n class NameEntry {\n constructor(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n }\n }\n\n return class extends Table {\n parse(data) {\n data.offset(this.offset);\n data.readShort(); // format\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function(){\n return {\n platformID : data.readShort(),\n platformSpecificID : data.readShort(),\n languageID : data.readShort(),\n nameID : data.readShort(),\n length : data.readShort(),\n offset : data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n }\n\n render(psName) {\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n\n out.writeShort(0); // format\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [\n new NameEntry(psName, this.postscriptEntry)\n ] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n\n return out.get();\n }\n };\n})();\n\nvar PostTable = (function(){\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n return class extends Table {\n parse(data) {\n data.offset(this.offset);\n\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this.names.push(data.readString(data.readByte()));\n }\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n }\n\n glyphFor(code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n }\n\n render(mapping) {\n if (this.format == 0x00030000) {\n return this.raw();\n }\n\n // keep original header, but set format to 2.0\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n }\n };\n})();\n\nvar CmapTable = (function(){\n class CmapEntry {\n constructor(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n\n data.saveExcursion(function(){\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n\n data.skip(6); // searchRange, entrySelector, rangeShift\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n\n case 12:\n data.readShort(); // reserved\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n }\n });\n }\n }\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n\n out.writeShort(3); // platformID\n out.writeShort(1); // platformSpecificID\n out.writeLong(12); // offset\n out.writeShort(4); // format\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n out.writeShort(0); // language\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n\n return out.get();\n }\n\n return class extends Table {\n parse(data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function(){\n return new CmapEntry(data, offset, self.codeMap);\n });\n }\n\n static render(ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n out.writeShort(1); // tableCount\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n }\n };\n\n})();\n\nclass OS2Table extends Table {\n parse(data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n }\n\n render() {\n return this.raw();\n }\n}\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\", n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n}\n\nclass Subfont {\n constructor(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n }\n\n use(ch) {\n var self = this;\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function(ret, code){\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n\n // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n }\n\n encodeText(text) {\n return this.use(text);\n }\n\n glyphIds() {\n return sortedKeys(this.ogid2ngid);\n }\n\n glyphsFor(glyphIds, result) {\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n }\n\n render() {\n var glyphs = this.glyphsFor(this.glyphIds());\n\n // add missing sub-glyphs\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this.ogid2ngid[old_gid] == null) {\n var new_gid = this.nextGid++;\n this.ogid2ngid[old_gid] = new_gid;\n this.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function(id){\n return this.ngid2ogid[id];\n }, this);\n\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n\n this.lastChar = this.next - 1;\n\n var tables = {\n \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\" : glyf.table,\n \"loca\" : loca.table,\n \"hmtx\" : font.hmtx.render(old_gid_ids),\n \"hhea\" : font.hhea.render(old_gid_ids),\n \"maxp\" : font.maxp.render(old_gid_ids),\n \"post\" : font.post.render(old_gid_ids),\n \"name\" : font.name.render(this.psName),\n \"head\" : font.head.render(loca.format),\n \"OS/2\" : font.os2.render()\n };\n\n return this.font.directory.render(tables);\n }\n\n cidToGidMap() {\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n }\n}\n\nclass TTFFont {\n constructor(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == \"ttcf\") {\n var offset;\n const parse = function() {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n data.readLong(); // version\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n }\n\n parse() {\n var dir = this.directory = new Directory(this.contents);\n\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n }\n\n widthOfGlyph(glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n }\n\n makeSubset() {\n return new Subfont(this);\n }\n}\n\nexport { TTFFont };\n","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nconst HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nconst BASE64 = (function(){\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n\n var chr1 = (enc1 << 2) | (enc2 >>> 4);\n var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n var chr3 = ((enc3 & 3) << 6) | enc4;\n\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function(bytes) {\n var i = 0, n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n\n var enc1 = chr1 >>> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n var enc4 = chr3 & 63;\n\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n}());\n\nfunction BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function(len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function() {};\n\n var get = HAS_TYPED_ARRAYS ? function() {\n return new Uint8Array(data.buffer, 0, length);\n } : function() {\n return data;\n };\n\n var write = HAS_TYPED_ARRAYS ? function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n\n var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function(start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 0xFF;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return (readByte() << 8) | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n function readLong() {\n return (readShort() * 0x10000) + readShort();\n }\n function writeLong(w) {\n writeShort((w >>> 16) & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n function readFixed() {\n return readLong() / 0x10000;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n\n var stream = {\n eof : eof,\n readByte : readByte,\n writeByte : writeByte,\n readShort : readShort,\n writeShort : writeShort,\n readLong : readLong,\n writeLong : writeLong,\n readFixed : readFixed,\n writeFixed : writeFixed,\n\n // signed numbers.\n readShort_ : readShort_,\n writeShort_ : writeShort_,\n readLong_ : readLong_,\n writeLong_ : writeLong_,\n readFixed_ : readFixed_,\n writeFixed_ : writeFixed_,\n\n read : read,\n write : write,\n readString : readString,\n writeString : writeString,\n\n times : times,\n get : get,\n slice : slice,\n\n offset: function(pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n\n skip: function(nbytes) {\n offset += nbytes;\n },\n\n toString: function() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n\n length: function() { return length; },\n\n saveExcursion: function(f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n\n writeBase64: function(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function() {\n return BASE64.encode(get());\n }\n };\n\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function(value){\n var output = \"\";\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n const data = window.atob(base64);\n const result = new Uint8Array(data.length);\n\n for (let idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n const result = new Uint8Array(data.length);\n\n for (let idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n HAS_TYPED_ARRAYS,\n BASE64,\n BinaryStream,\n ucs2decode,\n ucs2encode,\n base64ToUint8Array\n};\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Circle extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Circle\";\n }\n\n constructor(geometry = new GeometryCircle(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Circle;\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nclass Element extends HasObservers {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(options) {\n super();\n\n this._initOptions(options);\n }\n\n _initOptions(options = {}) {\n const { clip, transform } = options;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n }\n\n transform(value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n }\n\n parentTransform() {\n let element = this;\n let parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n let transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n }\n\n currentTransform(parentTransform = this.parentTransform()) {\n const elementTransform = this.transform();\n const elementMatrix = toMatrix(elementTransform);\n\n let parentMatrix = toMatrix(parentTransform);\n let combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n }\n\n visible(value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n }\n\n clip(value) {\n const options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n }\n\n opacity(value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n }\n\n clippedBBox(transformation) {\n const bbox = this._clippedBBox(transformation);\n if (bbox) {\n const clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const transform = this.currentTransform(parentTransform);\n let transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n }\n\n _hasFill() {\n const fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n }\n\n _hasStroke() {\n const stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n }\n\n _clippedBBox(transformation) {\n return this.bbox(transformation);\n }\n}\n\nexport default Element;\n","import HasObservers from '../core/has-observers';\n\nconst push = [].push;\nconst pop = [].pop;\nconst splice = [].splice;\nconst shift = [].shift;\nconst slice = [].slice;\nconst unshift = [].unshift;\n\nclass ElementsArray extends HasObservers {\n constructor(array = []) {\n super();\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n elements(value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n }\n\n push() {\n const elements = arguments;\n const result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n slice() {\n return slice.call(this);\n }\n\n pop() {\n const length = this.length;\n const result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n splice(index, howMany) {\n const elements = slice.call(arguments, 2);\n const result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n }\n\n shift() {\n const length = this.length;\n const result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n unshift() {\n const elements = arguments;\n const result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n indexOf(element) {\n const length = this.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (this[idx] === element) {\n return idx;\n }\n }\n return -1;\n }\n\n _splice(index, howMany, elements) {\n const result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n }\n\n _add(elements) {\n this._setObserver(elements);\n this._change();\n }\n\n _remove(elements) {\n this._clearObserver(elements);\n this._change();\n }\n\n _setObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this);\n }\n }\n\n _clearObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this);\n }\n }\n\n _change() {}\n}\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nclass GeometryElementsArray extends ElementsArray {\n _change() {\n this.geometryChange();\n }\n}\n\nexport default GeometryElementsArray;","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nclass Group extends traversable(Element, \"children\") {\n get nodeType() {\n return \"Group\";\n }\n\n constructor(options) {\n super(options);\n this.children = [];\n }\n\n childrenChange(action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n }\n\n append() {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n }\n\n insert(index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n }\n\n insertAt(element, index) {\n return this.insert(index, element);\n }\n\n remove(element) {\n const index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n removeAt(index) {\n if (0 <= index && index < this.children.length) {\n let element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n clear() {\n const items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n }\n\n bbox(transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n }\n\n rawBBox() {\n return elementsBoundingBox(this.children, false);\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n }\n\n currentTransform(transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const children = this.children;\n const transform = this.currentTransform(parentTransform);\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n }\n\n _reparent(elements, newParent) {\n for (let i = 0; i < elements.length; i++) {\n const child = elements[i];\n const parent = child.parent;\n if (parent && parent !== this && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n }\n}\n\nexport default Group;","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nclass Image extends withGeometry(Element, [ \"rect\" ]) {\n get nodeType() {\n return \"Image\";\n }\n\n constructor(src, rect = new Rect(), options = {}) {\n super(options);\n\n this.src(src);\n this.rect(rect);\n }\n\n src(value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this._rect.bbox();\n }\n\n _containsPoint(point) {\n return this._rect.containsPoint(point);\n }\n\n _hasFill() {\n return this.src();\n }\n}\n\nexport default Image;","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\n\nexport class Path extends paintable(measurable(Element)) {\n static parse(str, options) {\n return MultiPath.parse(str, options);\n }\n\n get nodeType() {\n return \"Path\";\n }\n\n constructor(options) {\n super(options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set(\"stroke.lineJoin\", \"miter\");\n }\n }\n }\n\n moveTo(x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n }\n\n lineTo(x, y) {\n const point = defined(y) ? new Point(x, y) : x;\n const segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const start = rad(startAngle);\n const center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n const arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n }\n\n _addArcSegments(arc) {\n this.suspend();\n\n const curvePoints = arc.curvePoints();\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n this.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n }\n\n close() {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n }\n\n rawBBox() {\n return this._bbox();\n }\n\n _containsPoint(point) {\n const segments = this.segments;\n const length = segments.length;\n let intersectionsCount = 0;\n let previous, current;\n\n for (let idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n }\n\n _isOnPath(point, width) {\n const segments = this.segments;\n const length = segments.length;\n const pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, \"start\")) {\n return true;\n }\n\n for (let idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, \"end\")) {\n return true;\n }\n }\n return false;\n }\n\n _bbox(matrix) {\n const segments = this.segments;\n const length = segments.length;\n let boundingBox;\n\n if (length === 1) {\n let anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (let i = 1; i < length; i++) {\n let segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n }\n\n static fromRect(rect, options) {\n const path = new Path(options);\n let [ rx, ry ] = rect.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n const origin = rect.origin;\n const { x, y } = origin;\n const width = rect.width();\n const height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n }\n\n static fromPoints(points, options) {\n if (points) {\n const path = new Path(options);\n\n for (let i = 0; i < points.length; i++) {\n let point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n }\n\n static fromArc(arc, options) {\n const path = new Path(options);\n const startAngle = arc.startAngle;\n const start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n }\n}\n\nexport class MultiPath extends paintable(measurable(Element)) {\n static parse(str, options) {\n const instance = new MultiPath(options);\n return parsePath(instance, str);\n }\n\n get nodeType() {\n return \"MultiPath\";\n }\n\n constructor(options) {\n super(options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n moveTo(x, y) {\n const path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n }\n\n lineTo(x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n }\n\n close() {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n }\n\n _bbox(matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n }\n\n rawBBox() {\n return elementsBoundingBox(this.paths, false);\n }\n\n _containsPoint(point) {\n const paths = this.paths;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n }\n\n _isOnPath(point) {\n const paths = this.paths;\n const width = this.options.stroke.width;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n }\n}\n\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nconst DEFAULT_FONT = \"12px sans-serif\";\nconst DEFAULT_FILL = \"#000\";\n\nclass Text extends paintable(withPoints(Element, [ \"position\" ])) {\n get nodeType() {\n return \"Text\";\n }\n\n constructor(content, position = new Point(), options = {}) {\n super(options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n content(value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n }\n\n measure() {\n const metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n }\n\n rect() {\n const size = this.measure();\n const pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this.rect().bbox();\n }\n\n _containsPoint(point) {\n return this.rect().containsPoint(point);\n }\n}\n\nexport default Text;\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import { Class } from '../common';\n\nclass LRUCache extends Class {\n constructor(size) {\n super();\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n put(key, value) {\n const map = this._map;\n const entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n }\n\n get(key) {\n const entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n}\n\nexport default LRUCache;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nconst DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nlet defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nclass TextMetrics extends Class {\n constructor(options) {\n super();\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n measure(text, style, options = {}) {\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n const styleKey = objectKey(style);\n const cacheKey = hashKey(text + styleKey);\n const cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n const size = zeroSize();\n const measureBox = options.box || defaultMeasureBox;\n const baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (let key in style) {\n let value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n const textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n }\n\n _baselineMarker() {\n const marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n}\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","const REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nconst SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n const parts = [];\n for (let key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n let hash = 0x811C9DC5;\n\n for (let i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nconst literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n const values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n let roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}","const DEG_TO_RAD = Math.PI / 180;\nconst MAX_NUM = Number.MAX_VALUE;\nconst MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","export default function createPromise() {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = (data) => {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = (data) => {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = () => promise._state;\n\n return promise;\n}\n","const UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","let defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","import { encodeUTF8 } from './encode-utf';\n\nconst KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n let output = \"\";\n let i = 0;\n\n const utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n let chr1 = utfInput.charCodeAt(i++);\n let chr2 = utfInput.charCodeAt(i++);\n let chr3 = utfInput.charCodeAt(i++);\n\n let enc1 = chr1 >> 2;\n let enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n let enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n let enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","const fromCharCode = String.fromCharCode;\n\nexport const BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n let code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n const hi = code;\n const low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n let output = '';\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n const lead = ((c - 0x10000) >> 10) + 0xD800;\n const trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n const power = pow(precision);\n return Math.round(value * power) / power;\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","const KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n const input = encodeUTF8(plainText);\n let output = \"\";\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","export { saveAs } from './save-as';\nexport { encodeBase64 } from './base64';\n","export function saveAs(data, fileName, options = {}) {\n let save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nconst anchor = () => document.createElement('a');\nconst canDownload = () => 'download' in anchor();\n\nfunction saveAsBlob(data, fileName) {\n let blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n const parts = data.split(';base64,');\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n let dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n const fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n const e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(() => URL.revokeObjectURL(dataURI));\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n const form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n const formData = options.proxyData || {};\n formData.fileName = fileName;\n\n const parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (let name in formData) {\n if (formData.hasOwnProperty(name)) {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","var _0x3282=['AgfZ','turOExC=','zNvUy3rPB24=','z3jVDxa=','ChvIBgLZAerHDgu=','zgf0yq==','DgLTzxn0yw1W','vM5SC2O=','rejpz2u=','DfvPvvq=','D01gsvi=','u0Xdu2y=','C2nYAxb0s2v5','Dg9mB2nHBgvtDhjPBMC=','r3bNtu8=','C2v0','ChjVzhvJDe5HBwu=','BgLJzw5ZAw5Nrg9JC1vYBa==','vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=','DMvYC2LVBG==','C1DHyu0=','ChjVzhvJDhm=','CNfLrgK=','uKP0uwG=','CgfYC2u=','y3DYvhq=','zxHWAxj5rgf0zq==','uMLXufK=','tM8GBgLJzw5ZzsbMB3vUzc4k','tNz1Awe=','z3jVDxbfBMq=','sK1Vvey=','zMLUza==','D2fYBG==','tfDRtxq=','CgfJA2fNzu5HBwu=','Dw5KzwzPBMvK','C3niBfO=','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','ChjVzhvJDenVzgvZ','tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG','uhjVz3jLC3mG','tfLwDLa=','BgvUz3rO','lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==','uvPnu2m=','BMfTzq==','B2jQzwn0','igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=','zvn3tLG=','u2vLia==','s0PPBvO=','zxbwz0u=','zg9JC1vYBa==','z2v0','DhLWzq==','y29Kzq==','ww91CIbSAwnLBNnLigv4CgLYzwqGB24G'];(function(_0x456c2b,_0x328245){var _0x5a5cad=function(_0x97df7c){while(--_0x97df7c){_0x456c2b['push'](_0x456c2b['shift']());}};_0x5a5cad(++_0x328245);}(_0x3282,0x187));var _0x5a5c=function(_0x456c2b,_0x328245){_0x456c2b=_0x456c2b-0x0;var _0x5a5cad=_0x3282[_0x456c2b];if(_0x5a5c['IhMVZF']===undefined){var _0x97df7c=function(_0xf176a0){var _0x2f5c1a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',_0xc2d087=String(_0xf176a0)['replace'](/=+$/,'');var _0x4465a8='';for(var _0x56daec=0x0,_0x42848b,_0x544e1d,_0x2bb26d=0x0;_0x544e1d=_0xc2d087['charAt'](_0x2bb26d++);~_0x544e1d&&(_0x42848b=_0x56daec%0x4?_0x42848b*0x40+_0x544e1d:_0x544e1d,_0x56daec++%0x4)?_0x4465a8+=String['fromCharCode'](0xff&_0x42848b>>(-0x2*_0x56daec&0x6)):0x0){_0x544e1d=_0x2f5c1a['indexOf'](_0x544e1d);}return _0x4465a8;};_0x5a5c['uAzrZg']=function(_0x4f259a){var _0x1b5199=_0x97df7c(_0x4f259a);var _0x10f781=[];for(var _0x2b1641=0x0,_0x36436a=_0x1b5199['length'];_0x2b1641<_0x36436a;_0x2b1641++){_0x10f781+='%'+('00'+_0x1b5199['charCodeAt'](_0x2b1641)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10f781);},_0x5a5c['jhAfvh']={},_0x5a5c['IhMVZF']=!![];}var _0x49ba15=_0x5a5c['jhAfvh'][_0x456c2b];return _0x49ba15===undefined?(_0x5a5cad=_0x5a5c['uAzrZg'](_0x5a5cad),_0x5a5c['jhAfvh'][_0x456c2b]=_0x5a5cad):_0x5a5cad=_0x49ba15,_0x5a5cad;};var context={data:' {} '},cache=new Map();function setScriptKey(_0x3f7888){}function validatePackage(_0x4a1050){if(cache[_0x5a5c('0xf')](_0x4a1050[_0x5a5c('0x3')])){if(_0x5a5c('0x8')!==_0x5a5c('0x8')){function _0x153d7b(){var _0x6f019e=_0x5a5c('0x37')+_0x93d1e0[_0x5a5c('0x32')]+'\\x0a';if(_0x1d58e3[_0x5a5c('0xc')]===0x2)_0x6f019e+=_0x5a5c('0xe')+_0x3814cc[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x105281[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';else{if(_0x333263[_0x5a5c('0xc')]===0x0)_0x6f019e+=_0x5a5c('0x2b');else _0x281f6e[_0x5a5c('0xc')]===0x1&&(_0x6f019e+=_0x5a5c('0x21'));}return _0x6f019e+=_0x5a5c('0x7')+_0xaa3d77[_0x5a5c('0xa')]+_0x5a5c('0x5'),_0x6f019e;}}else return cache[_0x5a5c('0xb')](_0x4a1050[_0x5a5c('0x3')]);}var _0x5f3536=_0x4a1050[_0x5a5c('0x22')]?'\\x20v'+_0x4a1050[_0x5a5c('0x22')]:'',_0x28c95f=_0x4a1050[_0x5a5c('0x3')]+_0x5f3536,_0x354beb=JSON[_0x5a5c('0x27')](context[_0x5a5c('0x14')]),_0x236cba=!_0x354beb[_0x5a5c('0x1b')]&&!_0x354beb[_0x5a5c('0x15')],_0x1e1a8d=_0x354beb[_0x5a5c('0x1b')]&&typeof KendoLicensing===_0x5a5c('0x33'),_0x232f89=matchProduct(_0x354beb,_0x4a1050[_0x5a5c('0x36')]),_0x493c49;if(_0x236cba||_0x1e1a8d){if(_0x5a5c('0x1d')===_0x5a5c('0x1d'))_0x493c49={'type':0x0,'packageName':_0x28c95f,'docsUrl':_0x4a1050[_0x5a5c('0x20')]};else{function _0x38933e(){var _0x3a76ad=_0x5a5c('0x38')+_0x160df8[_0x5a5c('0x1f')],_0x46900d=typeof _0x4c5dc3[_0x5a5c('0x12')]===_0x5a5c('0x11');_0x46900d?_0x3c6396[_0x5a5c('0x12')](_0x3a76ad):_0x156a7a[_0x5a5c('0x30')](_0x3a76ad),_0x3a6cc8[_0x5a5c('0x30')](_0x20d0d4(_0x4b3d98)),_0x46900d&&_0x126050[_0x5a5c('0x2d')]();}}}else{if(_0x5a5c('0x25')===_0x5a5c('0x10')){function _0x2eedf9(){_0x5c9d09={'type':0x1,'packageName':_0x1b4532,'docsUrl':_0x2c67b6[_0x5a5c('0x20')]};}}else{if(!_0x232f89){if(_0x5a5c('0x31')!==_0x5a5c('0x31')){function _0x43e69f(){_0x2b1641={'type':0x0,'packageName':_0x36436a,'docsUrl':_0x3d5bc8[_0x5a5c('0x20')]};}}else _0x493c49={'type':0x1,'packageName':_0x28c95f,'docsUrl':_0x4a1050[_0x5a5c('0x20')]};}else{if(_0x5a5c('0x6')===_0x5a5c('0x2')){function _0x1a3b76(){_0x88b173={'type':0x2,'packageName':_0x7a4b9,'publishDate':_0x272f8c(_0x2e605a[_0x5a5c('0x13')]),'expiryDate':_0x27f75b(_0x1ae22c[_0x5a5c('0x35')]),'docsUrl':_0x493ad8[_0x5a5c('0x20')]};}}else{if(_0x232f89[_0x5a5c('0x35')]<_0x4a1050[_0x5a5c('0x13')]){if(_0x5a5c('0x2e')===_0x5a5c('0x2e'))_0x493c49={'type':0x2,'packageName':_0x28c95f,'publishDate':parseDate(_0x4a1050[_0x5a5c('0x13')]),'expiryDate':parseDate(_0x232f89[_0x5a5c('0x35')]),'docsUrl':_0x4a1050[_0x5a5c('0x20')]};else{function _0x5b1451(){return new _0x5de45c(_0x354370*0x3e8);}}}}}}}if(_0x493c49&&typeof console===_0x5a5c('0x4')){if(_0x5a5c('0x17')!==_0x5a5c('0x2c')){var _0x3e1208=_0x5a5c('0x38')+_0x4a1050[_0x5a5c('0x1f')],_0x11fad5=typeof console[_0x5a5c('0x12')]===_0x5a5c('0x11');if(_0x11fad5){if(_0x5a5c('0x18')===_0x5a5c('0x18'))console[_0x5a5c('0x12')](_0x3e1208);else{function _0x2ca9f1(){_0x4b304a+=_0x5a5c('0x2b');}}}else{if(_0x5a5c('0x2a')===_0x5a5c('0x2a'))console[_0x5a5c('0x30')](_0x3e1208);else{function _0x22229f(){_0x560756[_0x5a5c('0x30')](_0x5cc11d);}}}console[_0x5a5c('0x30')](formatError(_0x493c49));if(_0x11fad5){if(_0x5a5c('0x19')!==_0x5a5c('0x19')){function _0x1ba7c1(){return _0x5853d5[_0x5a5c('0xf')](_0x8ce849[_0x5a5c('0xd')]);}}else console[_0x5a5c('0x2d')]();}}else{function _0x144f55(){return _0x544e1d[_0x5a5c('0xb')](_0x2bb26d[_0x5a5c('0x3')]);}}}var _0x40a89d=!_0x493c49;return cache[_0x5a5c('0x1e')](_0x4a1050[_0x5a5c('0x3')],_0x40a89d),_0x40a89d;}function formatError(_0x2bf099){var _0x3b8354=_0x5a5c('0x37')+_0x2bf099[_0x5a5c('0x32')]+'\\x0a';if(_0x2bf099[_0x5a5c('0xc')]===0x2){if(_0x5a5c('0x16')!==_0x5a5c('0x16')){function _0x333f51(){_0x1cd78a+=_0x5a5c('0xe')+_0x1069cf[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x58f1d3[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';}}else _0x3b8354+=_0x5a5c('0xe')+_0x2bf099[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x2bf099[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';}else{if(_0x2bf099[_0x5a5c('0xc')]===0x0){if(_0x5a5c('0x28')===_0x5a5c('0x34')){function _0x2de46a(){_0x44d8f3+=_0x5a5c('0x21');}}else _0x3b8354+=_0x5a5c('0x2b');}else{if(_0x2bf099[_0x5a5c('0xc')]===0x1){if(_0x5a5c('0x9')===_0x5a5c('0x1a')){function _0x42e868(){_0x3c8674[_0x5a5c('0x12')](_0x3c7683);}}else _0x3b8354+=_0x5a5c('0x21');}}}return _0x3b8354+=_0x5a5c('0x7')+_0x2bf099[_0x5a5c('0xa')]+_0x5a5c('0x5'),_0x3b8354;}function matchProduct(_0x3be8d0,_0x22e53b){var _0x2de868=_0x3be8d0[_0x5a5c('0x24')];if(!_0x2de868||!_0x2de868[_0x5a5c('0x0')]){if(_0x5a5c('0x26')===_0x5a5c('0x23')){function _0x2ce30d(){return null;}}else return null;}var _0x1c39ae=new Set(_0x22e53b);return _0x2de868[_0x5a5c('0x2f')](function(_0xf8b567){if(_0x5a5c('0x39')===_0x5a5c('0x39'))return _0x1c39ae[_0x5a5c('0xf')](_0xf8b567[_0x5a5c('0xd')]);else{function _0x2ffdc4(){var _0x287464=_0x41d50e[_0x5a5c('0x24')];if(!_0x287464||!_0x287464[_0x5a5c('0x0')])return null;var _0x473ae4=new _0x5ba11e(_0x2ff6bd);return _0x287464[_0x5a5c('0x2f')](function(_0x54470f){return _0x473ae4[_0x5a5c('0xf')](_0x54470f[_0x5a5c('0xd')]);});}}});}function parseDate(_0x15d2db){return new Date(_0x15d2db*0x3e8);}export{setScriptKey,validatePackage};\n","import TemplateService from './services/template-service';\nimport getter from './utils/getter';\nimport map from './utils/map';\n\nfunction defaultGroupHeaderTemplate(data) {\n return `${ data.title }: ${ data.value }`;\n}\n\nfunction createArray(length, callback) {\n const result = [];\n\n for (let idx = 0; idx < length; idx++) {\n result.push(callback(idx));\n }\n\n return result;\n}\n\nfunction defaultItemId(item) {\n return item.id;\n}\n\nclass ExcelExporter {\n constructor(options) {\n options.columns = this._trimColumns(options.columns || []);\n\n this.allColumns = map(this._leafColumns(options.columns || []), this._prepareColumn);\n\n this.columns = this._visibleColumns(this.allColumns);\n\n this.options = options;\n this.data = options.data || [];\n this.aggregates = options.aggregates || {};\n this.groups = [].concat(options.groups || []);\n this.hasGroups = this.groups.length > 0;\n this.hierarchy = options.hierarchy;\n this.hasGroupHeaderColumn = this.columns.some(column => column.groupHeaderColumnTemplate);\n this.collapsible = this.options.collapsible;\n }\n\n workbook() {\n const workbook = {\n sheets: [ {\n columns: this._columns(),\n rows: this.hierarchy ? this._hierarchyRows() : this._rows(),\n freezePane: this._freezePane(),\n filter: this._filter()\n } ]\n };\n\n return workbook;\n }\n\n _trimColumns(columns) {\n return columns.filter((column) => {\n let result = Boolean(column.field);\n\n if (!result && column.columns) {\n result = this._trimColumns(column.columns).length > 0;\n }\n\n return result;\n });\n }\n\n _leafColumns(columns) {\n let result = [];\n\n for (let idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n } else {\n result = result.concat(this._leafColumns(columns[idx].columns));\n }\n }\n\n return result;\n }\n\n _prepareColumn(column) {\n if (!column.field) {\n return null;\n }\n\n let value = function(dataItem) {\n return getter(column.field, true)(dataItem);\n };\n\n let values = null;\n\n if (column.values) {\n values = {};\n\n column.values.forEach(function(item) {\n values[item.value] = item.text;\n });\n\n value = function(dataItem) {\n return values[getter(column.field, true)(dataItem)];\n };\n }\n\n return Object.assign({}, column, {\n value: value,\n values: values,\n groupHeaderTemplate: column.groupHeaderTemplate ? TemplateService.compile(column.groupHeaderTemplate) : defaultGroupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate ? TemplateService.compile(column.groupHeaderColumnTemplate) : null,\n groupFooterTemplate: column.groupFooterTemplate ? TemplateService.compile(column.groupFooterTemplate) : null,\n footerTemplate: column.footerTemplate ? TemplateService.compile(column.footerTemplate) : null\n });\n }\n\n _filter() {\n if (!this.options.filterable) {\n return null;\n }\n\n const depth = this._depth();\n\n return {\n from: depth,\n to: depth + this.columns.length - 1\n };\n }\n\n _createPaddingCells(length) {\n return createArray(length, () => Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, this.options.paddingCellOptions));\n }\n\n _dataRow(dataItem, level, depth) {\n let cells = this._createPaddingCells(level);\n\n // grouped\n if (this.hasGroups && depth && dataItem.items) {\n cells = cells.concat(this._groupHeaderCells(dataItem, level, depth));\n const rows = this._dataRows(dataItem.items, level + 1);\n\n rows.unshift({\n type: \"group-header\",\n cells: cells,\n level: this.collapsible ? level : null\n });\n\n return rows.concat(this._footer(dataItem, level));\n }\n\n const dataCells = [];\n\n for (let cellIdx = 0; cellIdx < this.columns.length; cellIdx++) {\n dataCells[cellIdx] = this._cell(dataItem, this.columns[cellIdx]);\n }\n\n if (this.hierarchy) {\n dataCells[0].colSpan = depth - level + 1;\n }\n\n return [ {\n type: \"data\",\n cells: cells.concat(dataCells),\n level: this.collapsible ? level : null\n } ];\n }\n\n _groupHeaderCells(dataItem, level, depth) {\n const cells = [];\n\n const column = this.allColumns.filter(function(column) {\n return column.field === dataItem.field;\n })[0] || {};\n\n const title = column && column.title ? column.title : dataItem.field;\n const template = column ? column.groupHeaderTemplate || column.groupHeaderColumnTemplate : null;\n const group = Object.assign({\n title: title,\n field: dataItem.field,\n value: column && column.values ? column.values[dataItem.value] : dataItem.value,\n aggregates: dataItem.aggregates,\n items: dataItem.items\n }, dataItem.aggregates[dataItem.field]);\n\n const value = template ? template(group) : `${ title }: ${ dataItem.value }`;\n\n cells.push(Object.assign({\n value: value,\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: (this.hasGroupHeaderColumn ? 1 : this.columns.length) + depth - level\n }, column.groupHeaderCellOptions));\n\n if (this.hasGroupHeaderColumn) {\n this.columns.forEach(function(column, index) {\n if (index > 0) {\n cells.push(Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupHeaderColumnTemplate ?\n column.groupHeaderColumnTemplate(Object.assign({ group: group }, group, dataItem.aggregates[column.field])) :\n undefined\n }, column.groupHeaderCellOptions));\n }\n });\n }\n\n return cells;\n }\n\n _dataRows(dataItems, level) {\n const depth = this._depth();\n const rows = [];\n\n for (let idx = 0; idx < dataItems.length; idx++) {\n rows.push.apply(rows, this._dataRow(dataItems[idx], level, depth));\n }\n\n return rows;\n }\n\n _hierarchyRows() {\n const depth = this._depth();\n const data = this.data;\n const itemLevel = this.hierarchy.itemLevel;\n const itemId = this.hierarchy.itemId || defaultItemId;\n const hasFooter = this._hasFooterTemplate();\n const rows = [];\n const parents = [];\n let previousLevel = 0;\n let previousItemId;\n\n if (!hasFooter) {\n this.collapsible = false;\n }\n\n for (let idx = 0; idx < data.length; idx++) {\n const item = data[idx];\n const level = itemLevel(item, idx);\n\n if (hasFooter) {\n if (level > previousLevel) {\n parents.push({ id: previousItemId, level: previousLevel });\n } else if (level < previousLevel) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, level, depth));\n }\n\n previousLevel = level;\n previousItemId = itemId(item, idx);\n }\n\n rows.push.apply(rows, this._dataRow(item, level + 1, depth));\n }\n\n if (hasFooter) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, 0, depth));\n\n const rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n }\n\n this._prependHeaderRows(rows);\n\n return rows;\n }\n\n _hierarchyFooterRows(parents, currentLevel, depth) {\n const rows = [];\n while (parents.length && parents[parents.length - 1].level >= currentLevel) {\n const parent = parents.pop();\n rows.push(this._hierarchyFooter(this.aggregates[parent.id], parent.level + 1, depth));\n }\n\n return rows;\n }\n\n _hasFooterTemplate() {\n const columns = this.columns;\n for (let idx = 0; idx < columns.length; idx++) {\n if (columns[idx].footerTemplate) {\n return true;\n }\n }\n }\n\n _hierarchyFooter(aggregates, level, depth) {\n const cells = this.columns.map(function(column, index) {\n const colSpan = index ? 1 : depth - level + 1;\n if (column.footerTemplate) {\n const fieldAggregates = (aggregates || {})[column.field];\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan,\n value: column.footerTemplate(Object.assign({ aggregates: aggregates }, fieldAggregates))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan\n }, column.footerCellOptions);\n });\n\n return {\n type: \"footer\",\n cells: this._createPaddingCells(level).concat(cells),\n level: this.collapsible ? level : null\n };\n }\n\n _footer(dataItem, level) {\n const rows = [];\n const footer = this.columns.some(column => column.groupFooterTemplate);\n\n let templateData, group;\n if (footer) {\n group = {\n group: { items: dataItem.items,\n field: dataItem.field,\n value: dataItem.value }\n };\n templateData = {};\n Object.keys(dataItem.aggregates).forEach(key => {\n templateData[key] = Object.assign({}, dataItem.aggregates[key], group);\n });\n }\n\n const cells = this.columns.map((column) => {\n if (column.groupFooterTemplate) {\n let data = Object.assign({}, templateData, dataItem.aggregates[column.field], group);\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupFooterTemplate(data)\n }, column.groupFooterCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.groupFooterCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"group-footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells),\n level: this.collapsible ? level : null\n });\n }\n\n return rows;\n }\n\n _isColumnVisible(column) {\n return this._visibleColumns([ column ]).length > 0 && (column.field || column.columns);\n }\n\n _visibleColumns(columns) {\n return columns.filter((column) => {\n let exportable = column.exportable;\n if (typeof exportable === 'object') {\n exportable = column.exportable.excel;\n }\n\n const visibleInExport = !column.hidden && exportable !== false;\n const visibleInExportOnly = column.hidden && exportable === true;\n let visible = visibleInExport || visibleInExportOnly;\n if (visible && column.columns) {\n visible = this._visibleColumns(column.columns).length > 0;\n }\n return visible;\n });\n }\n\n _headerRow(row, groups) {\n const headers = row.cells.map(function(cell) {\n return Object.assign(cell, {\n colSpan: cell.colSpan > 1 ? cell.colSpan : 1,\n rowSpan: row.rowSpan > 1 && !cell.colSpan ? row.rowSpan : 1\n });\n });\n\n if (this.hierarchy && headers[0].firstCell) {\n headers[0].colSpan += this._depth();\n }\n\n return {\n type: \"header\",\n cells: createArray(groups.length, () => Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\"\n }, this.options.headerPaddingCellOptions)).concat(headers)\n };\n }\n\n _prependHeaderRows(rows) {\n const groups = this.groups;\n\n const headerRows = [ { rowSpan: 1, cells: [], index: 0 } ];\n\n this._prepareHeaderRows(headerRows, this.options.columns);\n\n for (let idx = headerRows.length - 1; idx >= 0; idx--) {\n rows.unshift(this._headerRow(headerRows[idx], groups));\n }\n }\n\n _prepareHeaderRows(rows, columns, parentCell, parentRow) {\n const row = parentRow || rows[rows.length - 1];\n let childRow = rows[row.index + 1];\n let totalColSpan = 0;\n\n for (let idx = 0; idx < columns.length; idx++) {\n const column = columns[idx];\n if (this._isColumnVisible(column)) {\n\n const cell = Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\",\n value: column.title || column.field,\n colSpan: 0,\n firstCell: idx === 0 && (!parentCell || parentCell.firstCell)\n }, column.headerCellOptions);\n row.cells.push(cell);\n\n if (column.columns && column.columns.length) {\n if (!childRow) {\n childRow = { rowSpan: 0, cells: [], index: rows.length };\n rows.push(childRow);\n }\n cell.colSpan = this._trimColumns(this._visibleColumns(column.columns)).length;\n this._prepareHeaderRows(rows, column.columns, cell, childRow);\n totalColSpan += cell.colSpan - 1;\n row.rowSpan = rows.length - row.index;\n }\n }\n }\n\n if (parentCell) {\n parentCell.colSpan += totalColSpan;\n }\n }\n\n _rows() {\n const rows = this._dataRows(this.data, 0);\n\n if (this.columns.length) {\n this._prependHeaderRows(rows);\n let footer = false;\n\n const cells = this.columns.map((column) => {\n if (column.footerTemplate) {\n footer = true;\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.footerTemplate(Object.assign({}, this.aggregates, this.aggregates[column.field]))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.footerCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells)\n });\n }\n }\n\n return rows;\n }\n\n _headerDepth(columns) {\n const result = 1;\n let max = 0;\n\n for (let idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n const temp = this._headerDepth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n }\n\n _freezePane() {\n const columns = this._visibleColumns(this.options.columns || []);\n\n const colSplit = this._visibleColumns(this._trimColumns(this._leafColumns(columns.filter(function(column) {\n return column.locked;\n })))).length;\n\n return {\n rowSplit: this._headerDepth(columns),\n colSplit: colSplit ? colSplit + this.groups.length : 0\n };\n }\n\n _cell(dataItem, column) {\n return Object.assign({\n value: column.value(dataItem)\n }, column.cellOptions);\n }\n\n _depth() {\n let depth = 0;\n\n if (this.hierarchy) {\n depth = this.hierarchy.depth;\n } else {\n depth = this.groups.length;\n }\n\n return depth;\n }\n\n _columns() {\n const depth = this._depth();\n const columns = createArray(depth, () => ({ width: 20 }));\n\n return columns.concat(this.columns.map(function(column) {\n return {\n width: parseInt(column.width, 10),\n autoWidth: column.width ? false : true\n };\n }));\n }\n}\n\nexport default ExcelExporter;\n","export { default as ExcelExporter } from './excel-exporter';\nexport * from './services';\nexport * from './ooxml';","import map from './utils/map';\nimport createZip from './utils/create-zip';\nimport IntlService from './services/intl-service';\nimport dateToSerial from './utils/time';\n\nconst MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\nconst DATA_URL_PREFIX = `data:${MIME_TYPE};base64,`;\nconst DATA_URL_OPTIONS = { compression: \"DEFLATE\", type: \"base64\" };\nconst BLOB_OPTIONS = { compression: \"DEFLATE\", type: \"blob\" };\nconst ARRAYBUFFER_OPTIONS = { compression: \"DEFLATE\", type: \"arraybuffer\" };\n\n/* eslint-disable key-spacing, no-arrow-condition, indent, no-nested-ternary, consistent-return */\n\nfunction toDataURI(content) {\n return DATA_URL_PREFIX + content;\n}\n\nfunction indexOf(thing, array) {\n return array.indexOf(thing);\n}\n\nconst parseJSON = JSON.parse.bind(JSON);\n\nfunction ESC(val) {\n return String(val)\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/\\'/g, \"'\");\n}\n\nfunction repeat(count, func) {\n let str = \"\";\n for (let i = 0; i < count; ++i) {\n str += func(i);\n }\n return str;\n}\n\nfunction foreach(arr, func) {\n let str = \"\";\n if (arr != null) {\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; ++i) {\n str += func(arr[i], i);\n }\n } else if (typeof arr == \"object\") {\n Object.keys(arr).forEach((key, i) => {\n str += func(arr[key], key, i);\n });\n }\n }\n return str;\n}\n\nconst XMLHEAD = '\\r';\n\nconst RELS = `${XMLHEAD}\n \n \n \n \n `;\n\nconst CORE = ({ creator, lastModifiedBy, created, modified }) => `${XMLHEAD}\n \n ${ESC(creator)}\n ${ESC(lastModifiedBy)}\n ${ESC(created)}\n ${ESC(modified)}\n`;\n\nconst APP = ({ sheets }) => `${XMLHEAD}\n\n Microsoft Excel\n 0\n false\n \n \n \n Worksheets\n \n \n ${sheets.length}\n \n \n \n \n ${\n foreach(sheets, (sheet, i) =>\n sheet.options.title\n ? `${ESC(sheet.options.title)}`\n : `Sheet${i + 1}`\n )\n }\n \n false\n false\n false\n 14.0300\n`;\n\nconst CONTENT_TYPES = ({ sheetCount, commentFiles, drawingFiles }) => `${XMLHEAD}\n\n \n \n \n \n \n \n \n \n \n ${repeat(sheetCount, idx =>\n ``)}\n ${foreach(commentFiles, filename =>\n ``)}\n ${foreach(drawingFiles, filename =>\n ``)}\n \n \n`;\n\nconst WORKBOOK = ({ sheets, filterNames, userNames }) => `${XMLHEAD}\n\n \n \n \n \n \n \n ${foreach(sheets, ({ options }, i) => {\n const name = options.name || options.title || `Sheet${i + 1}`;\n return ``;\n })}\n \n ${filterNames.length || userNames.length ? `\n \n ${foreach(filterNames, (f) => `\n `)}\n ${foreach(userNames, (f) => `\n `)}\n ` : ''}\n \n`;\n\nconst WORKSHEET = ({\n frozenColumns,\n frozenRows,\n columns,\n defaults,\n data,\n index,\n mergeCells,\n autoFilter,\n filter,\n showGridLines,\n hyperlinks,\n validations,\n defaultCellStyleId,\n rtl,\n legacyDrawing,\n drawing,\n lastRow,\n lastCol\n}) => `${XMLHEAD}\n\n ${lastRow && lastCol ? `` : \"\"}\n\n \n \n ${frozenRows || frozenColumns ? `\n ` : ''}\n \n \n\n \n\n ${defaultCellStyleId != null || (columns && columns.length > 0) ? `\n \n ${!columns || !columns.length ? `\n
  • ` : ''}\n ${foreach(columns, (column, ci) => {\n const columnIndex = typeof column.index === \"number\" ? column.index + 1 : (ci + 1);\n if (column.width === 0) {\n return ``;\n }\n return ``;\n })}\n ` : ''}\n\n \n ${foreach(data, (row, ri) => {\n const rowIndex = typeof row.index === \"number\" ? row.index + 1 : (ri + 1);\n return `\n \n ${foreach(row.data, (cell) => `\n \n ${cell.formula != null ? writeFormula(cell.formula) : ''}\n ${cell.value != null ? `${ESC(cell.value)}` : ''}\n `)}\n \n `;})}\n \n\n ${autoFilter ? ``\n : filter ? spreadsheetFilters(filter) : ''}\n\n ${mergeCells.length ? `\n \n ${foreach(mergeCells, (ref) => ``)}\n ` : ''}\n\n ${validations.length ? `\n \n ${foreach(validations, (val) => `\n \n ${val.formula1 ? `${ESC(val.formula1)}` : ''}\n ${val.formula2 ? `${ESC(val.formula2)}` : ''}\n `)}\n ` : ''}\n\n ${hyperlinks.length ? `\n \n ${foreach(hyperlinks, (link) => `\n `)}\n ` : ''}\n\n \n ${drawing ? `` : ''}\n ${legacyDrawing ? `` : ''}\n`;\n\nconst WORKBOOK_RELS = ({ count }) => `${XMLHEAD}\n\n ${repeat(count, (idx) => `\n `)}\n \n \n`;\n\nconst WORKSHEET_RELS = ({ hyperlinks, comments, sheetIndex, drawings }) => `${XMLHEAD}\n\n ${foreach(hyperlinks, (link) => `\n `)}\n ${!comments.length ? '' : `\n \n `}\n ${!drawings.length ? '' : `\n `}\n`;\n\nconst COMMENTS_XML = ({ comments }) => `${XMLHEAD}\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n \n \n \n \n ${ESC(comment.text)}\n \n \n `)}\n \n`;\n\nconst LEGACY_DRAWING = ({ comments }) => `\\\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n ${comment.anchor}\n False\n ${comment.row}\n ${comment.col}\n \n `)}\n`;\n\nconst DRAWINGS_XML = (drawings) => `${XMLHEAD}\n\n ${foreach(drawings, (drawing, index) => `\n \n \n ${drawing.col}\n ${drawing.colOffset}\n ${drawing.row}\n ${drawing.rowOffset}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `)}\n`;\n\nconst DRAWINGS_RELS_XML = (rels) => `${XMLHEAD}\n\n ${foreach(rels, rel => `\n `)}\n`;\n\nconst SHARED_STRINGS = ({ count, uniqueCount, indexes }) => `${XMLHEAD}\n\n ${foreach(Object.keys(indexes), (index) => `\n ${ESC(index.substring(1))}`)}\n`;\n\nconst STYLES = ({\n formats,\n fonts,\n fills,\n borders,\n styles\n}) => `${XMLHEAD}\n\n \n ${foreach(formats, (format, fi) => `\n `)}\n \n \n \n \n \n \n \n \n \n ${foreach(fonts, (font) => `\n \n ${font.bold ? '' : ''}\n ${font.italic ? '' : ''}\n ${font.underline ? '' : ''}\n \n ${font.color ? `` : ''}\n ${font.fontFamily ? `\n \n \n ` : `\n \n \n \n `}\n `)}\n \n \n \n \n ${foreach(fills, (fill) => `\n ${fill.background ? `\n \n \n \n \n \n ` : ''}`)}\n \n \n \n ${foreach(borders, borderTemplate)}\n \n \n \n \n \n \n ${foreach(styles, (style) => `\n \n ${style.textAlign || style.verticalAlign || style.wrap ? `\n \n ` : ''}\n \n `)}\n \n \n \n \n \n \n`;\n\nfunction writeFormula(formula) {\n if (typeof formula == \"string\") {\n return `${ESC(formula)}`;\n }\n // array formulas\n return `${ESC(formula.src)}`;\n}\n\nfunction numChar(colIndex) {\n const letter = Math.floor(colIndex / 26) - 1;\n\n return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n}\n\nfunction ref(rowIndex, colIndex) {\n return numChar(colIndex) + (rowIndex + 1);\n}\n\nfunction $ref(rowIndex, colIndex) {\n return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n}\n\nfunction filterRowIndex(options) {\n const frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n return frozenRows - 1;\n}\n\nfunction toWidth(px) {\n const maximumDigitWidth = 7;\n return (px / maximumDigitWidth) - (Math.floor(128 / maximumDigitWidth) / 256);\n}\n\nfunction toHeight(px) {\n return px * 0.75;\n}\n\nfunction stripFunnyChars(value) {\n return String(value)\n .replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n .replace(/\\r?\\n/g, \"\\r\\n\"); // make sure LF is preceded by CR\n}\n\nclass Worksheet {\n\n constructor(options, sharedStrings, styles, borders) {\n this.options = options;\n this._strings = sharedStrings;\n this._styles = styles;\n this._borders = borders;\n this._validations = {};\n this._comments = [];\n this._drawings = options.drawings || [];\n this._hyperlinks = (this.options.hyperlinks || []).map(\n (link, i) => Object.assign({}, link, { rId: `link${i}` }));\n }\n\n relsToXML() {\n const hyperlinks = this._hyperlinks;\n const comments = this._comments;\n const drawings = this._drawings;\n\n if (hyperlinks.length || comments.length || drawings.length) {\n return WORKSHEET_RELS({\n hyperlinks : hyperlinks,\n comments : comments,\n sheetIndex : this.options.sheetIndex,\n drawings : drawings\n });\n }\n }\n\n toXML(index) {\n const mergeCells = this.options.mergedCells || [];\n const rows = this.options.rows || [];\n const data = inflate(rows, mergeCells);\n\n this._readCells(data);\n\n let autoFilter = this.options.filter;\n let filter;\n if (autoFilter && (typeof autoFilter.from === \"number\") && (typeof autoFilter.to === \"number\")) {\n // Grid enables auto filter\n autoFilter = {\n from: ref(filterRowIndex(this.options), autoFilter.from),\n to: ref(filterRowIndex(this.options), autoFilter.to)\n };\n } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n // this is probably from the Spreadsheet\n filter = autoFilter;\n autoFilter = null;\n }\n\n const validations = [];\n for (let i in this._validations) {\n if (Object.prototype.hasOwnProperty.call(this._validations, i)) {\n validations.push(this._validations[i]);\n }\n }\n\n let defaultCellStyleId = null;\n if (this.options.defaultCellStyle) {\n defaultCellStyleId = this._lookupStyle(this.options.defaultCellStyle);\n }\n\n const freezePane = this.options.freezePane || {};\n const defaults = this.options.defaults || {};\n const lastRow = this.options.rows ? this._getLastRow() : 1;\n const lastCol = this.options.rows ? this._getLastCol() : 1;\n\n return WORKSHEET({\n frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n frozenRows: this.options.frozenRows || freezePane.rowSplit,\n columns: this.options.columns,\n defaults: defaults,\n data: data,\n index: index,\n mergeCells: mergeCells,\n autoFilter: autoFilter,\n filter: filter,\n showGridLines: this.options.showGridLines,\n hyperlinks: this._hyperlinks,\n validations: validations,\n defaultCellStyleId: defaultCellStyleId,\n rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n legacyDrawing: this._comments.length ? `vml${this.options.sheetIndex}` : null,\n drawing: this._drawings.length ? `drw${this.options.sheetIndex}` : null,\n lastRow: lastRow,\n lastCol: lastCol\n });\n }\n\n commentsXML() {\n if (this._comments.length) {\n return COMMENTS_XML({ comments: this._comments });\n }\n }\n\n drawingsXML(images) {\n if (this._drawings.length) {\n let rels = {};\n let main = this._drawings.map(drw => {\n let ref = parseRef(drw.topLeftCell);\n let img = rels[drw.image];\n if (!img) {\n img = rels[drw.image] = {\n rId: `img${drw.image}`,\n target: images[drw.image].target\n };\n }\n return {\n col : ref.col,\n colOffset : pixelsToExcel(drw.offsetX),\n row : ref.row,\n rowOffset : pixelsToExcel(drw.offsetY),\n width : pixelsToExcel(drw.width),\n height : pixelsToExcel(drw.height),\n imageId : img.rId\n };\n });\n return {\n main: DRAWINGS_XML(main),\n rels: DRAWINGS_RELS_XML(rels)\n };\n }\n }\n\n legacyDrawing() {\n if (this._comments.length) {\n return LEGACY_DRAWING({ comments: this._comments });\n }\n }\n\n _lookupString(value) {\n const key = \"$\" + value;\n const index = this._strings.indexes[key];\n let result;\n\n if (index !== undefined) {\n result = index;\n } else {\n result = this._strings.indexes[key] = this._strings.uniqueCount;\n this._strings.uniqueCount ++;\n }\n\n this._strings.count ++;\n\n return result;\n }\n\n _lookupStyle(style) {\n const json = JSON.stringify(style);\n\n if (json === \"{}\") {\n return 0;\n }\n\n let index = indexOf(json, this._styles);\n\n if (index < 0) {\n index = this._styles.push(json) - 1;\n }\n\n // There is one default style\n return index + 1;\n }\n\n _lookupBorder(border) {\n const json = JSON.stringify(border);\n if (json === \"{}\") {\n return;\n }\n\n let index = indexOf(json, this._borders);\n if (index < 0) {\n index = this._borders.push(json) - 1;\n }\n\n // There is one default border\n return index + 1;\n }\n\n _readCells(rowData) {\n for (let i = 0; i < rowData.length; i++) {\n const row = rowData[i];\n const cells = row.cells;\n\n row.data = [];\n\n for (let j = 0; j < cells.length; j++) {\n const cellData = this._cell(cells[j], row.index, j);\n if (cellData) {\n row.data.push(cellData);\n }\n }\n }\n }\n\n _cell(data, rowIndex, cellIndex) {\n if (!data || data === EMPTY_CELL) {\n return null;\n }\n\n let value = data.value;\n\n let border = {};\n\n if (data.borderLeft) {\n border.left = data.borderLeft;\n }\n\n if (data.borderRight) {\n border.right = data.borderRight;\n }\n\n if (data.borderTop) {\n border.top = data.borderTop;\n }\n\n if (data.borderBottom) {\n border.bottom = data.borderBottom;\n }\n\n border = this._lookupBorder(border);\n\n const defStyle = this.options.defaultCellStyle || {};\n let style = { borderId: border };\n\n (function(add) {\n add(\"color\");\n add(\"background\");\n add(\"bold\");\n add(\"italic\");\n add(\"underline\");\n if (!add(\"fontFamily\")) { add(\"fontName\", \"fontFamily\"); }\n add(\"fontSize\");\n add(\"format\");\n if (!add(\"textAlign\")) { add(\"hAlign\", \"textAlign\"); }\n if (!add(\"verticalAlign\")) { add(\"vAlign\", \"verticalAlign\"); }\n add(\"wrap\");\n add(\"indent\");\n })(\n function(prop, target) {\n let val = data[prop];\n if (val === undefined) {\n val = defStyle[prop];\n }\n if (val !== undefined) {\n style[target || prop] = val;\n return true;\n }\n }\n );\n\n const columns = this.options.columns || [];\n\n const column = columns[cellIndex];\n let type = typeof value;\n\n if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n let displayValue = value;\n\n // XXX: let's not bring kendo.toString in only for this.\n // better wait until the spreadsheet engine is available as a separate\n // component, then we can use a real Excel-like formatter.\n //\n if (type === \"number\") {\n // kendo.toString will not behave exactly like the Excel format\n // Still, it's the best we have available for estimating the character count.\n displayValue = IntlService.toString(value, data.format);\n }\n\n column.width = Math.max(column.width || 0, String(displayValue).length);\n }\n\n if (type === \"string\") {\n value = stripFunnyChars(value);\n value = this._lookupString(value);\n type = \"s\";\n } else if (type === \"number\") {\n type = \"n\";\n } else if (type === \"boolean\") {\n type = \"b\";\n value = Number(value);\n } else if (value && value.getTime) {\n type = null;\n value = dateToSerial(value);\n if (!style.format) {\n style.format = \"mm-dd-yy\";\n }\n } else {\n type = null;\n value = null;\n }\n\n style = this._lookupStyle(style);\n\n const cellName = ref(rowIndex, cellIndex);\n\n if (data.validation) {\n this._addValidation(data.validation, cellName);\n }\n\n if (data.comment) {\n let anchor = [\n cellIndex + 1, // start column\n 15, // start column offset\n rowIndex, // start row\n 10, // start row offset\n cellIndex + 3, // end column\n 15, // end column offset\n rowIndex + 3, // end row\n 4 // end row offset\n ];\n this._comments.push({\n ref : cellName,\n text : data.comment,\n row : rowIndex,\n col : cellIndex,\n anchor : anchor.join(\", \")\n });\n }\n\n return {\n value: value,\n formula: data.formula,\n type: type,\n style: style,\n ref: cellName\n };\n }\n\n _addValidation(v, ref) {\n const tmp = {\n showErrorMessage : v.type === \"reject\" ? 1 : 0,\n formula1 : v.from,\n formula2 : v.to,\n type : MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n operator : MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n allowBlank : v.allowNulls ? 1 : 0,\n showDropDown : v.showButton ? 0 : 1, // LOL, Excel!\n error : v.messageTemplate,\n errorTitle : v.titleTemplate\n };\n const json = JSON.stringify(tmp);\n if (!this._validations[json]) {\n this._validations[json] = tmp;\n tmp.sqref = [];\n }\n this._validations[json].sqref.push(ref);\n }\n\n _getLastRow() {\n return countData(this.options.rows);\n }\n\n _getLastCol() {\n let last = 0;\n this.options.rows.forEach(function(row) {\n if (row.cells) {\n last = Math.max(last, countData(row.cells));\n }\n });\n return last;\n }\n}\n\nfunction countData(data) {\n let last = data.length;\n data.forEach(function(el) {\n if (el.index && el.index >= last) {\n last = el.index + 1;\n }\n });\n return last;\n}\n\nconst MAP_EXCEL_OPERATOR = {\n // includes only what differs; key is our operator, value is Excel\n // operator.\n greaterThanOrEqualTo : \"greaterThanOrEqual\",\n lessThanOrEqualTo : \"lessThanOrEqual\"\n};\n\nconst MAP_EXCEL_TYPE = {\n number: \"decimal\"\n};\n\nconst defaultFormats = {\n \"General\": 0,\n \"0\": 1,\n \"0.00\": 2,\n \"#,##0\": 3,\n \"#,##0.00\": 4,\n \"0%\": 9,\n \"0.00%\": 10,\n \"0.00E+00\": 11,\n \"# ?/?\": 12,\n \"# ??/??\": 13,\n \"mm-dd-yy\": 14,\n \"d-mmm-yy\": 15,\n \"d-mmm\": 16,\n \"mmm-yy\": 17,\n \"h:mm AM/PM\": 18,\n \"h:mm:ss AM/PM\": 19,\n \"h:mm\": 20,\n \"h:mm:ss\": 21,\n \"m/d/yy h:mm\": 22,\n \"#,##0 ;(#,##0)\": 37,\n \"#,##0 ;[Red](#,##0)\": 38,\n \"#,##0.00;(#,##0.00)\": 39,\n \"#,##0.00;[Red](#,##0.00)\": 40,\n \"mm:ss\": 45,\n \"[h]:mm:ss\": 46,\n \"mmss.0\": 47,\n \"##0.0E+0\": 48,\n \"@\": 49,\n \"[$-404]e/m/d\": 27,\n \"m/d/yy\": 30,\n \"t0\": 59,\n \"t0.00\": 60,\n \"t#,##0\": 61,\n \"t#,##0.00\": 62,\n \"t0%\": 67,\n \"t0.00%\": 68,\n \"t# ?/?\": 69,\n \"t# ??/??\": 70\n};\n\nfunction convertColor(value) {\n let color = value;\n if (color.length < 6) {\n color = color.replace(/(\\w)/g, function($0, $1) {\n return $1 + $1;\n });\n }\n\n color = color.substring(1).toUpperCase();\n\n if (color.length < 8) {\n color = \"FF\" + color;\n }\n\n return color;\n}\n\nclass Workbook {\n\n constructor(options) {\n this.options = options || {};\n this._strings = {\n indexes: {},\n count: 0,\n uniqueCount: 0\n };\n this._styles = [];\n this._borders = [];\n this._images = this.options.images;\n this._imgId = 0;\n\n this._sheets = map(this.options.sheets || [], (options, i) => {\n options.defaults = this.options;\n options.sheetIndex = i + 1;\n return new Worksheet(options, this._strings, this._styles, this._borders);\n });\n }\n\n imageFilename(mimeType) {\n const id = ++this._imgId;\n switch (mimeType) {\n case \"image/jpg\":\n case \"image/jpeg\":\n return `image${id}.jpg`;\n case \"image/png\":\n return `image${id}.png`;\n case \"image/gif\":\n return `image${id}.gif`;\n default:\n return `image${id}.bin`; // XXX: anything better to do here?\n }\n }\n\n toZIP() {\n const zip = createZip();\n\n const docProps = zip.folder(\"docProps\");\n\n docProps.file(\"core.xml\", CORE({\n creator: this.options.creator || \"Kendo UI\",\n lastModifiedBy: this.options.creator || \"Kendo UI\",\n created: this.options.date || new Date().toJSON(),\n modified: this.options.date || new Date().toJSON()\n }));\n\n const sheetCount = this._sheets.length;\n\n docProps.file(\"app.xml\", APP({ sheets: this._sheets }));\n\n const rels = zip.folder(\"_rels\");\n rels.file(\".rels\", RELS);\n\n const xl = zip.folder(\"xl\");\n\n const xlRels = xl.folder(\"_rels\");\n xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({ count: sheetCount }));\n\n if (this._images) {\n const media = xl.folder(\"media\");\n Object.keys(this._images).forEach(id => {\n const img = this._images[id];\n const filename = this.imageFilename(img.type);\n media.file(filename, img.data);\n img.target = `../media/${filename}`;\n });\n }\n\n const sheetIds = {};\n xl.file(\"workbook.xml\", WORKBOOK({\n sheets: this._sheets,\n filterNames: map(this._sheets, function(sheet, index) {\n const options = sheet.options;\n const sheetName = (options.name || options.title || \"Sheet\" + (index + 1));\n sheetIds[sheetName.toLowerCase()] = index;\n const filter = options.filter;\n if (filter) {\n if (filter.ref) {\n // spreadsheet provides `ref`\n let a = filter.ref.split(\":\");\n let from = parseRef(a[0]);\n let to = parseRef(a[1]);\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(from.row, from.col),\n to: $ref(to.row, to.col)\n };\n } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n // grid does this\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(filterRowIndex(options), filter.from),\n to: $ref(filterRowIndex(options), filter.to)\n };\n }\n }\n }),\n userNames: map(this.options.names || [], function(def) {\n return {\n name: def.localName,\n localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n value: def.value,\n hidden: def.hidden\n };\n })\n }));\n\n const worksheets = xl.folder(\"worksheets\");\n const drawings = xl.folder(\"drawings\");\n const drawingsRels = drawings.folder(\"_rels\");\n const sheetRels = worksheets.folder(\"_rels\");\n const commentFiles = [];\n const drawingFiles = [];\n\n for (let idx = 0; idx < sheetCount; idx++) {\n const sheet = this._sheets[idx];\n const sheetName = `sheet${idx + 1}.xml`;\n const sheetXML = sheet.toXML(idx); // must be called before relsToXML\n const relsXML = sheet.relsToXML();\n const commentsXML = sheet.commentsXML();\n const legacyDrawing = sheet.legacyDrawing();\n const drawingsXML = sheet.drawingsXML(this._images);\n\n if (relsXML) {\n sheetRels.file(sheetName + \".rels\", relsXML);\n }\n if (commentsXML) {\n let name = `comments${sheet.options.sheetIndex}.xml`;\n xl.file(name, commentsXML);\n commentFiles.push(name);\n }\n if (legacyDrawing) {\n drawings.file(`vmlDrawing${sheet.options.sheetIndex}.vml`, legacyDrawing);\n }\n if (drawingsXML) {\n let name = `drawing${sheet.options.sheetIndex}.xml`;\n drawings.file(name, drawingsXML.main);\n drawingsRels.file(`${name}.rels`, drawingsXML.rels);\n drawingFiles.push(name);\n }\n\n worksheets.file(sheetName, sheetXML);\n }\n\n const borders = map(this._borders, parseJSON);\n\n const styles = map(this._styles, parseJSON);\n\n const hasFont = function(style) {\n return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n };\n\n const convertFontSize = function(value) {\n let fontInPx = Number(value);\n let fontInPt;\n\n if (fontInPx) {\n fontInPt = fontInPx * 3 / 4;\n }\n\n return fontInPt;\n };\n\n const fonts = map(styles, function(style) {\n if (style.fontSize) {\n style.fontSize = convertFontSize(style.fontSize);\n }\n\n if (style.color) {\n style.color = convertColor(style.color);\n }\n\n if (hasFont(style)) {\n return style;\n }\n });\n\n const formats = map(styles, function(style) {\n if (style.format && defaultFormats[style.format] === undefined) {\n return style;\n }\n });\n\n const fills = map(styles, function(style) {\n if (style.background) {\n style.background = convertColor(style.background);\n return style;\n }\n });\n\n xl.file(\"styles.xml\", STYLES({\n fonts: fonts,\n fills: fills,\n formats: formats,\n borders: borders,\n styles: map(styles, function(style) {\n const result = {};\n\n if (hasFont(style)) {\n result.fontId = indexOf(style, fonts) + 1;\n }\n\n if (style.background) {\n result.fillId = indexOf(style, fills) + 2;\n }\n\n result.textAlign = style.textAlign;\n result.indent = style.indent;\n result.verticalAlign = style.verticalAlign;\n result.wrap = style.wrap;\n result.borderId = style.borderId;\n\n if (style.format) {\n if (defaultFormats[style.format] !== undefined) {\n result.numFmtId = defaultFormats[style.format];\n } else {\n result.numFmtId = 165 + indexOf(style, formats);\n }\n }\n\n return result;\n })\n }));\n\n xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n\n zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n sheetCount: sheetCount,\n commentFiles: commentFiles,\n drawingFiles: drawingFiles\n }));\n\n return zip;\n }\n\n toDataURL() {\n const zip = this.toZIP();\n\n return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n }\n\n toBlob() {\n const zip = this.toZIP();\n if (zip.generateAsync) {\n return zip.generateAsync(BLOB_OPTIONS);\n }\n return new Blob([ zip.generate(ARRAYBUFFER_OPTIONS) ], { type: MIME_TYPE });\n }\n}\n\nfunction borderStyle(width) {\n let alias = \"thin\";\n\n if (width === 2) {\n alias = \"medium\";\n } else if (width === 3) {\n alias = \"thick\";\n }\n\n return alias;\n}\n\nfunction borderSideTemplate(name, style) {\n let result = \"\";\n\n if (style) {\n result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n if (style.color) {\n result += \"\";\n }\n result += \"\";\n }\n\n return result;\n}\n\nfunction borderTemplate(border) {\n return \"\" +\n borderSideTemplate(\"left\", border.left) +\n borderSideTemplate(\"right\", border.right) +\n borderSideTemplate(\"top\", border.top) +\n borderSideTemplate(\"bottom\", border.bottom) +\n \"\";\n}\n\nconst EMPTY_CELL = {};\nfunction inflate(rows, mergedCells) {\n const rowData = [];\n const rowsByIndex = [];\n\n indexRows(rows, function(row, index) {\n const data = {\n _source: row,\n index: index,\n height: row.height,\n level: row.level,\n cells: []\n };\n\n rowData.push(data);\n rowsByIndex[index] = data;\n });\n\n const sorted = sortByIndex(rowData).slice(0);\n const ctx = {\n rowData: rowData,\n rowsByIndex: rowsByIndex,\n mergedCells: mergedCells\n };\n\n for (let i = 0; i < sorted.length; i++) {\n fillCells(sorted[i], ctx);\n delete sorted[i]._source;\n }\n\n return sortByIndex(rowData);\n}\n\nfunction indexRows(rows, callback) {\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) {\n continue;\n }\n\n let index = row.index;\n if (typeof index !== \"number\") {\n index = i;\n }\n\n callback(row, index);\n }\n}\n\nfunction sortByIndex(items) {\n return items.sort(function(a, b) {\n return a.index - b.index;\n });\n}\n\nfunction pushUnique(array, el) {\n if (array.indexOf(el) < 0) {\n array.push(el);\n }\n}\n\nfunction getSpan(mergedCells, ref) {\n for (let i = 0; i < mergedCells.length; ++i) {\n const range = mergedCells[i];\n const a = range.split(\":\");\n let topLeft = a[0];\n if (topLeft === ref) {\n let bottomRight = a[1];\n topLeft = parseRef(topLeft);\n bottomRight = parseRef(bottomRight);\n return {\n rowSpan: bottomRight.row - topLeft.row + 1,\n colSpan: bottomRight.col - topLeft.col + 1\n };\n }\n }\n}\n\nfunction parseRef(ref) {\n function getcol(str) {\n let upperStr = str.toUpperCase();\n let col = 0;\n for (let i = 0; i < upperStr.length; ++i) {\n col = col * 26 + upperStr.charCodeAt(i) - 64;\n }\n return col - 1;\n }\n\n function getrow(str) {\n return parseInt(str, 10) - 1;\n }\n\n const m = /^([a-z]+)(\\d+)$/i.exec(ref);\n return {\n row: getrow(m[2]),\n col: getcol(m[1])\n };\n}\n\nfunction pixelsToExcel(px) {\n return Math.round(px * 9525);\n}\n\nfunction fillCells(data, ctx) {\n const row = data._source;\n const rowIndex = data.index;\n const cells = row.cells;\n const cellData = data.cells;\n\n if (!cells) {\n return;\n }\n\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i] || EMPTY_CELL;\n\n let rowSpan = cell.rowSpan || 1;\n let colSpan = cell.colSpan || 1;\n\n const cellIndex = insertCell(cellData, cell);\n const topLeftRef = ref(rowIndex, cellIndex);\n\n if (rowSpan === 1 && colSpan === 1) {\n // could still be merged: the spreadsheet does not send\n // rowSpan/colSpan, but mergedCells is already populated.\n // https://github.com/telerik/kendo-ui-core/issues/2401\n const tmp = getSpan(ctx.mergedCells, topLeftRef);\n if (tmp) {\n colSpan = tmp.colSpan;\n rowSpan = tmp.rowSpan;\n }\n }\n\n spanCell(cell, cellData, cellIndex, colSpan);\n\n if (rowSpan > 1 || colSpan > 1) {\n pushUnique(ctx.mergedCells,\n topLeftRef + \":\" + ref(rowIndex + rowSpan - 1,\n cellIndex + colSpan - 1));\n }\n\n if (rowSpan > 1) {\n for (let ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n let nextRow = ctx.rowsByIndex[ri];\n if (!nextRow) {\n nextRow = ctx.rowsByIndex[ri] = { index: ri, cells: [] };\n ctx.rowData.push(nextRow);\n }\n\n spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n }\n }\n }\n}\n\nfunction insertCell(data, cell) {\n let index;\n\n if (typeof cell.index === \"number\") {\n index = cell.index;\n insertCellAt(data, cell, cell.index);\n } else {\n index = appendCell(data, cell);\n }\n\n return index;\n}\n\nfunction insertCellAt(data, cell, index) {\n data[index] = cell;\n}\n\nfunction appendCell(data, cell) {\n let index = data.length;\n\n for (let i = 0; i < data.length + 1; i++) {\n if (!data[i]) {\n data[i] = cell;\n index = i;\n break;\n }\n }\n\n return index;\n}\n\nfunction spanCell(cell, row, startIndex, colSpan) {\n for (let i = 1; i < colSpan; i++) {\n const tmp = {\n borderTop : cell.borderTop,\n borderRight : cell.borderRight,\n borderBottom : cell.borderBottom,\n borderLeft : cell.borderLeft\n };\n insertCellAt(row, tmp, startIndex + i);\n }\n}\n\nconst SPREADSHEET_FILTERS = ({ ref, columns, generators }) => `\n\n ${foreach(columns, (col) => `\n \n ${generators[col.filter](col)}\n \n `)}\n`;\n\nconst SPREADSHEET_CUSTOM_FILTER = ({ logic, criteria }) => `\n\n${foreach(criteria, (f) => {\n let op = spreadsheetFilters.customOperator(f);\n let val = spreadsheetFilters.customValue(f);\n return ``;\n})}\n`;\n\nconst SPREADSHEET_DYNAMIC_FILTER = ({ type }) =>\n``;\n\nconst SPREADSHEET_TOP_FILTER = ({ type, value }) =>\n``;\n\nconst SPREADSHEET_VALUE_FILTER = ({ blanks, values }) =>\n `\n ${foreach(values, (value) => `\n `)}\n `;\n\nfunction spreadsheetFilters(filter) {\n return SPREADSHEET_FILTERS({\n ref: filter.ref,\n columns: filter.columns,\n generators: {\n custom : SPREADSHEET_CUSTOM_FILTER,\n dynamic : SPREADSHEET_DYNAMIC_FILTER,\n top : SPREADSHEET_TOP_FILTER,\n value : SPREADSHEET_VALUE_FILTER\n }\n });\n}\n\nspreadsheetFilters.customOperator = function(f) {\n return {\n eq : \"equal\",\n gt : \"greaterThan\",\n gte : \"greaterThanOrEqual\",\n lt : \"lessThan\",\n lte : \"lessThanOrEqual\",\n ne : \"notEqual\",\n\n // These are not in the spec, but seems to be how Excel does\n // it (see customValue below). For the non-negated versions,\n // the operator attribute is missing completely.\n doesnotstartwith: \"notEqual\",\n doesnotendwith: \"notEqual\",\n doesnotcontain: \"notEqual\",\n doesnotmatch: \"notEqual\"\n }[f.operator.toLowerCase()];\n};\n\nfunction quoteSheet(name) {\n if (/^\\'/.test(name)) { // assume already quoted, the Spreadsheet does it.\n return name;\n }\n if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n return name; // no need to quote it\n }\n return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\n\nspreadsheetFilters.customValue = function(f) {\n function esc(str) {\n return str.replace(/([*?])/g, \"~$1\");\n }\n\n switch (f.operator.toLowerCase()) {\n case \"startswith\":\n case \"doesnotstartwith\":\n return esc(f.value) + \"*\";\n\n case \"endswith\":\n case \"doesnotendwith\":\n return \"*\" + esc(f.value);\n\n case \"contains\":\n case \"doesnotcontain\":\n return \"*\" + esc(f.value) + \"*\";\n\n default:\n return f.value;\n }\n};\n\nspreadsheetFilters.dynamicFilterType = function(type) {\n return {\n quarter1 : \"Q1\",\n quarter2 : \"Q2\",\n quarter3 : \"Q3\",\n quarter4 : \"Q4\",\n january : \"M1\",\n february : \"M2\",\n march : \"M3\",\n april : \"M4\",\n may : \"M5\",\n june : \"M6\",\n july : \"M7\",\n august : \"M8\",\n september : \"M9\",\n october : \"M10\",\n november : \"M11\",\n december : \"M12\"\n }[type.toLowerCase()] || type;\n};\n\nexport {\n Workbook,\n Worksheet\n};\n","export { default as IntlService } from './services/intl-service';\nexport { default as TemplateService } from './services/template-service';\n","let current = {\n toString: (value) => value\n};\n\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static toString(value, format) {\n return current.toString(value, format);\n }\n}\n\nexport default IntlService;","let current = {\n compile: function(template) {\n return template;\n }\n};\n\nclass TemplateService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static compile(template) {\n return current.compile(template);\n }\n}\n\nexport default TemplateService;","import JSZip from '@progress/jszip-esm';\n\nexport default function createZip() {\n return new JSZip();\n}\n","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\nconst UNDEFINED = 'undefined';\n\ngetterCache[UNDEFINED] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n const fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(typeof index !== UNDEFINED ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function map(array, func) {\n return array.reduce((result, el, i) => {\n const val = func(el, i);\n if (val != null) {\n result.push(val);\n }\n return result;\n }, []);\n}","// date packing utilities from Kendo Spreadsheet\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\nfunction dateToJulianDays(y, m, d) {\n return ((1461 * (y + 4800 + ((m - 13) / 12 | 0))) / 4 | 0) +\n ((367 * (m - 1 - 12 * ((m - 13) / 12 | 0))) / 12 | 0) -\n ((3 * (((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n d - 32075;\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nconst BASE_DATE = dateToJulianDays(1900, 0, -1);\n\nfunction packDate(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n}\n\nfunction packTime(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\n\nexport default function dateToSerial(date) {\n const time = packTime(date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds());\n const serial = packDate(date.getFullYear(),\n date.getMonth(),\n date.getDate());\n return serial < 0 ? serial - 1 + time : serial + time;\n}\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","/* eslint-disable arrow-body-style */\n\nimport utils from './utils';\nimport domUtils from \"./dom-utils\";\n\nconst absoluteRect = (anchor, element, offset, scale) => {\n const scrollPos = elementScrollPosition(anchor, element);\n const rect = utils.eitherRect(domUtils.offset(anchor), offset);\n const stackScale = 2 * scale;\n\n const stackScroll = domUtils.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n\n const stackOffset = domUtils.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n\n return domUtils.removeScroll(\n domUtils.addScroll(\n utils.removeStackingOffset(\n utils.scaleRect(rect, scale),\n stackOffset\n ),\n stackScroll\n ),\n scrollPos\n );\n};\n\nconst relativeRect = (anchor, element, offset, scale) => {\n const rect = utils.eitherRect(domUtils.position(anchor, element, scale), offset);\n return utils.scaleRect(rect, scale);\n};\n\nconst elementScrollPosition = (anchor, element) => {\n return anchor ? { x: 0, y: 0 } : domUtils.scrollPosition(element);\n};\n\nconst alignElement = (settings) => {\n const { anchor, element, anchorAlign, elementAlign, margin, offset, positionMode, scale } = settings;\n\n const currentScale = scale || 1;\n const fixedMode = positionMode === 'fixed' || !domUtils.hasOffsetParent(element);\n const anchorRect = fixedMode ? absoluteRect(anchor, element, offset, currentScale) : relativeRect(anchor, element, offset, currentScale);\n const elementRect = utils.scaleRect(domUtils.offset(element), currentScale);\n\n const result = domUtils.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin\n });\n\n return result;\n};\n\nexport default alignElement;\n","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","import point from './align-point';\n\nconst align = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, margin = {} } = options;\n const anchorHorizontal = anchorAlign.horizontal;\n const anchorVertical = anchorAlign.vertical;\n const elementHorizontal = elementAlign.horizontal;\n const elementVertical = elementAlign.vertical;\n\n let horizontalMargin = margin.horizontal || 0;\n let verticalMargin = margin.vertical || 0;\n\n let top = anchorRect.top;\n let left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","export default function applyLocationOffset(rect, location, isOffsetBody) {\n let { top, left } = rect;\n\n if (isOffsetBody) {\n left = 0;\n top = 0;\n }\n\n return {\n top: top + location.top,\n left: left + location.left,\n height: rect.height,\n width: rect.width\n };\n}\n","import windowViewport from './window-viewport';\n\nconst boundingOffset = (element) => {\n if (!element.getBoundingClientRect) {\n const viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n const { bottom, left, right, top } = element.getBoundingClientRect();\n\n return {\n bottom,\n left,\n right,\n top\n };\n};\n\nexport default boundingOffset;\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\",\n \"none\": \"none\"\n};\n","import ownerDocument from './owner-document';\n\nconst getDocument = (element) => ownerDocument(element).documentElement;\n\nexport default getDocument;\n","/* eslint-disable arrow-body-style */\nimport addScroll from \"./add-scroll\";\nimport align from './align';\nimport boundingOffset from './bounding-offset';\nimport utils from './utils';\nimport removeScroll from './remove-scroll';\nimport restrictToView from './restrict-to-view';\nimport scrollPosition from './scroll-position';\nimport offsetBase from './offset';\nimport positionWithScroll from './position-with-scroll';\nimport windowViewPort from './window-viewport';\nimport siblingContainer from './sibling-container';\nimport parents from './parents';\n\nconst STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n\nconst addOffset = (current, addition) => {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n};\n\nconst getWindow = () => {\n return utils.canUseDOM() ? window : null;\n};\n\nconst getFontStyles = (el) => {\n const window = getWindow();\n\n if (!window || !el) { return []; }\n\n const computedStyles = window.getComputedStyle(el);\n\n return STYLES.map(font => ({ key: font, value: computedStyles[font] }));\n};\n\nconst hasOffsetParent = (el) => {\n if (!el) { return false; }\n\n return Boolean(el.offsetParent);\n};\n\nconst offset = (el) => {\n if (!el) { return null; }\n\n return offsetBase(el);\n};\n\nconst offsetAtPoint = (element, currentLocation) => {\n if (!element) { return null; }\n\n const { left, top, transition } = element.style;\n\n element.style.transition = 'none';\n element.style.left = `${currentLocation.left}px`;\n element.style.top = `${currentLocation.top}px`;\n\n const currentOffset = offsetBase(element);\n\n element.style.left = left;\n element.style.top = top;\n\n // prevents elements with transition to be animated because of the change\n // tslint:disable-next-line:no-unused-expression\n element.offsetHeight;\n\n element.style.transition = transition;\n\n return currentOffset;\n};\n\nconst position = (element, popupElement, scale) => {\n if (!element || !popupElement) { return null; }\n\n const currentScale = scale || 1;\n\n return positionWithScroll(element, popupElement, currentScale);\n};\n\nconst OVERFLOW_REGEXP = /auto|scroll/;\n\nconst overflowElementStyle = (element) => {\n return `${element.style.overflow}${element.style.overflowX}${element.style.overflowY}`;\n};\n\nconst overflowComputedStyle = (element) => {\n const styles = window.getComputedStyle(element);\n return `${styles.overflow}${styles.overflowX}${styles.overflowY}`;\n};\n\nconst overflowStyle = (element) => {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n\nconst scrollableParents = (element) => {\n const parentElements = [];\n\n if (!utils.canUseDOM()) { return parentElements; }\n\n let parent = element.parentElement;\n\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n\n parent = parent.parentElement;\n }\n\n parentElements.push(window);\n\n return parentElements;\n};\n\nconst getRelativeContextElement = (el) => {\n if (!el || !utils.hasRelativeStackingContext()) { return null; }\n\n let parent = el.parentElement;\n\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nconst stackingElementOffset = (el) => {\n const relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return offsetBase(relativeContextElement);\n};\n\nconst stackingElementScroll = (el) => {\n const relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return { x: 0, y: 0 }; }\n\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n};\n\nconst stackingElementViewPort = (el) => {\n const relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return {\n height: relativeContextElement.scrollHeight,\n width: relativeContextElement.scrollWidth\n };\n};\n\nconst useRelativePosition = (el) => {\n return Boolean(getRelativeContextElement(el));\n};\n\nconst zoomLevel = () => {\n if (!utils.canUseDOM()) { return 1; }\n\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n};\n\nconst isZoomed = () => {\n return zoomLevel() > 1;\n};\n\nconst zIndex = (anchor, container) => {\n if (!anchor || !utils.canUseDOM()) { return null; }\n\n const sibling = siblingContainer(anchor, container);\n\n if (!sibling) { return null; }\n\n const result = [ anchor ].concat(parents(anchor, sibling)).reduce(\n (index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n },\n 0\n );\n\n return result ? (result + 1) : null;\n};\n\nconst domUtils = {\n addOffset,\n addScroll,\n align,\n boundingOffset,\n getFontStyles,\n getWindow,\n hasOffsetParent,\n offset,\n offsetAtPoint,\n position,\n removeScroll,\n restrictToView,\n scrollPosition,\n scrollableParents,\n getRelativeContextElement,\n stackingElementOffset,\n stackingElementScroll,\n stackingElementViewPort,\n useRelativePosition,\n windowViewPort,\n zoomLevel,\n isZoomed,\n zIndex\n};\n\nexport default domUtils;\n","import scrollPosition from './scroll-position';\n\nexport default (element) => {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import offsetParent from './offset-parent';\n\nconst isBodyOffset = (element) => (offsetParent(element) === element.ownerDocument.body);\n\nexport default isBodyOffset;\n","export { default as align } from './align';\nexport { default as addScroll } from './add-scroll';\nexport { default as applyLocationOffset } from './apply-location-offset';\nexport { default as boundingOffset } from './bounding-offset';\nexport { default as isBodyOffset } from './is-body-offset';\nexport { default as offsetParent } from './offset-parent';\nexport { default as offset } from './offset';\nexport { default as parents } from './parents';\nexport { default as parentScrollPosition } from './parent-scroll-position';\nexport { default as position } from './position';\nexport { default as positionWithScroll } from './position-with-scroll';\nexport { default as removeScroll } from './remove-scroll';\nexport { default as restrictToView } from './restrict-to-view';\nexport { default as scrollPosition } from './scroll-position';\nexport { default as siblingContainer } from './sibling-container';\nexport { default as siblings } from './siblings';\nexport { default as zIndex } from './z-index';\n\nexport { default as alignElement } from './align-element';\nexport { default as domUtils } from './dom-utils';\nexport { default as utils } from './utils';\nexport { default as positionElement } from './position-element';\n\nexport { default as getDocumentElement } from './document';\nexport { default as getWindow } from './window';\nexport { default as getWindowViewPort } from './window-viewport';\n\nexport { default as AlignPoint } from './align-point';\nexport { default as Collision } from './collision';\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default (offsetParentElement, element) => ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n);\n","import documentElement from './document';\n\nconst offsetParent = (element) => {\n let offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","const rectOfHiddenElement = (element) => {\n const { display, left, position } = element.style;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n const rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nconst offset = (element) => {\n let rect = element.getBoundingClientRect();\n let { left, top } = rect;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n const parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","export default (element, until) => {\n const result = [];\n let next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","import utils from \"./utils\";\nimport domUtils from \"./dom-utils\";\n\nconst positionElement = (settings) => {\n const {\n anchor,\n currentLocation,\n element,\n anchorAlign,\n elementAlign,\n collisions,\n margin,\n scale\n } = settings;\n\n const currentScale = scale || 1;\n const elementOffset = domUtils.offsetAtPoint(element, currentLocation);\n const elementRect = utils.scaleRect(elementOffset, currentScale);\n const anchorOffset = utils.scaleRect(domUtils.offset(anchor), currentScale);\n const anchorRect = utils.eitherRect(anchorOffset, currentLocation);\n\n const viewPort = settings.viewPort || domUtils.windowViewPort(element);\n viewPort.width = viewPort.width / currentScale;\n viewPort.height = viewPort.height / currentScale;\n\n const result = domUtils.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n\n const offset = domUtils.addOffset(currentLocation, result.offset);\n\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n};\n\nexport default positionElement;","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default (element, parent, scale = 1) => {\n const offsetParentElement = parent ? offsetParent(parent) : null;\n const { top, left, height, width } = position(element, offsetParentElement);\n const { x, y } = offsetParentScrollPosition(offsetParentElement, element);\n const ownerDocument = element.ownerDocument;\n const positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nconst position = (element, parent) => {\n const win = wnd(element);\n const elementStyles = win.getComputedStyle(element);\n const offset = offsetRect(element);\n const parentElement = parent || offsetParent(element);\n\n const ownerDocument = element.ownerDocument;\n const useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n let parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n const parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nconst fit = function(position, size, viewPortSize) {\n let output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nconst flip = function({ offset, size, anchorSize, viewPortSize, anchorAlignPoint, elementAlignPoint, margin }) {\n let output = 0;\n\n const isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n const isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n const marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n const isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nconst restrictToView = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, collisions, viewPort, margin = {} } = options;\n const { top: elementTop, left: elementLeft, height: elementHeight, width: elementWidth } = elementRect;\n const { height: viewPortHeight, width: viewPortWidth } = viewPort;\n const horizontalMargin = margin.horizontal || 0;\n const verticalMargin = margin.vertical || 0;\n\n let left = 0;\n let top = 0;\n\n const isVerticalFit = collisions.vertical === collision.fit;\n const isHorizontalFit = collisions.horizontal === collision.fit;\n const isVerticalFlip = collisions.vertical === collision.flip;\n const isHorizontalFlip = collisions.horizontal === collision.flip;\n\n if (isVerticalFit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (isHorizontalFit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n\n const flippedVertical = isVerticalFlip && top !== 0;\n const flippedHorizontal = isHorizontalFlip && left !== 0;\n const fittedVertical = isVerticalFit && top !== 0;\n const fittedHorizontal = isHorizontalFit && left !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n fitted: fittedVertical || fittedHorizontal,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n fit: {\n horizontal: fittedHorizontal,\n vertical: fittedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n const documentElement = docElement(element);\n const win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","let cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n const div = document.createElement(\"div\");\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default (anchor, container) => {\n const parentElements = parents(anchor);\n let containerElement = container;\n let siblingElements;\n let result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n (list, p) => list.concat(siblingElements.filter(s => s === p)),\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","export default (element) => {\n const result = [];\n\n let sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n\n return rect;\n};\n\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) { return rect; }\n\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n\n return result;\n};\n\nfunction memoize(fun) {\n let result;\n let called = false;\n\n return (...args) => {\n if (called) {\n return result;\n }\n\n result = fun(...args);\n called = true;\n return result;\n };\n}\n\nconst hasRelativeStackingContext = memoize((elementSource) => {\n if (!canUseDOM()) { return false; }\n\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n const currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n if (!currentDocument || !currentDocument.body) { return false; }\n\n const top = 10;\n const parent = currentDocument.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n\n currentDocument.body.appendChild(parent);\n\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n currentDocument.body.removeChild(parent);\n\n return isDifferent;\n});\n\nconst canUseDOM = () => Boolean(\n // from fbjs\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nconst utils = {\n eitherRect,\n scaleRect,\n removeStackingOffset,\n hasRelativeStackingContext,\n canUseDOM\n};\n\nexport default utils;","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n const win = wnd(element);\n const document = getDocument(element);\n const result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import ownerDocument from './owner-document';\n\nconst getWindow = (element) => ownerDocument(element).defaultView;\n\nexport default getWindow;\n","import parents from './parents';\nimport siblingContainer from './sibling-container';\n\nexport default function zIndex(anchor, container) {\n if (!anchor || !container) { return null; }\n\n const sibling = siblingContainer(anchor, container);\n\n if (!sibling) { return null; }\n\n const result = [ anchor ].concat(parents(anchor, sibling)).reduce(\n (index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n },\n 0\n );\n\n return result ? (result + 1) : null;\n}","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\nvar Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\nvar Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//export var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//export var Z_VERSION_ERROR = -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION = 0;\nvar Z_BEST_SPEED = 1;\nvar Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//export var Z_ASCII = 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n//export var Z_NULL = null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n}\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n },\n Buf8: function(size) {\n return new Uint8Array(size);\n },\n Buf16: function(size) {\n return new Uint16Array(size);\n },\n Buf32: function(size) {\n return new Int32Array(size);\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n },\n Buf8: function(size) {\n return new Array(size);\n },\n Buf16: function(size) {\n return new Array(size);\n },\n Buf32: function(size) {\n return new Array(size);\n }\n};\n\nlet typedOK = () => {\n const supported =\n (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n typedOK = () => supported;\n return supported;\n};\n\nlet arraySet = (dest, src, src_offs, len, dest_offs) => {\n arraySet = typedOK() ?\n fnTyped.arraySet : fnUntyped.arraySet;\n\n return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nlet flattenChunks = (chunks) => {\n flattenChunks = typedOK() ?\n fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n return flattenChunks(chunks);\n};\n\nlet Buf8 = (size) => {\n Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n return Buf8(size);\n};\n\nlet Buf16 = (size) => {\n Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n return Buf16(size);\n};\n\nlet Buf32 = (size) => {\n Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nlet strApplyOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, [ 0 ]);\n } catch (_) {\n result = false;\n }\n\n strApplyOK = () => result;\n return result;\n};\n\nlet strApplyUintOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (_) {\n result = false;\n }\n\n strApplyUintOK = () => result;\n return result;\n};\n\nlet utf8len = function(c) {\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n var table = Buf8(256);\n for (var q = 0; q < 256; q++) {\n table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n table[254] = table[254] = 1; // Invalid sequence start\n\n utf8len = arg => table[arg];\n return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n var buf = new Uint8Array(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nfunction utf8border(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\nlet crcTable = function() {\n const table = makeTable();\n crcTable = () => table;\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable(),\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nfunction inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\nvar Z_TREES$1 = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\nvar Z_NEED_DICT$1 = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = Buf16(320); /* temporary storage for code lengths */\n this.work = Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = Buf32(512);\n distfix = Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES$1) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nclass Inflate {\n constructor(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n }\n\n /**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate(strm, Z_NO_FLUSH); /* no bad return value */\n\n if (status === Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === Z_BUF_ERROR && allowBufError === true) {\n status = Z_OK;\n allowBufError = false;\n }\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n if (status === Z_STREAM_END) {\n _mode = Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block, or NULL if too old */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1 = 30;\n/* number of distance codes */\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH$1;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nlet configurationTable = function() {\n const table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n \n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n configurationTable = () => table;\n return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n const table = configurationTable();\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = table[s.level].max_lazy;\n s.good_match = table[s.level].good_length;\n s.nice_match = table[s.level].nice_length;\n s.max_chain_length = table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = Buf16(HEAP_SIZE$1 * 2);\n this.dyn_dtree = Buf16((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = Buf16((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = Buf16(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = Buf16(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = Buf8(s.w_size * 2);\n s.head = Buf16(s.hash_size);\n s.prev = Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configurationTable()[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = Buf8(s.w_size);\n arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nclass Deflate {\n constructor(options) {\n this.options = assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n }\n\n /**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","const proxy = (a, b) => (e) => b(a(e));\n\nconst bind = (el, event, callback) =>\n el.addEventListener && el.addEventListener(event, callback);\n\nconst unbind = (el, event, callback) =>\n el && el.removeEventListener && el.removeEventListener(event, callback);\n\nconst noop = () => { /* empty */ };\n\nconst preventDefault = e => e.preventDefault();\n\nconst touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nconst IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport class Draggable {\n static supportPointerEvent() {\n return (typeof window !== 'undefined') && window.PointerEvent;\n }\n\n get document() {\n return this._element\n ? this._element.ownerDocument\n : document;\n }\n\n constructor({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = (e) => {\n if (e.touches.length === 1) {\n this._pressHandler(e);\n }\n };\n\n this._touchmove = (e) => {\n if (e.touches.length === 1) {\n this._dragHandler(e);\n }\n };\n\n this._touchend = (e) => {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this._releaseHandler(e);\n this._ignoreMouse = true;\n setTimeout(this._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = () => {\n this._ignoreMouse = false;\n };\n\n this._mousedown = (e) => {\n const { which } = e;\n\n if ((which && which > 1) || this._ignoreMouse) {\n return;\n }\n\n bind(this.document, \"mousemove\", this._mousemove);\n bind(this.document, \"mouseup\", this._mouseup);\n this._pressHandler(e);\n };\n\n this._mousemove = (e) => {\n this._dragHandler(e);\n };\n\n this._mouseup = (e) => {\n unbind(this.document, \"mousemove\", this._mousemove);\n unbind(this.document, \"mouseup\", this._mouseup);\n this._releaseHandler(e);\n };\n\n this._pointerdown = (e) => {\n if (e.isPrimary && e.button === 0) {\n bind(this.document, \"pointermove\", this._pointermove);\n bind(this.document, \"pointerup\", this._pointerup);\n bind(this.document, \"pointercancel\", this._pointerup);\n bind(this.document, \"contextmenu\", preventDefault);\n\n this._pressHandler(e);\n }\n };\n\n this._pointermove = (e) => {\n if (e.isPrimary) {\n this._dragHandler(e);\n }\n };\n\n this._pointerup = (e) => {\n if (e.isPrimary) {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n\n this._releaseHandler(e);\n }\n };\n }\n\n bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n }\n\n _bindToCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n }\n\n _unbindFromCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n }\n\n _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n }\n\n update({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n }\n\n destroy() {\n this._unbindFromCurrent();\n this._element = null;\n }\n}\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","export { default as load } from './cldr/load';\nexport { default as setData } from './cldr/set-data';\nexport { default as dateFieldName } from './cldr/date-field-name';\nexport { default as dateFormatNames } from './cldr/date-format-names';\nexport { cldr, localeInfo } from './cldr/info';\nexport { currencyDisplays, currencyDisplay, currencyFractionOptions, territoryCurrencyCode, localeCurrency } from './cldr/currency';\nexport { default as firstDay } from './cldr/first-day';\nexport { default as weekendRange } from './cldr/weekend-range';\nexport { default as numberSymbols } from './cldr/number-symbols';\n\n","\nexport const DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport const DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nconst {\n NoCurrency,\n NoCurrencyDisplay,\n NoSupplementalCurrency,\n NoCurrencyRegion,\n NoValidCurrency\n} = errors;\n\nconst DEFAULT_CURRENCY_FRACTIONS = 2;\nconst SYMBOL = \"symbol\";\nconst INVALID_CURRENCY_CODE = 'XXX';\n\nconst GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n const currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n let latestValidUntil, latestValidUntilRange;\n let latestStillValid, latestStillValidDate;\n\n for (let idx = 0; idx < regionCurrencies.length; idx++) {\n const currency = regionCurrencies[idx];\n const code = Object.keys(currency)[0];\n const info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n const stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n const validFrom = parseRangeDate(info._from);\n const validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid = true) {\n const currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n const displays = [ currency ];\n for (let field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n const { value, currency, currencyDisplay = SYMBOL } = options;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n const currencyInfo = getCurrencyInfo(locale, currency, true);\n let result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === undefined || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n let minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n let maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n const fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid = true) {\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n const currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n const regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n const currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n const currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n const fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n const result = [];\n for (let idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n const result = {};\n for (let field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n let result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n const { type, nameType, standAlone, lower } = options;\n const info = getLocaleInfo(locale);\n const formatType = standAlone ? \"stand-alone\" : \"format\";\n const lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n const formatNames = info.calendar[type][formatType];\n let result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","const defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _number: \"$Revision: 12418 $\",\n _cldrVersion: \"29\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n weekday: {\n wide: \"day of the week\"\n },\n dayperiod: {\n wide: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n millisecond: {\n wide: \"millisecond\",\n short: \"ms\",\n narrow: \"ms\"\n },\n zone: {\n wide: \"time zone\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData, NoFirstDay } = errors;\n\nexport default function firstDay(locale) {\n const info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n const parts = fullName.split(\"-\");\n const language = parts[0];\n const script = parts[1];\n const territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n\n for (let idx = 0; idx < suffixes.length; idx++) {\n let name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport const cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n let info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n const likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n const parts = locale.split(\"-\");\n const language = parts[0];\n const suffixes = parts.slice(1);\n const fullName = localeFullName(language, suffixes);\n const info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","import { cldr } from './info';\n\nconst predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\n\nconst YEAR_REGEX = /y+/g;\nconst SHORT_DATE = [ [ \"dateFormats\", \"short\" ] ];\n\nconst datePatterns = {\n D: [ [ \"dateFormats\", \"full\" ] ],\n m: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMd\" ] ],\n M: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMMd\" ] ],\n y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMM\" ] ],\n Y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMMM\" ] ],\n F: [ [ \"dateFormats\", \"full\" ], [ \"timeFormats\", \"medium\" ] ],\n g: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"short\" ] ],\n G: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"medium\" ] ],\n t: [ [ \"timeFormats\", \"short\" ] ],\n T: [ [ \"timeFormats\", \"medium\" ] ]\n};\n\nfunction toArray(obj) {\n let result = [];\n let names = Object.getOwnPropertyNames(obj);\n for (let idx = 0; idx < names.length; idx++) {\n let value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\n\nfunction getCalendarNames(info, isObj) {\n const result = {};\n for (let formatType in info) {\n let names = result[formatType] = {};\n for (let format in info[formatType]) {\n let formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\n\nfunction getEraNames(eras) {\n const result = {};\n const format = result.format = {};\n const eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n\n for (let eraFormatName in eras) {\n let formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n\n return result;\n}\n\nfunction loadCalendarNames(locale, calendar) {\n const localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n\n localeCalendar.eras = getEraNames(calendar.eras);\n}\n\nfunction loadCalendarDateFields(locale, fields) {\n const localeCalendar = cldr[locale].calendar;\n const dateFields = {};\n\n for (let field in fields) {\n const [ fieldName, formatType = 'wide' ] = field.split('-');\n const fieldInfo = dateFields[fieldName] || {};\n const displayName = fields[field].displayName;\n\n if (!displayName) { continue; }\n\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n\n localeCalendar.dateFields = dateFields;\n}\n\nfunction getPredefinedFormat(paths, calendar) {\n const result = [];\n\n for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n let fields = paths[ pathIdx ];\n let pattern = calendar;\n for (let idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n\n return result.join(\" \");\n}\n\nfunction loadCalendarPatterns(locale, calendar) {\n const cldrCalendar = cldr[locale].calendar;\n const patterns = cldrCalendar.patterns = {};\n\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n\n for (let pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n\n for (let pattern in predefinedDatePatterns) {\n patterns[pattern] = predefinedDatePatterns[pattern];\n }\n\n const dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\n\n\nexport default function loadCalendarInfo(locale, info) {\n const calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (let field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}\n","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\n\nconst LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nconst LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\n\nconst patternRegExp = /([#,0.]+)/g;\nconst cldrCurrencyRegExp = /¤/g;\n\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\n\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n\n const numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n const integer = numberPatterns[0];\n\n const groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function(group) {\n return group.length;\n }).reverse();\n\n return groupSize;\n}\n\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (let field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\n\nexport default function loadNumbersInfo(locale, info) {\n const localeInfo = cldr[locale];\n const numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (let field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n const style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n const pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\n\nfunction loadLocale(locale, info) {\n for (let field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\n\nexport default function load() {\n const length = arguments.length;\n for (let idx = 0; idx < length; idx++) {\n let entry = arguments[idx];\n if (entry.main) {\n let locale = Object.keys(entry.main)[0];\n let info = entry.main[locale];\n let localeInfo = cldr[locale] = cldr[locale] || {};\n\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n const currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n const info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","export default function parseRangeDate(value) {\n const parts = value.split('-');\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr } from './info';\n\nexport default function setData(data) {\n const locale = data.name;\n const info = cldr[locale] = cldr[locale] || {};\n const supplemental = cldr.supplemental = cldr.supplemental || {};\n\n if (data.likelySubtags) {\n supplemental.likelySubtags = Object.assign(supplemental.likelySubtags || {}, data.likelySubtags);\n }\n\n if (data.currencyData) {\n supplemental.currencyData = supplemental.currencyData || {};\n supplemental.currencyData.fractions = Object.assign(supplemental.currencyData.fractions || {}, data.currencyData);\n }\n\n const numbers = info.numbers;\n\n Object.assign(info, data);\n\n if (numbers && data.numbers) {\n info.numbers = Object.assign({}, numbers, data.numbers);\n }\n}","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n let parts = name.split(\"-\");\n if (likelySubtags) {\n const likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (let idx = parts.length - 1; idx >= 1; idx--) {\n const part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n const length = parts.length;\n\n if (length > 1) {\n const territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n const name = info.name;\n const identity = info.identity;\n let territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData } = errors;\n\nexport default function weekendRange(locale) {\n const info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const territory = localeTerritory(info);\n const start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n const end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","export const DECIMAL = \"decimal\";\nexport const CURRENCY = \"currency\";\nexport const ACCOUNTING = \"accounting\";\nexport const PERCENT = \"percent\";\nexport const SCIENTIFIC = \"scientific\";\n\nexport const CURRENCY_PLACEHOLDER = \"$\";\nexport const PERCENT_PLACEHOLDER = \"%\";\nexport const NUMBER_PLACEHOLDER = \"n\";\n\nexport const LIST_SEPARATOR = \";\";\nexport const GROUP_SEPARATOR = \",\";\n\nexport const POINT = \".\";\nexport const EMPTY = \"\";\n\nexport const DEFAULT_LOCALE = \"en\";\n\n","const formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n const values = arguments;\n\n return format.replace(formatRegExp, (match, index) => {\n const value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","export default function isString(value) {\n return typeof value === \"string\";\n}","export default function pad(number, digits = 2, right = false) {\n const count = digits - String(number).length;\n let result = number;\n\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","const MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n let result = value;\n let decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","export { default as formatDate } from './dates/format-date';\nexport { default as parseDate } from './dates/parse-date';\nexport { default as splitDateFormat } from './dates/split-date-format';\n","const MONTH = 'month';\nconst HOUR = 'hour';\nconst ZONE = 'zone';\nconst WEEKDAY = 'weekday';\nconst QUARTER = 'quarter';\n\nconst DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nconst dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","export default function dateNameType(formatLength) {\n let nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nconst REMOVAL_PENALTY = 120;\nconst ADDITION_PENALTY = 20;\nconst LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nconst LONG_LESS_PENALTY_DELTA = -2;\nconst SHORT_LESS_PENALTY_DELTA = -1;\nconst SHORT_MORE_PENALTY_DELTA = 1;\nconst LONG_MORE_PENALTY_DELTA = 2;\n\nconst PENALTIES = {\n [LONG_LESS_PENALTY_DELTA.toString()]: 8,\n [SHORT_LESS_PENALTY_DELTA.toString()]: 6,\n [LONG_MORE_PENALTY_DELTA.toString()]: 6,\n [SHORT_MORE_PENALTY_DELTA.toString()]: 3\n};\n\nconst VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nconst TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nconst DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nconst STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nconst specifiersRegex = {};\nconst resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n const result = [];\n let current = skeleton.charAt(0);\n let specifier = current;\n for (let idx = 1; idx < skeleton.length; idx++) {\n let character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n const specifiersLength = specifiers.length;\n let maxScore = -Number.MAX_VALUE;\n let bestMatches, result;\n for (let format in availableFormats) {\n const matches = [];\n let currentFormat = format.replace(\"v\", \"z\");\n let score = 0;\n for (let idx = 0; idx < specifiersLength; idx++) {\n const specifier = specifiers[idx];\n let specifierRegex = getSpecifierRegex(specifier[0]);\n let match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n let delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (let idx = 0; idx < specifiersLength; idx++) {\n const bestMatch = bestMatches[idx];\n if (bestMatch && bestMatch !== specifiers[idx]) {\n const matchSpecifier = bestMatches[idx][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n const availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n const timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n let result;\n if (timeStartIndex > 0) {\n const dateSkeleton = skeleton.substr(0, timeStartIndex);\n const timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n let result = [];\n for (let idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n let option = DATE_OPTIONS_MAP[idx];\n let field = option.key;\n let value = options[field];\n if (value) {\n let spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n const calendar = info.calendar;\n let result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n let skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n const firstDayIndex = firstDay(localeInfo);\n let dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n const quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n const { shortHours, optionalMinutes, separator, localizedName, zZeroOffset } = options;\n const offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n const sign = offset <= 0 ? \"+\" : \"-\";\n const hoursMinutes = Math.abs(offset).toString().split(\".\");\n const minutes = hoursMinutes[1] || 0;\n let result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n const localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n let result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nconst formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n let year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n const hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n const milliseconds = date.getMilliseconds();\n let result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n let era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale = DEFAULT_LOCALE) {\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n let formatLength = match.length;\n let result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nconst timeZoneOffsetRegExp = /([+|\\-]\\d{1,2})(:?)(\\d{2})?/;\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst offsetRegExp = /[+-]\\d*/;\nconst numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nconst numberRegex = /\\d+/;\nconst PLACEHOLDER = \"{0}\";\n\nconst leadingSpacesRegex = /^ */;\nconst trailingSpacesRegex = / *$/;\n\nconst standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nconst FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nconst TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n let { format, idx } = state;\n let i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n let regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n let i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n let result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n const { gmtFormat, gmtZeroFormat } = calendar;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n const { shortHours, noSeparator, optionalMinutes, localizedName, zLiteral } = options;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n const matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n const hoursMatch = matches[1];\n const minutesMatch = matches[3];\n const hoursOffset = parseInt(hoursMatch, 10);\n const separator = matches[2];\n let minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n const month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"days\", count, ch === \"c\", true);\n let dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nconst parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n const day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n const count = lookAhead(\"E\", state);\n //validate if it matches the day?\n let dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n const count = lookAhead(\"y\", state);\n let year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n const currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n let hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n const count = lookAhead(\"a\", state);\n let periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n const pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n const hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n const minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n const seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n const count = lookAhead(\"S\", state);\n const match = state.value.substr(state.valueIdx, count);\n let milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n const count = lookAhead(\"z\", state);\n\n const shortFormat = count < 4;\n\n const invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n const count = lookAhead(\"Z\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n const count = lookAhead(\"x\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n const count = lookAhead(\"X\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n const count = lookAhead(\"G\", state);\n const eras = formatNames(info, \"eras\", count, false, true);\n const era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n let { year, month, day, hours, minutes, seconds, milliseconds, pmHour, UTC, hoursOffset, minutesOffset } = state;\n const hasTime = hours !== null || minutes !== null || seconds || null;\n const date = new Date();\n let result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n const leadingSpaces = leadingSpacesRegex.exec(format)[0];\n const trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return `${ leadingSpaces }${ value }${ trailingSpaces }`;\n}\n\nfunction parseExact(value, format, info) {\n let pattern = datePattern(format, info).split(EMPTY);\n\n const state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n const length = pattern.length;\n let literal = false;\n\n for (; state.idx < length; state.idx++) {\n let ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n let invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n const sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n let result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n let date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n let tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n const formats = [];\n const patterns = calendar.patterns;\n const length = FORMATS_SEQUENCE.length;\n\n for (let idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale = DEFAULT_LOCALE) {\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n let parseValue = String(value).trim();\n let date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n const info = localeInfo(locale);\n let parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n const length = parseFormats.length;\n\n for (let idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nconst NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nconst LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n const lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n const parts = [];\n let lastIndex = dateFormatRegExp.lastIndex = 0;\n let match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n let value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n const specifier = value[0];\n const type = DATE_FIELD_MAP[specifier];\n const part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n const names = NAME_TYPES[type];\n\n if (names) {\n const minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n const patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n const fromLocalOffset = date.getTimezoneOffset();\n\n const offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n const toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import errorDetails from './error-details';\n\nconst formatRegExp = /\\{(\\d+)}?\\}/g;\n\nclass IntlError {\n constructor({ name, message }) {\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n }\n\n formatMessage(...values) {\n const flattenValues = flatten(values);\n\n const formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return `${this.name}: ${formattedMessage}`;\n }\n\n error(...values) {\n return new Error(this.formatMessage(values));\n }\n}\n\nconst flatten = function(arr) {\n return arr.reduce((a, b) => a.concat(b), []);\n};\n\nconst toIntlErrors = function(errors) {\n const predicate = function(prev, name) {\n prev[name] = new IntlError({ name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nconst errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nconst formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","export * from './numbers';\nexport * from './dates';\nexport * from './cldr';\nexport * from './format';\nexport * from './errors';\n","export { default as formatNumber } from './numbers/format-number';\nexport { default as parseNumber } from './numbers/parse-number';","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nconst SHARP = \"#\";\nconst ZERO = \"0\";\n\nconst trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nconst trailingPointRegExp = /\\.$/;\nconst commaRegExp = /\\,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n let trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp(`(\\\\.[0-9]{${ lastZero }}[1-9]*)0+$`, 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n let { number, format } = formatOptions;\n let decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n const zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n const sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n const hasZero = zeroIndex > -1;\n const hasSharp = sharpIndex > -1;\n let fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n let precision = fraction.length;\n let trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n let { number, format } = formatOptions;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n const zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n let index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n const format = formatOptions.format;\n let sharpIndex = format.indexOf(SHARP);\n let zeroIndex = format.indexOf(ZERO);\n\n let start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n let end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n let result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (let idx = 0, length = number.length; idx < length; idx++) {\n let ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n const { start, end, negative, negativeZero, format, decimalIndex, lastZeroIndex, hasNegativeFormat, hasGroup } = formatOptions;\n let number = formatOptions.number;\n const value = number.toString().split(POINT);\n const length = format.length;\n const integer = value[0];\n const fraction = value[1] || EMPTY;\n const integerLength = integer.length;\n let replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (let idx = start; idx < length; idx++) {\n let ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n let number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n const formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options = {}) {\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n const display = currencyDisplay(info, options);\n\n return display;\n}\n","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format = NUMBER_PLACEHOLDER, locale = DEFAULT_LOCALE) {\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n const info = localeInfo(locale);\n const options = formatOptions(format);\n\n let result;\n if (options) {\n const style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nconst standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n const formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n const options = {\n style: DECIMAL\n };\n\n let style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n let options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","export default function groupInteger(number, start, end, options, info) {\n const symbols = info.numbers.symbols;\n const decimalIndex = number.indexOf(symbols.decimal);\n const groupSizes = options.groupSize.slice();\n let groupSize = groupSizes.shift();\n\n let integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n let integer = number.substring(start, integerEnd);\n let result = number;\n const integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n let idx = integerLength;\n let parts = [];\n\n while (idx > -1) {\n let value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n let newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nconst exponentRegExp = /[eE][\\-+]?[0-9]+/;\nconst nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n const parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n const options = formatOptions(format) || {};\n let isCurrency = isCurrencyStyle(options.style);\n let number = value;\n let negative;\n\n const currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n const displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (let idx = 0; idx < displays.length; idx++) {\n let display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n const cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n const literals = formatOptions.literals;\n let result = number;\n\n if (literals) {\n for (let idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nexport default function parseNumber(value, locale = DEFAULT_LOCALE, format = {}) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n const info = localeInfo(locale);\n const symbols = info.numbers.symbols;\n\n let number = value.toString();\n let formatOptions = format || {};\n let isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n const { negative: negativeCurrency, number: currencyNumber } = cleanCurrencyNumber(number, info, formatOptions);\n number = String(currencyNumber).trim();\n\n const negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n let isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number /= 100;\n }\n\n return number;\n}\n","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nconst DEFAULT_DECIMAL_ROUNDING = 3;\nconst DEFAULT_PERCENT_ROUNDING = 0;\n\nconst trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n let { minimumFractionDigits, maximumFractionDigits, style } = options;\n const isCurrency = isCurrencyStyle(style);\n let currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n let result = EMPTY;\n for (let idx = 0, length = pattern.length; idx < length; idx++) {\n let ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n const currencyInfo = info.numbers.currency;\n let pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, `-${ NUMBER_PLACEHOLDER }`);\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n const symbols = info.numbers.symbols;\n const { style } = options;\n const isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n let exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n let value = number;\n let symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n const { minimumFractionDigits, maximumFractionDigits } = fractionOptions(options);\n\n value = round(value, maximumFractionDigits);\n\n const negative = value < 0;\n const negativeZero = isNegativeZero(number);\n\n const parts = value.split(POINT);\n\n let integer = parts[0];\n let fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n let formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n let pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n const patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n const result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nconst literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nconst PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n const format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n let format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n const literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n const quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n const literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n let result = number;\n if (literals) {\n const length = literals.length;\n for (let idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","/**\n * @license crypto-ts\n * MIT license\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass Hex {\n /**\n * Converts a word array to a hex string.\n *\n * \\@example\n *\n * let hexString = Hex.stringify(wordArray);\n * @param {?} wordArray The word array.\n *\n * @return {?} The hex string.\n *\n */\n static stringify(wordArray) {\n // Convert\n const /** @type {?} */ hexChars = [];\n for (let /** @type {?} */ i = 0; i < wordArray.sigBytes; i++) {\n const /** @type {?} */ bite = (wordArray.words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n return hexChars.join('');\n }\n /**\n * Converts a hex string to a word array.\n *\n * \\@example\n *\n * let wordArray = Hex.parse(hexString);\n * @param {?} hexStr The hex string.\n *\n * @return {?} The word array.\n *\n */\n static parse(hexStr) {\n // Shortcut\n const /** @type {?} */ hexStrLength = hexStr.length;\n // Convert\n const /** @type {?} */ words = [];\n for (let /** @type {?} */ i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n }\n return new WordArray(words, hexStrLength / 2);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass WordArray {\n /**\n * Creates a word array filled with random bytes.\n *\n * \\@example\n *\n * let wordArray = WordArray.random(16);\n * @param {?} nBytes The number of random bytes to generate.\n *\n * @return {?} The random word array.\n *\n */\n static random(nBytes) {\n const /** @type {?} */ words = [];\n const /** @type {?} */ r = (function (m_w) {\n let /** @type {?} */ m_z = 0x3ade68b1;\n const /** @type {?} */ mask = 0xffffffff;\n return function () {\n m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n let /** @type {?} */ result = ((m_z << 0x10) + m_w) & mask;\n result /= 0x100000000;\n result += 0.5;\n return result * (Math.random() > .5 ? 1 : -1);\n };\n });\n for (let /** @type {?} */ i = 0, /** @type {?} */ rcache; i < nBytes; i += 4) {\n const /** @type {?} */ _r = r((rcache || Math.random()) * 0x100000000);\n rcache = _r() * 0x3ade67b7;\n words.push((_r() * 0x100000000) | 0);\n }\n return new WordArray(words, nBytes);\n }\n /**\n * Initializes a newly created word array.\n *\n * \\@example\n *\n * let wordArray = new WordArray();\n * let wordArray = new WordArray([0x00010203, 0x04050607]);\n * let wordArray = new WordArray([0x00010203, 0x04050607], 6);\n * @param {?=} words (Optional) An array of 32-bit words.\n * @param {?=} sigBytes (Optional) The number of significant bytes in the words.\n *\n */\n constructor(words, sigBytes) {\n this.words = words || [];\n if (sigBytes !== undefined) {\n this.sigBytes = sigBytes;\n }\n else {\n this.sigBytes = this.words.length * 4;\n }\n }\n /**\n * Converts this word array to a string.\n *\n * \\@example\n *\n * let string = wordArray + '';\n * let string = wordArray.toString();\n * let string = wordArray.toString(CryptoJS.enc.Utf8);\n * @param {?=} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {?} The stringified word array.\n *\n */\n toString(encoder) {\n return (encoder || Hex).stringify(this);\n }\n /**\n * Concatenates a word array to this word array.\n *\n * \\@example\n *\n * wordArray1.concat(wordArray2);\n * @param {?} wordArray The word array to append.\n *\n * @return {?} This word array.\n *\n */\n concat(wordArray) {\n // Clamp excess bits\n this.clamp();\n // Concat\n if (this.sigBytes % 4) {\n // Copy one byte at a time\n for (let /** @type {?} */ i = 0; i < wordArray.sigBytes; i++) {\n const /** @type {?} */ thatByte = (wordArray.words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n this.words[(this.sigBytes + i) >>> 2] |= thatByte << (24 - ((this.sigBytes + i) % 4) * 8);\n }\n }\n else {\n // Copy one word at a time\n for (let /** @type {?} */ i = 0; i < wordArray.sigBytes; i += 4) {\n this.words[(this.sigBytes + i) >>> 2] = wordArray.words[i >>> 2];\n }\n }\n this.sigBytes += wordArray.sigBytes;\n // Chainable\n return this;\n }\n /**\n * Removes insignificant bits.\n *\n * \\@example\n *\n * wordArray.clamp();\n * @return {?}\n */\n clamp() {\n // Clamp\n this.words[this.sigBytes >>> 2] &= 0xffffffff << (32 - (this.sigBytes % 4) * 8);\n this.words.length = Math.ceil(this.sigBytes / 4);\n }\n /**\n * Creates a copy of this word array.\n *\n * \\@example\n *\n * let clone = wordArray.clone();\n * @return {?} The clone.\n *\n */\n clone() {\n return new WordArray(this.words.slice(0), this.sigBytes);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass Latin1 {\n /**\n * Converts a word array to a Latin1 string.\n *\n * \\@example\n *\n * let latin1String = Latin1.stringify(wordArray);\n * @param {?} wordArray The word array.\n *\n * @return {?} The Latin1 string.\n *\n */\n static stringify(wordArray) {\n // Convert\n const /** @type {?} */ latin1Chars = [];\n for (let /** @type {?} */ i = 0; i < wordArray.sigBytes; i++) {\n const /** @type {?} */ bite = (wordArray.words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n return latin1Chars.join('');\n }\n /**\n * Converts a Latin1 string to a word array.\n *\n * \\@example\n *\n * let wordArray = Latin1.parse(latin1String);\n * @param {?} latin1Str The Latin1 string.\n *\n * @return {?} The word array.\n *\n */\n static parse(latin1Str) {\n // Shortcut\n const /** @type {?} */ latin1StrLength = latin1Str.length;\n // Convert\n const /** @type {?} */ words = [];\n for (let /** @type {?} */ i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n }\n return new WordArray(words, latin1StrLength);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass Utf8 {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * \\@example\n *\n * let utf8String = Utf8.stringify(wordArray);\n * @param {?} wordArray The word array.\n *\n * @return {?} The UTF-8 string.\n *\n */\n static stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n }\n catch (/** @type {?} */ e) {\n throw new Error('Malformed UTF-8 data');\n }\n }\n /**\n * Converts a UTF-8 string to a word array.\n *\n * \\@example\n *\n * let wordArray = Utf8.parse(utf8String);\n * @param {?} utf8Str The UTF-8 string.\n *\n * @return {?} The word array.\n *\n */\n static parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @abstract\n */\nclass BufferedBlockAlgorithm {\n /**\n * @param {?=} cfg\n */\n constructor(cfg) {\n this._minBufferSize = 0;\n this.cfg = Object.assign({\n blockSize: 1\n }, cfg);\n // Initial values\n this._data = new WordArray();\n this._nDataBytes = 0;\n }\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * \\@example\n *\n * bufferedBlockAlgorithm.reset();\n * @return {?}\n */\n reset() {\n // Initial values\n this._data = new WordArray();\n this._nDataBytes = 0;\n }\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * \\@example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n * @param {?} data The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @return {?}\n */\n _append(data) {\n // Convert string to WordArray, else assume WordArray already\n if (typeof data === 'string') {\n data = Utf8.parse(data);\n }\n // Append\n this._data.concat(data);\n this._nDataBytes += data.sigBytes;\n }\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * \\@example\n *\n * let processedData = bufferedBlockAlgorithm._process();\n * let processedData = bufferedBlockAlgorithm._process(!!'flush');\n * @param {?=} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {?} The processed data.\n *\n */\n _process(doFlush) {\n if (!this.cfg.blockSize) {\n throw new Error('missing blockSize in config');\n }\n // Shortcuts\n const /** @type {?} */ blockSizeBytes = this.cfg.blockSize * 4;\n // Count blocks ready\n let /** @type {?} */ nBlocksReady = this._data.sigBytes / blockSizeBytes;\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n }\n else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n }\n // Count words ready\n const /** @type {?} */ nWordsReady = nBlocksReady * this.cfg.blockSize;\n // Count bytes ready\n const /** @type {?} */ nBytesReady = Math.min(nWordsReady * 4, this._data.sigBytes);\n // Process blocks\n let /** @type {?} */ processedWords;\n if (nWordsReady) {\n for (let /** @type {?} */ offset = 0; offset < nWordsReady; offset += this.cfg.blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(this._data.words, offset);\n }\n // Remove processed words\n processedWords = this._data.words.splice(0, nWordsReady);\n this._data.sigBytes -= nBytesReady;\n }\n // Return processed words\n return new WordArray(processedWords, nBytesReady);\n }\n /**\n * Creates a copy of this object.\n *\n * \\@example\n *\n * let clone = bufferedBlockAlgorithm.clone();\n * @return {?} The clone.\n *\n */\n clone() {\n const /** @type {?} */ clone = this.constructor();\n for (const /** @type {?} */ attr in this) {\n if (this.hasOwnProperty(attr)) {\n clone[attr] = this[attr];\n }\n }\n clone._data = this._data.clone();\n return clone;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass Base {\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass CipherParams extends Base {\n /**\n * Initializes a newly created cipher params object.\n *\n * \\@example\n *\n * let cipherParams = CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: AESAlgorithm,\n * mode: CBC,\n * padding: PKCS7,\n * blockSize: 4,\n * formatter: OpenSSLFormatter\n * });\n * @param {?} cipherParams An object with any of the possible cipher parameters.\n *\n */\n constructor(cipherParams) {\n super();\n this.ciphertext = cipherParams.ciphertext;\n this.key = cipherParams.key;\n this.iv = cipherParams.iv;\n this.salt = cipherParams.salt;\n this.algorithm = cipherParams.algorithm;\n this.mode = cipherParams.mode;\n this.padding = cipherParams.padding;\n this.blockSize = cipherParams.blockSize;\n this.formatter = cipherParams.formatter;\n }\n /**\n * @param {?} additionalParams\n * @return {?}\n */\n extend(additionalParams) {\n if (additionalParams.ciphertext !== undefined) {\n this.ciphertext = additionalParams.ciphertext;\n }\n if (additionalParams.key !== undefined) {\n this.key = additionalParams.key;\n }\n if (additionalParams.iv !== undefined) {\n this.iv = additionalParams.iv;\n }\n if (additionalParams.salt !== undefined) {\n this.salt = additionalParams.salt;\n }\n if (additionalParams.algorithm !== undefined) {\n this.algorithm = additionalParams.algorithm;\n }\n if (additionalParams.mode !== undefined) {\n this.mode = additionalParams.mode;\n }\n if (additionalParams.padding !== undefined) {\n this.padding = additionalParams.padding;\n }\n if (additionalParams.blockSize !== undefined) {\n this.blockSize = additionalParams.blockSize;\n }\n if (additionalParams.formatter !== undefined) {\n this.formatter = additionalParams.formatter;\n }\n return this;\n }\n /**\n * Converts this cipher params object to a string.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * \\@example\n *\n * let string = cipherParams + '';\n * let string = cipherParams.toString();\n * let string = cipherParams.toString(CryptoJS.format.OpenSSL);\n * @param {?=} formatter (Optional) The formatting strategy to use.\n *\n * @return {?} The stringified cipher params.\n *\n */\n toString(formatter) {\n if (formatter) {\n return formatter.stringify(this);\n }\n else if (this.formatter) {\n return this.formatter.stringify(this);\n }\n else {\n throw new Error('cipher needs a formatter to be able to convert the result into a string');\n }\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass Base64 {\n /**\n * Converts a word array to a Base64 string.\n *\n * \\@example\n *\n * let base64String = Base64.stringify(wordArray);\n * @param {?} wordArray The word array.\n *\n * @return {?} The Base64 string.\n *\n */\n static stringify(wordArray) {\n // Clamp excess bits\n wordArray.clamp();\n // Convert\n const /** @type {?} */ base64Chars = [];\n for (let /** @type {?} */ i = 0; i < wordArray.sigBytes; i += 3) {\n const /** @type {?} */ byte1 = (wordArray.words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n const /** @type {?} */ byte2 = (wordArray.words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n const /** @type {?} */ byte3 = (wordArray.words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n const /** @type {?} */ triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n for (let /** @type {?} */ j = 0; (j < 4) && (i + j * 0.75 < wordArray.sigBytes); j++) {\n base64Chars.push(this._map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n // Add padding\n const /** @type {?} */ paddingChar = this._map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n return base64Chars.join('');\n }\n /**\n * Converts a Base64 string to a word array.\n *\n * \\@example\n *\n * let wordArray = Base64.parse(base64String);\n * @param {?} base64Str The Base64 string.\n *\n * @return {?} The word array.\n *\n */\n static parse(base64Str) {\n // Shortcuts\n let /** @type {?} */ base64StrLength = base64Str.length;\n if (this._reverseMap === undefined) {\n this._reverseMap = [];\n for (let /** @type {?} */ j = 0; j < this._map.length; j++) {\n this._reverseMap[this._map.charCodeAt(j)] = j;\n }\n }\n // Ignore padding\n const /** @type {?} */ paddingChar = this._map.charAt(64);\n if (paddingChar) {\n const /** @type {?} */ paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n }\n // Convert\n return this.parseLoop(base64Str, base64StrLength, this._reverseMap);\n }\n /**\n * @param {?} base64Str\n * @param {?} base64StrLength\n * @param {?} reverseMap\n * @return {?}\n */\n static parseLoop(base64Str, base64StrLength, reverseMap) {\n const /** @type {?} */ words = [];\n let /** @type {?} */ nBytes = 0;\n for (let /** @type {?} */ i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n const /** @type {?} */ bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n const /** @type {?} */ bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n return new WordArray(words, nBytes);\n }\n}\nBase64._map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nBase64._reverseMap = undefined;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass OpenSSL {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * \\@example\n *\n * let openSSLString = OpenSSLFormatter.stringify(cipherParams);\n * @param {?} cipherParams The cipher params object.\n *\n * @return {?} The OpenSSL-compatible string.\n *\n */\n static stringify(cipherParams) {\n if (!cipherParams.ciphertext) {\n throw new Error('missing ciphertext in params');\n }\n // Shortcuts\n const /** @type {?} */ ciphertext = cipherParams.ciphertext;\n const /** @type {?} */ salt = cipherParams.salt;\n // Format\n let /** @type {?} */ wordArray;\n if (salt) {\n if (typeof salt === 'string') {\n throw new Error('salt is expected to be a WordArray');\n }\n wordArray = (new WordArray([0x53616c74, 0x65645f5f])).concat(salt).concat(ciphertext);\n }\n else {\n wordArray = ciphertext;\n }\n return wordArray.toString(Base64);\n }\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * \\@example\n *\n * let cipherParams = OpenSSLFormatter.parse(openSSLString);\n * @param {?} openSSLStr The OpenSSL-compatible string.\n *\n * @return {?} The cipher params object.\n *\n */\n static parse(openSSLStr) {\n // Parse base64\n const /** @type {?} */ ciphertext = Base64.parse(openSSLStr);\n // Test for salt\n let /** @type {?} */ salt;\n if (ciphertext.words[0] === 0x53616c74 && ciphertext.words[1] === 0x65645f5f) {\n // Extract salt\n salt = new WordArray(ciphertext.words.slice(2, 4));\n // Remove salt from ciphertext\n ciphertext.words.splice(0, 4);\n ciphertext.sigBytes -= 16;\n }\n return new CipherParams({ ciphertext: ciphertext, salt: salt });\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass SerializableCipher {\n /**\n * Encrypts a message.\n *\n * \\@example\n *\n * let ciphertextParams = SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n * let ciphertextParams = SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * let ciphertextParams = SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, {\n * iv: iv,\n * format: CryptoJS.format.OpenSSL\n * });\n * @param {?} cipher The cipher algorithm to use.\n * @param {?} message The message to encrypt.\n * @param {?} key The key.\n * @param {?=} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {?} A cipher params object.\n *\n */\n static encrypt(cipher, message, key, cfg) {\n // Apply config defaults\n const /** @type {?} */ config = Object.assign({}, this.cfg, cfg);\n // Encrypt\n const /** @type {?} */ encryptor = cipher.createEncryptor(key, config);\n const /** @type {?} */ ciphertext = encryptor.finalize(message);\n // Create and return serializable cipher params\n return new CipherParams({\n ciphertext: ciphertext,\n key: key,\n iv: encryptor.cfg.iv,\n algorithm: cipher,\n mode: (/** @type {?} */ (encryptor.cfg)).mode,\n padding: (/** @type {?} */ (encryptor.cfg)).padding,\n blockSize: encryptor.cfg.blockSize,\n formatter: config.format\n });\n }\n /**\n * Decrypts serialized ciphertext.\n *\n * \\@example\n *\n * let plaintext = SerializableCipher.decrypt(\n * AESAlgorithm,\n * formattedCiphertext,\n * key, {\n * iv: iv,\n * format: CryptoJS.format.OpenSSL\n * }\n * );\n *\n * let plaintext = SerializableCipher.decrypt(\n * AESAlgorithm,\n * ciphertextParams,\n * key, {\n * iv: iv,\n * format: CryptoJS.format.OpenSSL\n * }\n * );\n * @param {?} cipher The cipher algorithm to use.\n * @param {?} ciphertext The ciphertext to decrypt.\n * @param {?} key The key.\n * @param {?=} optionalCfg\n * @return {?} The plaintext.\n *\n */\n static decrypt(cipher, ciphertext, key, optionalCfg) {\n // Apply config defaults\n const /** @type {?} */ cfg = Object.assign({}, this.cfg, optionalCfg);\n if (!cfg.format) {\n throw new Error('could not determine format');\n }\n // Convert string to CipherParams\n ciphertext = this._parse(ciphertext, cfg.format);\n if (!ciphertext.ciphertext) {\n throw new Error('could not determine ciphertext');\n }\n // Decrypt\n const /** @type {?} */ plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n return plaintext;\n }\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * \\@example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n * @param {?} ciphertext The ciphertext.\n * @param {?} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {?} The unserialized ciphertext.\n *\n */\n static _parse(ciphertext, format) {\n if (typeof ciphertext === 'string') {\n return format.parse(ciphertext);\n }\n else {\n return ciphertext;\n }\n }\n}\nSerializableCipher.cfg = {\n blockSize: 4,\n iv: new WordArray([]),\n format: OpenSSL\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @abstract\n */\nclass Hasher extends BufferedBlockAlgorithm {\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * \\@example\n *\n * let SHA256 = Hasher._createHelper(SHA256);\n * @param {?} hasher The hasher to create a helper for.\n *\n * @return {?} The shortcut function.\n *\n */\n static _createHelper(hasher) {\n /**\n * @param {?} message\n * @param {?=} cfg\n * @return {?}\n */\n function helper(message, cfg) {\n const /** @type {?} */ hasherClass = hasher;\n const /** @type {?} */ hasherInstance = new hasherClass(cfg);\n return hasherInstance.finalize(message);\n }\n return helper;\n }\n /**\n * Initializes a newly created hasher.\n *\n * \\@example\n *\n * let hasher = CryptoJS.algo.SHA256.create();\n * @param {?=} cfg (Optional) The configuration options to use for this hash computation.\n *\n */\n constructor(cfg) {\n // Apply config defaults\n super(Object.assign({\n blockSize: 512 / 32\n }, cfg));\n // Set initial values\n this.reset();\n }\n /**\n * Updates this hasher with a message.\n *\n * \\@example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n * @param {?} messageUpdate The message to append.\n *\n * @return {?} This hasher.\n *\n */\n update(messageUpdate) {\n // Append\n this._append(messageUpdate);\n // Update the hash\n this._process();\n // Chainable\n return this;\n }\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * \\@example\n *\n * let hash = hasher.finalize();\n * let hash = hasher.finalize('message');\n * let hash = hasher.finalize(wordArray);\n * @param {?} messageUpdate (Optional) A final message update.\n *\n * @return {?} The hash.\n *\n */\n finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n }\n // Perform concrete-hasher logic\n const /** @type {?} */ hash = this._doFinalize();\n return hash;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// Constants table\nconst /** @type {?} */ T = [];\n// Compute constants\nfor (let /** @type {?} */ i = 0; i < 64; i++) {\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n}\nclass MD5 extends Hasher {\n /**\n * @param {?} a\n * @param {?} b\n * @param {?} c\n * @param {?} d\n * @param {?} x\n * @param {?} s\n * @param {?} t\n * @return {?}\n */\n static FF(a, b, c, d, x, s, t) {\n const /** @type {?} */ n = a + ((b & c) | (~b & d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n /**\n * @param {?} a\n * @param {?} b\n * @param {?} c\n * @param {?} d\n * @param {?} x\n * @param {?} s\n * @param {?} t\n * @return {?}\n */\n static GG(a, b, c, d, x, s, t) {\n const /** @type {?} */ n = a + ((b & d) | (c & ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n /**\n * @param {?} a\n * @param {?} b\n * @param {?} c\n * @param {?} d\n * @param {?} x\n * @param {?} s\n * @param {?} t\n * @return {?}\n */\n static HH(a, b, c, d, x, s, t) {\n const /** @type {?} */ n = a + (b ^ c ^ d) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n /**\n * @param {?} a\n * @param {?} b\n * @param {?} c\n * @param {?} d\n * @param {?} x\n * @param {?} s\n * @param {?} t\n * @return {?}\n */\n static II(a, b, c, d, x, s, t) {\n const /** @type {?} */ n = a + (c ^ (b | ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n /**\n * @return {?}\n */\n reset() {\n // reset core values\n super.reset();\n this._hash = new WordArray([\n 0x67452301, 0xefcdab89,\n 0x98badcfe, 0x10325476\n ]);\n }\n /**\n * @param {?} M\n * @param {?} offset\n * @return {?}\n */\n _doProcessBlock(M, offset) {\n // Swap endian\n for (let /** @type {?} */ i = 0; i < 16; i++) {\n // Shortcuts\n const /** @type {?} */ offset_i = offset + i;\n const /** @type {?} */ M_offset_i = M[offset_i];\n M[offset_i] = ((((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00));\n }\n // Shortcuts\n const /** @type {?} */ H = this._hash.words;\n const /** @type {?} */ M_offset_0 = M[offset + 0];\n const /** @type {?} */ M_offset_1 = M[offset + 1];\n const /** @type {?} */ M_offset_2 = M[offset + 2];\n const /** @type {?} */ M_offset_3 = M[offset + 3];\n const /** @type {?} */ M_offset_4 = M[offset + 4];\n const /** @type {?} */ M_offset_5 = M[offset + 5];\n const /** @type {?} */ M_offset_6 = M[offset + 6];\n const /** @type {?} */ M_offset_7 = M[offset + 7];\n const /** @type {?} */ M_offset_8 = M[offset + 8];\n const /** @type {?} */ M_offset_9 = M[offset + 9];\n const /** @type {?} */ M_offset_10 = M[offset + 10];\n const /** @type {?} */ M_offset_11 = M[offset + 11];\n const /** @type {?} */ M_offset_12 = M[offset + 12];\n const /** @type {?} */ M_offset_13 = M[offset + 13];\n const /** @type {?} */ M_offset_14 = M[offset + 14];\n const /** @type {?} */ M_offset_15 = M[offset + 15];\n // Working variables\n let /** @type {?} */ a = H[0];\n let /** @type {?} */ b = H[1];\n let /** @type {?} */ c = H[2];\n let /** @type {?} */ d = H[3];\n // Computation\n a = MD5.FF(a, b, c, d, M_offset_0, 7, T[0]);\n d = MD5.FF(d, a, b, c, M_offset_1, 12, T[1]);\n c = MD5.FF(c, d, a, b, M_offset_2, 17, T[2]);\n b = MD5.FF(b, c, d, a, M_offset_3, 22, T[3]);\n a = MD5.FF(a, b, c, d, M_offset_4, 7, T[4]);\n d = MD5.FF(d, a, b, c, M_offset_5, 12, T[5]);\n c = MD5.FF(c, d, a, b, M_offset_6, 17, T[6]);\n b = MD5.FF(b, c, d, a, M_offset_7, 22, T[7]);\n a = MD5.FF(a, b, c, d, M_offset_8, 7, T[8]);\n d = MD5.FF(d, a, b, c, M_offset_9, 12, T[9]);\n c = MD5.FF(c, d, a, b, M_offset_10, 17, T[10]);\n b = MD5.FF(b, c, d, a, M_offset_11, 22, T[11]);\n a = MD5.FF(a, b, c, d, M_offset_12, 7, T[12]);\n d = MD5.FF(d, a, b, c, M_offset_13, 12, T[13]);\n c = MD5.FF(c, d, a, b, M_offset_14, 17, T[14]);\n b = MD5.FF(b, c, d, a, M_offset_15, 22, T[15]);\n a = MD5.GG(a, b, c, d, M_offset_1, 5, T[16]);\n d = MD5.GG(d, a, b, c, M_offset_6, 9, T[17]);\n c = MD5.GG(c, d, a, b, M_offset_11, 14, T[18]);\n b = MD5.GG(b, c, d, a, M_offset_0, 20, T[19]);\n a = MD5.GG(a, b, c, d, M_offset_5, 5, T[20]);\n d = MD5.GG(d, a, b, c, M_offset_10, 9, T[21]);\n c = MD5.GG(c, d, a, b, M_offset_15, 14, T[22]);\n b = MD5.GG(b, c, d, a, M_offset_4, 20, T[23]);\n a = MD5.GG(a, b, c, d, M_offset_9, 5, T[24]);\n d = MD5.GG(d, a, b, c, M_offset_14, 9, T[25]);\n c = MD5.GG(c, d, a, b, M_offset_3, 14, T[26]);\n b = MD5.GG(b, c, d, a, M_offset_8, 20, T[27]);\n a = MD5.GG(a, b, c, d, M_offset_13, 5, T[28]);\n d = MD5.GG(d, a, b, c, M_offset_2, 9, T[29]);\n c = MD5.GG(c, d, a, b, M_offset_7, 14, T[30]);\n b = MD5.GG(b, c, d, a, M_offset_12, 20, T[31]);\n a = MD5.HH(a, b, c, d, M_offset_5, 4, T[32]);\n d = MD5.HH(d, a, b, c, M_offset_8, 11, T[33]);\n c = MD5.HH(c, d, a, b, M_offset_11, 16, T[34]);\n b = MD5.HH(b, c, d, a, M_offset_14, 23, T[35]);\n a = MD5.HH(a, b, c, d, M_offset_1, 4, T[36]);\n d = MD5.HH(d, a, b, c, M_offset_4, 11, T[37]);\n c = MD5.HH(c, d, a, b, M_offset_7, 16, T[38]);\n b = MD5.HH(b, c, d, a, M_offset_10, 23, T[39]);\n a = MD5.HH(a, b, c, d, M_offset_13, 4, T[40]);\n d = MD5.HH(d, a, b, c, M_offset_0, 11, T[41]);\n c = MD5.HH(c, d, a, b, M_offset_3, 16, T[42]);\n b = MD5.HH(b, c, d, a, M_offset_6, 23, T[43]);\n a = MD5.HH(a, b, c, d, M_offset_9, 4, T[44]);\n d = MD5.HH(d, a, b, c, M_offset_12, 11, T[45]);\n c = MD5.HH(c, d, a, b, M_offset_15, 16, T[46]);\n b = MD5.HH(b, c, d, a, M_offset_2, 23, T[47]);\n a = MD5.II(a, b, c, d, M_offset_0, 6, T[48]);\n d = MD5.II(d, a, b, c, M_offset_7, 10, T[49]);\n c = MD5.II(c, d, a, b, M_offset_14, 15, T[50]);\n b = MD5.II(b, c, d, a, M_offset_5, 21, T[51]);\n a = MD5.II(a, b, c, d, M_offset_12, 6, T[52]);\n d = MD5.II(d, a, b, c, M_offset_3, 10, T[53]);\n c = MD5.II(c, d, a, b, M_offset_10, 15, T[54]);\n b = MD5.II(b, c, d, a, M_offset_1, 21, T[55]);\n a = MD5.II(a, b, c, d, M_offset_8, 6, T[56]);\n d = MD5.II(d, a, b, c, M_offset_15, 10, T[57]);\n c = MD5.II(c, d, a, b, M_offset_6, 15, T[58]);\n b = MD5.II(b, c, d, a, M_offset_13, 21, T[59]);\n a = MD5.II(a, b, c, d, M_offset_4, 6, T[60]);\n d = MD5.II(d, a, b, c, M_offset_11, 10, T[61]);\n c = MD5.II(c, d, a, b, M_offset_2, 15, T[62]);\n b = MD5.II(b, c, d, a, M_offset_9, 21, T[63]);\n // Intermediate hash value\n H[0] = (H[0] + a) | 0;\n H[1] = (H[1] + b) | 0;\n H[2] = (H[2] + c) | 0;\n H[3] = (H[3] + d) | 0;\n }\n /**\n * @return {?}\n */\n _doFinalize() {\n // Shortcuts\n const /** @type {?} */ data = this._data;\n const /** @type {?} */ dataWords = data.words;\n const /** @type {?} */ nBitsTotal = this._nDataBytes * 8;\n const /** @type {?} */ nBitsLeft = data.sigBytes * 8;\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n const /** @type {?} */ nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n const /** @type {?} */ nBitsTotalL = nBitsTotal;\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ((((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00));\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ((((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00));\n data.sigBytes = (dataWords.length + 1) * 4;\n // Hash final blocks\n this._process();\n // Shortcuts\n const /** @type {?} */ hash = this._hash;\n const /** @type {?} */ H = hash.words;\n // Swap endian\n for (let /** @type {?} */ i = 0; i < 4; i++) {\n // Shortcut\n const /** @type {?} */ H_i = H[i];\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n }\n // Return final computed hash\n return hash;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass EvpKDF {\n /**\n * Initializes a newly created key derivation function.\n *\n * \\@example\n *\n * let kdf = EvpKDF.create();\n * let kdf = EvpKDF.create({ keySize: 8 });\n * let kdf = EvpKDF.create({ keySize: 8, iterations: 1000 });\n * @param {?=} cfg (Optional) The configuration options to use for the derivation.\n *\n */\n constructor(cfg) {\n this.cfg = Object.assign({\n keySize: 128 / 32,\n hasher: MD5,\n iterations: 1\n }, cfg);\n }\n /**\n * Derives a key from a password.\n *\n * \\@example\n *\n * let key = kdf.compute(password, salt);\n * @param {?} password The password.\n * @param {?} salt A salt.\n *\n * @return {?} The derived key.\n *\n */\n compute(password, salt) {\n // Init hasher\n const /** @type {?} */ hasher = new (/** @type {?} */ (this.cfg.hasher))();\n // Initial values\n const /** @type {?} */ derivedKey = new WordArray();\n // Generate key\n let /** @type {?} */ block;\n while (derivedKey.words.length < this.cfg.keySize) {\n if (block) {\n hasher.update(block);\n }\n block = hasher.update(password).finalize(salt);\n hasher.reset();\n // Iterations\n for (let /** @type {?} */ i = 1; i < this.cfg.iterations; i++) {\n block = hasher.finalize(block);\n hasher.reset();\n }\n derivedKey.concat(block);\n }\n derivedKey.sigBytes = this.cfg.keySize * 4;\n return derivedKey;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass OpenSSLKdf {\n /**\n * Derives a key and IV from a password.\n *\n * \\@example\n *\n * let derivedParams = OpenSSL.execute('Password', 256/32, 128/32);\n * let derivedParams = OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n * @param {?} password The password to derive from.\n * @param {?} keySize The size in words of the key to generate.\n * @param {?} ivSize The size in words of the IV to generate.\n * @param {?=} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {?} A cipher params object with the key, IV, and salt.\n *\n */\n static execute(password, keySize, ivSize, salt) {\n // Generate random salt\n if (!salt) {\n salt = WordArray.random(64 / 8);\n }\n // Derive key and IV\n const /** @type {?} */ key = (new EvpKDF({ keySize: keySize + ivSize })).compute(password, salt);\n // Separate key and IV\n const /** @type {?} */ iv = new WordArray(key.words.slice(keySize), ivSize * 4);\n key.sigBytes = keySize * 4;\n // Return params\n return new CipherParams({ key: key, iv: iv, salt: salt });\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass PasswordBasedCipher {\n /**\n * Encrypts a message using a password.\n *\n * \\@example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(AES, message, 'password', { format: OpenSSL });\n * @param {?} cipher The cipher algorithm to use.\n * @param {?} message The message to encrypt.\n * @param {?} password The password.\n * @param {?=} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {?} A cipher params object.\n *\n */\n static encrypt(cipher, message, password, cfg) {\n // Apply config defaults\n const /** @type {?} */ config = Object.assign({}, this.cfg, cfg);\n // Check if we have a kdf\n if (config.kdf === undefined) {\n throw new Error('missing kdf in config');\n }\n // Derive key and other params\n const /** @type {?} */ derivedParams = config.kdf.execute(password, cipher.keySize, cipher.ivSize);\n // Check if we have an IV\n if (derivedParams.iv !== undefined) {\n // Add IV to config\n config.iv = derivedParams.iv;\n }\n // Encrypt\n const /** @type {?} */ ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, config);\n // Mix in derived params\n return ciphertext.extend(derivedParams);\n }\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * \\@example\n *\n * var plaintext = PasswordBasedCipher.decrypt(AES, formattedCiphertext, 'password', { format: OpenSSL });\n * var plaintext = PasswordBasedCipher.decrypt(AES, ciphertextParams, 'password', { format: OpenSSL });\n * @param {?} cipher The cipher algorithm to use.\n * @param {?} ciphertext The ciphertext to decrypt.\n * @param {?} password The password.\n * @param {?=} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {?} The plaintext.\n *\n */\n static decrypt(cipher, ciphertext, password, cfg) {\n // Apply config defaults\n const /** @type {?} */ config = Object.assign({}, this.cfg, cfg);\n // Check if we have a kdf\n if (config.format === undefined) {\n throw new Error('missing format in config');\n }\n // Convert string to CipherParams\n ciphertext = this._parse(ciphertext, config.format);\n // Check if we have a kdf\n if (config.kdf === undefined) {\n throw new Error('the key derivation function must be set');\n }\n // Derive key and other params\n const /** @type {?} */ derivedParams = config.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n // Check if we have an IV\n if (derivedParams.iv !== undefined) {\n // Add IV to config\n config.iv = derivedParams.iv;\n }\n // Decrypt\n const /** @type {?} */ plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, config);\n return plaintext;\n }\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * \\@example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n * @param {?} ciphertext The ciphertext.\n * @param {?} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {?} The unserialized ciphertext.\n *\n */\n static _parse(ciphertext, format) {\n if (typeof ciphertext === 'string') {\n return format.parse(ciphertext);\n }\n else {\n return ciphertext;\n }\n }\n}\nPasswordBasedCipher.cfg = {\n blockSize: 4,\n iv: new WordArray([]),\n format: OpenSSL,\n kdf: OpenSSLKdf\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @abstract\n */\nclass Cipher extends BufferedBlockAlgorithm {\n /**\n * Initializes a newly created cipher.\n *\n * \\@example\n *\n * let cipher = AES.create(AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n * @param {?} xformMode Either the encryption or decryption transormation mode constant.\n * @param {?} key The key.\n * @param {?=} cfg (Optional) The configuration options to use for this operation.\n *\n */\n constructor(xformMode, key, cfg) {\n // Apply config defaults\n super(Object.assign({\n blockSize: 1\n }, cfg));\n // Store transform mode and key\n this._xformMode = xformMode;\n this._key = key;\n // Set initial values\n this.reset();\n }\n /**\n * Creates this cipher in encryption mode.\n *\n * \\@example\n *\n * let cipher = AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n * @param {?} key The key.\n * @param {?=} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {?} A cipher instance.\n *\n */\n static createEncryptor(key, cfg) {\n // workaround for typescript not being able to create a abstract creator function directly\n const /** @type {?} */ thisClass = this;\n return new thisClass(this._ENC_XFORM_MODE, key, cfg);\n }\n /**\n * Creates this cipher in decryption mode.\n *\n * \\@example\n *\n * let cipher = AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n * @param {?} key The key.\n * @param {?=} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {?} A cipher instance.\n *\n */\n static createDecryptor(key, cfg) {\n // workaround for typescript not being able to create a abstract creator function directly\n const /** @type {?} */ thisClass = this;\n return new thisClass(this._DEC_XFORM_MODE, key, cfg);\n }\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * \\@example\n *\n * let AES = Cipher._createHelper(AESAlgorithm);\n * @param {?} cipher The cipher to create a helper for.\n *\n * @return {?} An object with encrypt and decrypt shortcut functions.\n *\n */\n static _createHelper(cipher) {\n /**\n * @param {?} message\n * @param {?} key\n * @param {?=} cfg\n * @return {?}\n */\n function encrypt(message, key, cfg) {\n if (typeof key === 'string') {\n return PasswordBasedCipher.encrypt(cipher, message, key, cfg);\n }\n else {\n return SerializableCipher.encrypt(cipher, message, key, cfg);\n }\n }\n /**\n * @param {?} ciphertext\n * @param {?} key\n * @param {?=} cfg\n * @return {?}\n */\n function decrypt(ciphertext, key, cfg) {\n if (typeof key === 'string') {\n return PasswordBasedCipher.decrypt(cipher, ciphertext, key, cfg);\n }\n else {\n return SerializableCipher.decrypt(cipher, ciphertext, key, cfg);\n }\n }\n return {\n encrypt: encrypt,\n decrypt: decrypt\n };\n }\n /**\n * Adds data to be encrypted or decrypted.\n *\n * \\@example\n *\n * let encrypted = cipher.process('data');\n * let encrypted = cipher.process(wordArray);\n * @param {?} dataUpdate The data to encrypt or decrypt.\n *\n * @return {?} The data after processing.\n *\n */\n process(dataUpdate) {\n // Append\n this._append(dataUpdate);\n // Process available blocks\n return this._process();\n }\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * \\@example\n *\n * var encrypted = cipher.finalize();\n * var encrypted = cipher.finalize('data');\n * var encrypted = cipher.finalize(wordArray);\n * @param {?=} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {?} The data after final processing.\n *\n */\n finalize(dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate);\n }\n // Perform concrete-cipher logic\n const /** @type {?} */ finalProcessedData = this._doFinalize();\n return finalProcessedData;\n }\n}\n/**\n * A constant representing encryption mode.\n */\nCipher._ENC_XFORM_MODE = 1;\n/**\n * A constant representing decryption mode.\n */\nCipher._DEC_XFORM_MODE = 2;\n/**\n * This cipher's key size. Default: 4 (128 bits / 32 Bits)\n */\nCipher.keySize = 4;\n/**\n * This cipher's IV size. Default: 4 (128 bits / 32 Bits)\n */\nCipher.ivSize = 4;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @abstract\n */\nclass BlockCipherModeAlgorithm {\n /**\n * @param {?} cipher\n * @param {?} iv\n */\n constructor(cipher, iv) {\n this.init(cipher, iv);\n }\n /**\n * Initializes a newly created mode.\n *\n * \\@example\n *\n * var mode = CBC.Encryptor.create(cipher, iv.words);\n * @param {?} cipher A block cipher instance.\n * @param {?=} iv The IV words.\n *\n * @return {?}\n */\n init(cipher, iv) {\n this._cipher = cipher;\n this._iv = iv;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @abstract\n */\nclass BlockCipherMode {\n /**\n * Creates this mode for encryption.\n *\n * \\@example\n *\n * var mode = CBC.createEncryptor(cipher, iv.words);\n * @param {?} cipher A block cipher instance.\n * @param {?} iv The IV words.\n *\n * @return {?}\n */\n static createEncryptor(cipher, iv) {\n // workaround for typescript not being able to create a abstract creator function directly\n const /** @type {?} */ encryptorClass = this.Encryptor;\n return new encryptorClass(cipher, iv);\n }\n /**\n * Creates this mode for decryption.\n *\n * \\@example\n *\n * var mode = CBC.createDecryptor(cipher, iv.words);\n * @param {?} cipher A block cipher instance.\n * @param {?} iv The IV words.\n *\n * @return {?}\n */\n static createDecryptor(cipher, iv) {\n // workaround for typescript not being able to create a abstract creator function directly\n const /** @type {?} */ decryptorClass = this.Decryptor;\n return new decryptorClass(cipher, iv);\n }\n}\nBlockCipherMode.Encryptor = BlockCipherModeAlgorithm;\nBlockCipherMode.Decryptor = BlockCipherModeAlgorithm;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass CBCEncryptor extends BlockCipherModeAlgorithm {\n /**\n * Processes the data block at offset.\n *\n * \\@example\n *\n * mode.processBlock(data.words, offset);\n * @param {?} words The data words to operate on.\n * @param {?} offset The offset where the block starts.\n *\n * @return {?}\n */\n processBlock(words, offset) {\n // Check if we have a blockSize\n if (this._cipher.cfg.blockSize === undefined) {\n throw new Error('missing blockSize in cipher config');\n }\n // XOR and encrypt\n this.xorBlock(words, offset, this._cipher.cfg.blockSize);\n this._cipher.encryptBlock(words, offset);\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + this._cipher.cfg.blockSize);\n }\n /**\n * @param {?} words\n * @param {?} offset\n * @param {?} blockSize\n * @return {?}\n */\n xorBlock(words, offset, blockSize) {\n // Choose mixing block\n let /** @type {?} */ block;\n if (this._iv) {\n block = this._iv;\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n else {\n block = this._prevBlock;\n }\n // block should never be undefined but we want to make typescript happy\n if (block !== undefined) {\n // XOR blocks\n for (let /** @type {?} */ i = 0; i < blockSize; i++) {\n words[offset + i] ^= block[i];\n }\n }\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass CBCDecryptor extends BlockCipherModeAlgorithm {\n /**\n * Processes the data block at offset.\n *\n * \\@example\n *\n * mode.processBlock(data.words, offset);\n * @param {?} words The data words to operate on.\n * @param {?} offset The offset where the block starts.\n *\n * @return {?}\n */\n processBlock(words, offset) {\n // Check if we have a blockSize\n if (this._cipher.cfg.blockSize === undefined) {\n throw new Error('missing blockSize in cipher config');\n }\n // Remember this block to use with next block\n const /** @type {?} */ thisBlock = words.slice(offset, offset + this._cipher.cfg.blockSize);\n // Decrypt and XOR\n this._cipher.decryptBlock(words, offset);\n this.xorBlock(words, offset, this._cipher.cfg.blockSize);\n // This block becomes the previous block\n this._prevBlock = thisBlock;\n }\n /**\n * @param {?} words\n * @param {?} offset\n * @param {?} blockSize\n * @return {?}\n */\n xorBlock(words, offset, blockSize) {\n // Choose mixing block\n let /** @type {?} */ block;\n if (this._iv) {\n block = this._iv;\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n else {\n block = this._prevBlock;\n }\n // block should never be undefined but we want to make typescript happy\n if (block !== undefined) {\n // XOR blocks\n for (let /** @type {?} */ i = 0; i < blockSize; i++) {\n words[offset + i] ^= block[i];\n }\n }\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Cipher Block Chaining mode.\n * @abstract\n */\nclass CBC extends BlockCipherMode {\n}\nCBC.Encryptor = CBCEncryptor;\nCBC.Decryptor = CBCDecryptor;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass PKCS7 {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * \\@example\n *\n * PKCS7.pad(wordArray, 4);\n * @param {?} data The data to pad.\n * @param {?} blockSize The multiple that the data should be padded to.\n *\n * @return {?}\n */\n static pad(data, blockSize) {\n // Shortcut\n const /** @type {?} */ blockSizeBytes = blockSize * 4;\n // Count padding bytes\n const /** @type {?} */ nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n // Create padding word\n const /** @type {?} */ paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n // Create padding\n const /** @type {?} */ paddingWords = [];\n for (let /** @type {?} */ i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord);\n }\n const /** @type {?} */ padding = new WordArray(paddingWords, nPaddingBytes);\n // Add padding\n data.concat(padding);\n }\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * \\@example\n *\n * PKCS7.unpad(wordArray);\n * @param {?} data The data to unpad.\n *\n * @return {?}\n */\n static unpad(data) {\n // Get number of padding bytes from last byte\n const /** @type {?} */ nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n // Remove padding\n data.sigBytes -= nPaddingBytes;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @abstract\n */\nclass BlockCipher extends Cipher {\n /**\n * @param {?} xformMode\n * @param {?} key\n * @param {?=} cfg\n */\n constructor(xformMode, key, cfg) {\n super(xformMode, key, Object.assign({\n // default: 128 / 32\n blockSize: 4,\n mode: CBC,\n padding: PKCS7\n }, cfg));\n }\n /**\n * @return {?}\n */\n reset() {\n // Reset cipher\n super.reset();\n // Check if we have a blockSize\n if (this.cfg.mode === undefined) {\n throw new Error('missing mode in config');\n }\n // Reset block mode\n let /** @type {?} */ modeCreator;\n if (this._xformMode === (/** @type {?} */ (this.constructor))._ENC_XFORM_MODE) {\n modeCreator = this.cfg.mode.createEncryptor;\n }\n else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n modeCreator = this.cfg.mode.createDecryptor;\n // Keep at least one block in the buffer for unpadding\n this._minBufferSize = 1;\n }\n if (this._mode && this._mode.__creator === modeCreator) {\n this._mode.init(this, this.cfg.iv && this.cfg.iv.words);\n }\n else {\n this._mode = modeCreator.call(this.cfg.mode, this, this.cfg.iv && this.cfg.iv.words);\n this._mode.__creator = modeCreator;\n }\n }\n /**\n * @param {?} words\n * @param {?} offset\n * @return {?}\n */\n _doProcessBlock(words, offset) {\n this._mode.processBlock(words, offset);\n }\n /**\n * @return {?}\n */\n _doFinalize() {\n // Check if we have a padding strategy\n if (this.cfg.padding === undefined) {\n throw new Error('missing padding in config');\n }\n // Finalize\n let /** @type {?} */ finalProcessedBlocks;\n if (this._xformMode === (/** @type {?} */ (this.constructor))._ENC_XFORM_MODE) {\n // Check if we have a blockSize\n if (this.cfg.blockSize === undefined) {\n throw new Error('missing blockSize in config');\n }\n // Pad data\n this.cfg.padding.pad(this._data, this.cfg.blockSize);\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n }\n else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n // Unpad data\n this.cfg.padding.unpad(finalProcessedBlocks);\n }\n return finalProcessedBlocks;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// Define lookup tables\nconst /** @type {?} */ SBOX = [];\nconst /** @type {?} */ INV_SBOX = [];\nconst /** @type {?} */ SUB_MIX_0 = [];\nconst /** @type {?} */ SUB_MIX_1 = [];\nconst /** @type {?} */ SUB_MIX_2 = [];\nconst /** @type {?} */ SUB_MIX_3 = [];\nconst /** @type {?} */ INV_SUB_MIX_0 = [];\nconst /** @type {?} */ INV_SUB_MIX_1 = [];\nconst /** @type {?} */ INV_SUB_MIX_2 = [];\nconst /** @type {?} */ INV_SUB_MIX_3 = [];\n// Compute lookup tables\n(function () {\n // Compute double table\n const /** @type {?} */ d = [];\n for (let /** @type {?} */ i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n }\n else {\n d[i] = (i << 1) ^ 0x11b;\n }\n }\n // Walk GF(2^8)\n let /** @type {?} */ x = 0;\n let /** @type {?} */ xi = 0;\n for (let /** @type {?} */ i = 0; i < 256; i++) {\n // Compute sbox\n let /** @type {?} */ sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x;\n // Compute multiplication\n const /** @type {?} */ x2 = d[x];\n const /** @type {?} */ x4 = d[x2];\n const /** @type {?} */ x8 = d[x4];\n // Compute sub bytes, mix columns tables\n let /** @type {?} */ t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n SUB_MIX_3[x] = t;\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n INV_SUB_MIX_3[sx] = t;\n // Compute next counter\n if (!x) {\n x = xi = 1;\n }\n else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n}());\n// Precomputed Rcon lookup\nconst /** @type {?} */ RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\nclass AES extends BlockCipher {\n /**\n * @param {?} xformMode\n * @param {?} key\n * @param {?=} cfg\n */\n constructor(xformMode, key, cfg) {\n super(xformMode, key, cfg);\n }\n /**\n * @return {?}\n */\n reset() {\n // reset core values\n super.reset();\n // Skip reset of nRounds has been set before and key did not change\n if (this._nRounds && this._keyPriorReset === this._key) {\n return;\n }\n // Shortcuts\n const /** @type {?} */ key = this._keyPriorReset = this._key;\n const /** @type {?} */ keyWords = key.words;\n const /** @type {?} */ keySize = key.sigBytes / 4;\n // Compute number of rounds\n const /** @type {?} */ nRounds = this._nRounds = keySize + 6;\n // Compute number of key schedule rows\n const /** @type {?} */ ksRows = (nRounds + 1) * 4;\n // Compute key schedule\n const /** @type {?} */ keySchedule = this._keySchedule = [];\n for (let /** @type {?} */ ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow];\n }\n else {\n let /** @type {?} */ t = keySchedule[ksRow - 1];\n if (!(ksRow % keySize)) {\n // Rot word\n t = (t << 8) | (t >>> 24);\n // Sub word\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n // Mix Rcon\n t ^= RCON[(ksRow / keySize) | 0] << 24;\n }\n else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n }\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n }\n }\n // Compute inv key schedule\n const /** @type {?} */ invKeySchedule = this._invKeySchedule = [];\n for (let /** @type {?} */ invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n const /** @type {?} */ ksRow = ksRows - invKsRow;\n let /** @type {?} */ t;\n if (invKsRow % 4) {\n t = keySchedule[ksRow];\n }\n else {\n t = keySchedule[ksRow - 4];\n }\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n }\n else {\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n }\n }\n }\n /**\n * @param {?} M\n * @param {?} offset\n * @return {?}\n */\n encryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n }\n /**\n * @param {?} M\n * @param {?} offset\n * @return {?}\n */\n decryptBlock(M, offset) {\n // Swap 2nd and 4th rows\n let /** @type {?} */ t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n // Inv swap 2nd and 4th rows\n t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n }\n /**\n * @param {?} M\n * @param {?} offset\n * @param {?} keySchedule\n * @param {?} sub_mix_0\n * @param {?} sub_mix_1\n * @param {?} sub_mix_2\n * @param {?} sub_mix_3\n * @param {?} sbox\n * @return {?}\n */\n _doCryptBlock(M, offset, keySchedule, sub_mix_0, sub_mix_1, sub_mix_2, sub_mix_3, sbox) {\n // Get input, add round key\n let /** @type {?} */ s0 = M[offset] ^ keySchedule[0];\n let /** @type {?} */ s1 = M[offset + 1] ^ keySchedule[1];\n let /** @type {?} */ s2 = M[offset + 2] ^ keySchedule[2];\n let /** @type {?} */ s3 = M[offset + 3] ^ keySchedule[3];\n // Key schedule row counter\n let /** @type {?} */ ksRow = 4;\n // Rounds\n for (let /** @type {?} */ round = 1; round < this._nRounds; round++) {\n // Shift rows, sub bytes, mix columns, add round key\n const /** @type {?} */ t0 = sub_mix_0[s0 >>> 24] ^ sub_mix_1[(s1 >>> 16) & 0xff] ^ sub_mix_2[(s2 >>> 8) & 0xff] ^ sub_mix_3[s3 & 0xff] ^\n keySchedule[ksRow++];\n const /** @type {?} */ t1 = sub_mix_0[s1 >>> 24] ^ sub_mix_1[(s2 >>> 16) & 0xff] ^ sub_mix_2[(s3 >>> 8) & 0xff] ^ sub_mix_3[s0 & 0xff] ^\n keySchedule[ksRow++];\n const /** @type {?} */ t2 = sub_mix_0[s2 >>> 24] ^ sub_mix_1[(s3 >>> 16) & 0xff] ^ sub_mix_2[(s0 >>> 8) & 0xff] ^ sub_mix_3[s1 & 0xff] ^\n keySchedule[ksRow++];\n const /** @type {?} */ t3 = sub_mix_0[s3 >>> 24] ^ sub_mix_1[(s0 >>> 16) & 0xff] ^ sub_mix_2[(s1 >>> 8) & 0xff] ^ sub_mix_3[s2 & 0xff] ^\n keySchedule[ksRow++];\n // Update state\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n // Shift rows, sub bytes, add round key\n const /** @type {?} */ t0g = ((sbox[s0 >>> 24] << 24) | (sbox[(s1 >>> 16) & 0xff] << 16) | (sbox[(s2 >>> 8) & 0xff] << 8) | sbox[s3 & 0xff]) ^\n keySchedule[ksRow++];\n const /** @type {?} */ t1g = ((sbox[s1 >>> 24] << 24) | (sbox[(s2 >>> 16) & 0xff] << 16) | (sbox[(s3 >>> 8) & 0xff] << 8) | sbox[s0 & 0xff]) ^\n keySchedule[ksRow++];\n const /** @type {?} */ t2g = ((sbox[s2 >>> 24] << 24) | (sbox[(s3 >>> 16) & 0xff] << 16) | (sbox[(s0 >>> 8) & 0xff] << 8) | sbox[s1 & 0xff]) ^\n keySchedule[ksRow++];\n const /** @type {?} */ t3g = ((sbox[s3 >>> 24] << 24) | (sbox[(s0 >>> 16) & 0xff] << 16) | (sbox[(s1 >>> 8) & 0xff] << 8) | sbox[s2 & 0xff]) ^\n keySchedule[ksRow++];\n // Set output\n M[offset] = t0g;\n M[offset + 1] = t1g;\n M[offset + 2] = t2g;\n M[offset + 3] = t3g;\n }\n}\nAES.keySize = 8;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// Initialization and round constants tables\nconst /** @type {?} */ H = [];\nconst /** @type {?} */ K = [];\n// Reusable object\nconst /** @type {?} */ W = [];\nclass SHA256 extends Hasher {\n /**\n * @return {?}\n */\n reset() {\n // reset core values\n super.reset();\n this._hash = new WordArray(H.slice(0));\n }\n /**\n * @param {?} M\n * @param {?} offset\n * @return {?}\n */\n _doProcessBlock(M, offset) {\n // Shortcut\n const /** @type {?} */ Hl = this._hash.words;\n // Working variables\n let /** @type {?} */ a = Hl[0];\n let /** @type {?} */ b = Hl[1];\n let /** @type {?} */ c = Hl[2];\n let /** @type {?} */ d = Hl[3];\n let /** @type {?} */ e = Hl[4];\n let /** @type {?} */ f = Hl[5];\n let /** @type {?} */ g = Hl[6];\n let /** @type {?} */ h = Hl[7];\n // Computation\n for (let /** @type {?} */ i = 0; i < 64; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n }\n else {\n const /** @type {?} */ gamma0x = W[i - 15];\n const /** @type {?} */ gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n ((gamma0x << 14) | (gamma0x >>> 18)) ^\n (gamma0x >>> 3);\n const /** @type {?} */ gamma1x = W[i - 2];\n const /** @type {?} */ gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n ((gamma1x << 13) | (gamma1x >>> 19)) ^\n (gamma1x >>> 10);\n W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n }\n const /** @type {?} */ ch = (e & f) ^ (~e & g);\n const /** @type {?} */ maj = (a & b) ^ (a & c) ^ (b & c);\n const /** @type {?} */ sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n const /** @type {?} */ sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n const /** @type {?} */ t1 = h + sigma1 + ch + K[i] + W[i];\n const /** @type {?} */ t2 = sigma0 + maj;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n // Intermediate hash value\n Hl[0] = (Hl[0] + a) | 0;\n Hl[1] = (Hl[1] + b) | 0;\n Hl[2] = (Hl[2] + c) | 0;\n Hl[3] = (Hl[3] + d) | 0;\n Hl[4] = (Hl[4] + e) | 0;\n Hl[5] = (Hl[5] + f) | 0;\n Hl[6] = (Hl[6] + g) | 0;\n Hl[7] = (Hl[7] + h) | 0;\n }\n /**\n * @return {?}\n */\n _doFinalize() {\n const /** @type {?} */ nBitsTotal = this._nDataBytes * 8;\n const /** @type {?} */ nBitsLeft = this._data.sigBytes * 8;\n // Add padding\n this._data.words[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n this._data.words[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n this._data.words[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n this._data.sigBytes = this._data.words.length * 4;\n // Hash final blocks\n this._process();\n // Return final computed hash\n return this._hash;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass NoPadding {\n /**\n * Doesn't pad the data provided.\n *\n * \\@example\n *\n * NoPadding.pad(wordArray, 4);\n * @param {?} data The data to pad.\n * @param {?} blockSize The multiple that the data should be padded to.\n *\n * @return {?}\n */\n static pad(data, blockSize) {\n }\n /**\n * Doesn't unpad the data provided.\n *\n * \\@example\n *\n * NoPadding.unpad(wordArray);\n * @param {?} data The data to unpad.\n *\n * @return {?}\n */\n static unpad(data) {\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass ECBEncryptor extends BlockCipherModeAlgorithm {\n /**\n * Processes the data block at offset.\n *\n * \\@example\n *\n * mode.processBlock(data.words, offset);\n * @param {?} words The data words to operate on.\n * @param {?} offset The offset where the block starts.\n *\n * @return {?}\n */\n processBlock(words, offset) {\n this._cipher.encryptBlock(words, offset);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nclass ECBDecryptor extends BlockCipherModeAlgorithm {\n /**\n * Processes the data block at offset.\n *\n * \\@example\n *\n * mode.processBlock(data.words, offset);\n * @param {?} words The data words to operate on.\n * @param {?} offset The offset where the block starts.\n *\n * @return {?}\n */\n processBlock(words, offset) {\n this._cipher.decryptBlock(words, offset);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Cipher Block Chaining mode.\n * @abstract\n */\nclass ECB extends BlockCipherMode {\n}\nECB.Encryptor = ECBEncryptor;\nECB.Decryptor = ECBDecryptor;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nconst /** @type {?} */ lib = {\n BlockCipher: BlockCipher,\n WordArray: WordArray,\n CipherParams: CipherParams,\n Hasher: Hasher,\n SerializableCipher: SerializableCipher,\n PasswordBasedCipher: PasswordBasedCipher\n};\nconst /** @type {?} */ algo = {\n AES: AES,\n SHA256: SHA256\n};\nconst /** @type {?} */ enc = {\n Utf8: Utf8,\n Hex: Hex\n};\nconst /** @type {?} */ pad = {\n NoPadding: NoPadding,\n PKCS7: PKCS7\n};\nconst /** @type {?} */ mode = {\n CBC: CBC,\n ECB: ECB\n};\n// HELPERS /////////////////////////////////////////////////////////////////////////////////////////\nconst /** @type {?} */ AES$1 = lib.BlockCipher._createHelper(algo.AES);\nconst /** @type {?} */ SHA256$1 = lib.Hasher._createHelper(algo.SHA256);\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { lib, algo, enc, pad, mode, AES$1 as AES, SHA256$1 as SHA256, AES as ɵl, SHA256 as ɵm, Hex as ɵp, Latin1 as ɵo, Utf8 as ɵn, Base as ɵg, BlockCipher as ɵa, BufferedBlockAlgorithm as ɵc, Cipher as ɵb, CipherParams as ɵf, Hasher as ɵi, PasswordBasedCipher as ɵk, SerializableCipher as ɵj, WordArray as ɵe, BlockCipherMode as ɵt, CBC as ɵs, ECB as ɵu, NoPadding as ɵq, PKCS7 as ɵr };\n\n","import * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Directive, ElementRef, EventEmitter, Inject, Injectable, Input, Output, PLATFORM_ID, NgZone, } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nvar ClickOutsideDirective = (function () {\n function ClickOutsideDirective(_el, _ngZone, platformId) {\n this._el = _el;\n this._ngZone = _ngZone;\n this.platformId = platformId;\n this.clickOutsideEnabled = true;\n this.attachOutsideOnClick = false;\n this.delayClickOutsideInit = false;\n this.emitOnBlur = false;\n this.exclude = '';\n this.excludeBeforeClick = false;\n this.clickOutsideEvents = '';\n this.clickOutside = new EventEmitter();\n this._nodesExcluded = [];\n this._events = ['click'];\n this._initOnClickBody = this._initOnClickBody.bind(this);\n this._onClickBody = this._onClickBody.bind(this);\n this._onWindowBlur = this._onWindowBlur.bind(this);\n }\n ClickOutsideDirective.prototype.ngOnInit = function () {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this._init();\n };\n ClickOutsideDirective.prototype.ngOnDestroy = function () {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this._removeClickOutsideListener();\n this._removeAttachOutsideOnClickListener();\n this._removeWindowBlurListener();\n };\n ClickOutsideDirective.prototype.ngOnChanges = function (changes) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {\n this._init();\n }\n };\n ClickOutsideDirective.prototype._init = function () {\n if (this.clickOutsideEvents !== '') {\n this._events = this.clickOutsideEvents.split(',').map(function (e) { return e.trim(); });\n }\n this._excludeCheck();\n if (this.attachOutsideOnClick) {\n this._initAttachOutsideOnClickListener();\n }\n else {\n this._initOnClickBody();\n }\n if (this.emitOnBlur) {\n this._initWindowBlurListener();\n }\n };\n ClickOutsideDirective.prototype._initOnClickBody = function () {\n if (this.delayClickOutsideInit) {\n setTimeout(this._initClickOutsideListener.bind(this));\n }\n else {\n this._initClickOutsideListener();\n }\n };\n ClickOutsideDirective.prototype._excludeCheck = function () {\n if (this.exclude) {\n try {\n var nodes = Array.from(document.querySelectorAll(this.exclude));\n if (nodes) {\n this._nodesExcluded = nodes;\n }\n }\n catch (err) {\n console.error('[ng-click-outside] Check your exclude selector syntax.', err);\n }\n }\n };\n ClickOutsideDirective.prototype._onClickBody = function (ev) {\n if (!this.clickOutsideEnabled) {\n return;\n }\n if (this.excludeBeforeClick) {\n this._excludeCheck();\n }\n if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {\n this._emit(ev);\n if (this.attachOutsideOnClick) {\n this._removeClickOutsideListener();\n }\n }\n };\n ClickOutsideDirective.prototype._onWindowBlur = function (ev) {\n var _this = this;\n setTimeout(function () {\n if (!document.hidden) {\n _this._emit(ev);\n }\n });\n };\n ClickOutsideDirective.prototype._emit = function (ev) {\n var _this = this;\n if (!this.clickOutsideEnabled) {\n return;\n }\n this._ngZone.run(function () { return _this.clickOutside.emit(ev); });\n };\n ClickOutsideDirective.prototype._shouldExclude = function (target) {\n for (var _i = 0, _a = this._nodesExcluded; _i < _a.length; _i++) {\n var excludedNode = _a[_i];\n if (excludedNode.contains(target)) {\n return true;\n }\n }\n return false;\n };\n ClickOutsideDirective.prototype._initClickOutsideListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return document.addEventListener(e, _this._onClickBody); });\n });\n };\n ClickOutsideDirective.prototype._removeClickOutsideListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return document.removeEventListener(e, _this._onClickBody); });\n });\n };\n ClickOutsideDirective.prototype._initAttachOutsideOnClickListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return _this._el.nativeElement.addEventListener(e, _this._initOnClickBody); });\n });\n };\n ClickOutsideDirective.prototype._removeAttachOutsideOnClickListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return _this._el.nativeElement.removeEventListener(e, _this._initOnClickBody); });\n });\n };\n ClickOutsideDirective.prototype._initWindowBlurListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n window.addEventListener('blur', _this._onWindowBlur);\n });\n };\n ClickOutsideDirective.prototype._removeWindowBlurListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n window.removeEventListener('blur', _this._onWindowBlur);\n });\n };\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"clickOutsideEnabled\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"attachOutsideOnClick\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"delayClickOutsideInit\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"emitOnBlur\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], ClickOutsideDirective.prototype, \"exclude\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"excludeBeforeClick\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], ClickOutsideDirective.prototype, \"clickOutsideEvents\", void 0);\n __decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n ], ClickOutsideDirective.prototype, \"clickOutside\", void 0);\n ClickOutsideDirective = __decorate([ __param(2, Inject(PLATFORM_ID)),\n __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Object])\n ], ClickOutsideDirective);\nClickOutsideDirective.ɵfac = function ClickOutsideDirective_Factory(t) { return new (t || ClickOutsideDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nClickOutsideDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ClickOutsideDirective, selectors: [[\"\", \"clickOutside\", \"\"]], inputs: { clickOutsideEnabled: \"clickOutsideEnabled\", attachOutsideOnClick: \"attachOutsideOnClick\", delayClickOutsideInit: \"delayClickOutsideInit\", emitOnBlur: \"emitOnBlur\", exclude: \"exclude\", excludeBeforeClick: \"excludeBeforeClick\", clickOutsideEvents: \"clickOutsideEvents\" }, outputs: { clickOutside: \"clickOutside\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nClickOutsideDirective.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ClickOutsideDirective, factory: function (t) { return ClickOutsideDirective.ɵfac(t); } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ClickOutsideDirective, [{\n type: Injectable\n }, {\n type: Directive,\n args: [{ selector: '[clickOutside]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { clickOutsideEnabled: [{\n type: Input\n }], attachOutsideOnClick: [{\n type: Input\n }], delayClickOutsideInit: [{\n type: Input\n }], emitOnBlur: [{\n type: Input\n }], exclude: [{\n type: Input\n }], excludeBeforeClick: [{\n type: Input\n }], clickOutsideEvents: [{\n type: Input\n }], clickOutside: [{\n type: Output\n }] }); })();\n return ClickOutsideDirective;\n}());\nexport { ClickOutsideDirective };\n\n","import * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { NgModule } from '@angular/core';\nimport { ClickOutsideDirective } from './click-outside.directive';\nvar ClickOutsideModule = (function () {\n function ClickOutsideModule() {\n }\nClickOutsideModule.ɵfac = function ClickOutsideModule_Factory(t) { return new (t || ClickOutsideModule)(); };\nClickOutsideModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ClickOutsideModule });\nClickOutsideModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ClickOutsideModule, [{\n type: NgModule,\n args: [{\n declarations: [ClickOutsideDirective],\n exports: [ClickOutsideDirective]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ClickOutsideModule, { declarations: function () { return [ClickOutsideDirective]; }, exports: function () { return [ClickOutsideDirective]; } }); })();\n return ClickOutsideModule;\n}());\nexport { ClickOutsideModule };\n\n","export { ClickOutsideDirective } from './click-outside.directive';\nexport { ClickOutsideModule } from './click-outside.module';\n\n","import { __decorate, __param, __metadata } from 'tslib';\nimport { Injectable, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\n\n/**\n * Created by ahsanayaz on 08/11/2016.\n */\nimport * as ɵngcc0 from '@angular/core';\nconst BROWSERS = {\n CHROME: 'Chrome',\n FIREFOX: 'Firefox',\n SAFARI: 'Safari',\n OPERA: 'Opera',\n IE: 'IE',\n MS_EDGE: 'MS-Edge',\n MS_EDGE_CHROMIUM: 'MS-Edge-Chromium',\n FB_MESSANGER: 'FB-Messanger',\n SAMSUNG: 'Samsung',\n UCBROWSER: 'UC-Browser',\n UNKNOWN: 'Unknown'\n};\nconst MOBILES_RE = {\n // tslint:disable-next-line:max-line-length\n HTC: /HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel/,\n NEXUS_PHONE: /Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6/,\n DELL: /Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b/,\n MOTOROLA: new RegExp(`Motorola|DROIDX|DROID BIONIC|\\\\bDroid\\\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|\n A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|\n MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|\n ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|\n WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|\n XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|\n XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\\\bMoto E\\\\b|XT1068|XT1092|XT1052`),\n SAMSUNG: new RegExp(`\\\\bSamsung\\\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|\n GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|\n GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|\n GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|\n GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|\n GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|\n GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|\n GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|\n GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|\n GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|\n GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|\n GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|\n GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|\n GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|\n GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|\n GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|\n GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|\n GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|\n SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|\n SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|\n SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|\n SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|\n SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|\n SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|\n SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|\n SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|\n SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|\n SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|\n SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|\n SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|\n SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|\n SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|\n SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|\n SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|\n SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|\n SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|\n SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|\n SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|\n SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|\n SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|\n SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|\n SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|\n SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|\n SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|\n SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|\n SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|\n SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|\n SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|\n SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|\n GT-N7105|SCH-I535|SM-N900A|SM-N900T|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|\n GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|\n GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|\n SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|\n SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|\n SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F`),\n LG: new RegExp(`\\\\bLG\\\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|\n LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|\n C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|\n LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|\n VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|\n MS323|M257)`),\n SONY: /SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533/,\n ASUS: /Asus.*Galaxy|PadFone.*Mobile/,\n NOKIA_LUMIA: /Lumia [0-9]{3,4}/,\n MICROMAX: /Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b/,\n PALM: /PalmSource|Palm/,\n VERTU: /Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature/,\n PANTECH: new RegExp(`PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|\n IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|\n IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|\n CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|\n P2000|P7040|P7000|C790`),\n FLY: /IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250/,\n WIKO: new RegExp(`KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|\n SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|\n CINK KING|CINK PEAX|CINK SLIM|SUBLIM`),\n I_MOBILE: /i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)/,\n SIMVALLEY: /\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b/,\n WOLFGANG: /AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q/,\n ALCATEL: /Alcatel/,\n NINTENDO: /Nintendo (3DS|Switch)/,\n AMOI: /Amoi/,\n INQ: /INQ/,\n VITA: /\\bVita\\b/,\n BLACKBERRY: /\\bBlackBerry\\b|\\bBB10\\b|rim[0-9]+/,\n FIREFOX_OS: /\\bFirefox-OS\\b/,\n IPHONE: /\\biPhone\\b/,\n iPod: /\\biPod\\b/,\n ANDROID: /\\bAndroid\\b/,\n WINDOWS_PHONE: /\\bWindows-Phone\\b/,\n GENERIC_PHONE: new RegExp(`Tapatalk|PDA;|SAGEM|\\\\bmmp\\\\b|pocket|\\\\bpsp\\\\b|symbian|Smartphone|smartfon|treo|up.browser|\n up.link|vodafone|\\\\bwap\\\\b|nokia|Nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser`),\n};\nconst TABLETS_RE = {\n iPad: /iPad|iPad.*Mobile/,\n NexusTablet: /Android.*Nexus[\\s]+(7|9|10)/,\n GoogleTablet: /Android.*Pixel C/,\n SamsungTablet: new RegExp(`SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|\n GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|\n SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|\n GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|\n SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|\n GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|\n SHV-E230S|SHW-M180K|SHW-M180L|SM-T290|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|\n SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|\n GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|\n SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|\n GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|\n SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|\n SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|\n SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|\n SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|\n SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|\n SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|\n SM-T719|SM-T813|SM-T819|SM-T580|SM-T590|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|\n SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835`),\n Kindle: new RegExp(`Kindle|Silk.*Accelerated|Android.*\\\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|\n KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\\\b|Android.*Silk\\/[0-9.]+ like Chrome\\\n /[0-9.]+ (?!Mobile)`),\n SurfaceTablet: /Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)/,\n HPTablet: /HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10/,\n AsusTablet: new RegExp(`^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|\n TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|\n Slider SL101|\\\\bK00F\\\\b|\\\\bK00C\\\\b|\\\\bK00E\\\\b|\\\\bK00L\\\\b|TX201LA|ME176C|ME102A|\\\\bM80TA\\\\b|ME372CL|\n ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\\\bME70C\\\\b|ME581C|\n ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\\\bP027\\\\b|\\\\bP024\\\\b|\\\\bP00C\\\\b`),\n BlackBerryTablet: /PlayBook|RIM Tablet/,\n HTCtablet: /HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410/,\n MotorolaTablet: /xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617/,\n NookTablet: /Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2/,\n AcerTablet: new RegExp(`Android.*; \\\\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|\n W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\\\b|W3-810|\\\\bA3-A10\\\\b|\\\\bA3-A11\\\\b|\n \\\\bA3-A20\\\\b|\\\\bA3-A30`),\n ToshibaTablet: /Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO/,\n LGTablet: /\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b/,\n FujitsuTablet: /Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b/,\n PrestigioTablet: new RegExp(`PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|\n PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|\n PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|\n PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|\n PMT5887|PMT5001|PMT5002`),\n LenovoTablet: new RegExp(`Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|\n YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|\n B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304F|TB-X304L|TB-X704F|TB-8703F|Tab2A7-10F|TB2-X30L`),\n DellTablet: /Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7/,\n YarvikTablet: new RegExp(`Android.*\\\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|\n TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|\n TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|\n TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|\n TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\\\b`),\n MedionTablet: /Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB/,\n ArnovaTablet: /97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2/,\n IntensoTablet: /INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004/,\n IRUTablet: /M702pro/,\n MegafonTablet: /MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b/,\n EbodaTablet: /E-Boda (Supreme|Impresspeed|Izzycomm|Essential)/,\n AllViewTablet: /Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)/,\n ArchosTablet: new RegExp(`\\\\b(101G9|80G9|A101IT)\\\\b|Qilive 97R|Archos5|\\\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10|\n Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\\\b`),\n AinolTablet: /NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark/,\n NokiaLumiaTablet: /Lumia 2520/,\n SonyTablet: new RegExp(`Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|\n SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|\n EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|\n SGP612|SGP712`),\n PhilipsTablet: /\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b/,\n CubeTablet: /Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT/,\n CobyTablet: new RegExp(`MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|\n MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010`),\n MIDTablet: new RegExp(`M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|\n MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|\n MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10`),\n MSITablet: new RegExp(`MSI \\\\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|\n Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\\\b`),\n SMiTTablet: /Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)/,\n RockChipTablet: /Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A/,\n FlyTablet: /IQ310|Fly Vision/,\n bqTablet: new RegExp(`Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|\n Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))|Maxwell.*Lite|Maxwell.*Plus`),\n HuaweiTablet: new RegExp(`MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|\n S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09`),\n NecTablet: /\\bN-06D|\\bN-08D/,\n PantechTablet: /Pantech.*P4100/,\n BronchoTablet: /Broncho.*(N701|N708|N802|a710)/,\n VersusTablet: /TOUCHPAD.*[78910]|\\bTOUCHTAB\\b/,\n ZyncTablet: /z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900/,\n PositivoTablet: /TB07STA|TB10STA|TB07FTA|TB10FTA/,\n NabiTablet: /Android.*\\bNabi/,\n KoboTablet: /Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build/,\n DanewTablet: /DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b/,\n TexetTablet: new RegExp(`NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|\n TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|\n TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|\n TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|\n TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|\n TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|\n TB-436|TB-416|TB-146SE|TB-126SE`),\n PlaystationTablet: /Playstation.*(Portable|Vita)/,\n TrekstorTablet: /ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab/,\n PyleAudioTablet: /\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b/,\n AdvanTablet: new RegExp(`Android.* \\\\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|\n T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\\\b`),\n DanyTechTablet: `Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|\n Genius TAB GII|Genius TAB GIII|Genius Tab S1`,\n GalapadTablet: /Android.*\\bG1\\b(?!\\))/,\n MicromaxTablet: /Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b/,\n KarbonnTablet: /Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b/,\n AllFineTablet: /Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide/,\n PROSCANTablet: new RegExp(`\\\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|\n PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|\n PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|\n PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\\\b`),\n YONESTablet: /BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026/,\n ChangJiaTablet: new RegExp(`TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|\n TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|\n TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|\n TPC10111|TPC10203|TPC10205|TPC10503`),\n GUTablet: /TX-A1301|TX-M9002|Q702|kf026/,\n PointOfViewTablet: new RegExp(`TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|\n TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|\n TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|\n TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10`),\n OvermaxTablet: new RegExp(`OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|\n MagicTab|Stream|TB-08|TB-09)|Qualcore 1027`),\n HCLTablet: /HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync/,\n DPSTablet: /DPS Dream 9|DPS Dual 7/,\n VistureTablet: /V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10/,\n CrestaTablet: /CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989/,\n MediatekTablet: /\\bMT8125|MT8389|MT8135|MT8377\\b/,\n ConcordeTablet: /Concorde([ ]+)?Tab|ConCorde ReadMan/,\n GoCleverTablet: new RegExp(`GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|\n TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|\n GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|\n TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|\n TAB R104|TAB R83.3|TAB A1042`),\n ModecomTablet: new RegExp(`FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|\n FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|\n FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003`),\n VoninoTablet: new RegExp(`\\\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|\n Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|\n Primus[ _]?QS|Android.*\\\\bQ8\\\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\\\b`),\n ECSTablet: /V07OT2|TM105A|S10OT1|TR10CS1/,\n StorexTablet: /eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab/,\n VodafoneTablet: /SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497/,\n EssentielBTablet: /Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2/,\n RossMoorTablet: /RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711/,\n iMobileTablet: /i-mobile i-note/,\n TolinoTablet: /tolino tab [0-9.]+|tolino shine/,\n AudioSonicTablet: /\\bC-22Q|T7-QC|T-17B|T-17P\\b/,\n AMPETablet: /Android.* A78 /,\n SkkTablet: /Android.* (SKYPAD|PHOENIX|CYCLOPS)/,\n TecnoTablet: /TECNO P9|TECNO DP8D/,\n JXDTablet: new RegExp(`Android.* \\\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|\n S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|\n P1000|P300|S18|S6600|S9100)\\\\b`),\n iJoyTablet: new RegExp(`Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|\n Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|\n Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|\n Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|\n Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)`),\n FX2Tablet: /FX2 PAD7|FX2 PAD10/,\n XoroTablet: new RegExp(`KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|\n PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|\n PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|\n TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151`),\n ViewsonicTablet: /ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a/,\n VerizonTablet: /QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1/,\n OdysTablet: /LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10/,\n CaptivaTablet: /CAPTIVA PAD/,\n IconbitTablet: new RegExp(`NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|\n NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S`),\n TeclastTablet: new RegExp(`T98 4G|\\\\bP80\\\\b|\\\\bX90HD\\\\b|X98 Air|X98 Air 3G|\\\\bX89\\\\b|P80 3G|\\\\bX80h\\\\b|P98 Air|\n \\\\bX89HD\\\\b|P98 3G|\\\\bP90HD\\\\b|P89 3G|X98 3G|\\\\bP70h\\\\b|P79HD 3G|G18d 3G|\\\\bP79HD\\\\b|\\\\bP89s\\\\b|\\\\bA88\\\\b|\n \\\\bP10HD\\\\b|\\\\bP19HD\\\\b|G18 3G|\\\\bP78HD\\\\b|\\\\bA78\\\\b|\\\\bP75\\\\b|G17s 3G|G17h 3G|\\\\bP85t\\\\b|\\\\bP90\\\\b|\n \\\\bP11\\\\b|\\\\bP98t\\\\b|\\\\bP98HD\\\\b|\\\\bG18d\\\\b|\\\\bP85s\\\\b|\\\\bP11HD\\\\b|\\\\bP88s\\\\b|\\\\bA80HD\\\\b|\\\\bA80se\\\\b|\n \\\\bA10h\\\\b|\\\\bP89\\\\b|\\\\bP78s\\\\b|\\\\bG18\\\\b|\\\\bP85\\\\b|\\\\bA70h\\\\b|\\\\bA70\\\\b|\\\\bG17\\\\b|\\\\bP18\\\\b|\\\\bA80s\\\\b|\n \\\\bA11s\\\\b|\\\\bP88HD\\\\b|\\\\bA80h\\\\b|\\\\bP76s\\\\b|\\\\bP76h\\\\b|\\\\bP98\\\\b|\\\\bA10HD\\\\b|\\\\bP78\\\\b|\\\\bP88\\\\b|\\\\bA11\\\\b|\n \\\\bA10t\\\\b|\\\\bP76a\\\\b|\\\\bP76t\\\\b|\\\\bP76e\\\\b|\\\\bP85HD\\\\b|\\\\bP85a\\\\b|\\\\bP86\\\\b|\\\\bP75HD\\\\b|\\\\bP76v\\\\b|\\\\bA12\\\\b|\n \\\\bP75a\\\\b|\\\\bA15\\\\b|\\\\bP76Ti\\\\b|\\\\bP81HD\\\\b|\\\\bA10\\\\b|\\\\bT760VE\\\\b|\\\\bT720HD\\\\b|\\\\bP76\\\\b|\\\\bP73\\\\b|\\\\bP71\\\\b|\n \\\\bP72\\\\b|\\\\bT720SE\\\\b|\\\\bC520Ti\\\\b|\\\\bT760\\\\b|\\\\bT720VE\\\\b|T720-3GE|T720-WiFi`),\n OndaTablet: new RegExp(`\\\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|\n V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|\n V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|\n Vi40)\\\\b[\\s]+|V10 \\\\b4G\\\\b`),\n JaytechTablet: /TPC-PA762/,\n BlaupunktTablet: /Endeavour 800NG|Endeavour 1010/,\n DigmaTablet: /\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b/,\n EvolioTablet: /ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b/,\n LavaTablet: /QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b/,\n AocTablet: /MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712/,\n MpmanTablet: new RegExp(`MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\n \\\\bMPG7\\\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|\n MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010`),\n CelkonTablet: /CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b/,\n WolderTablet: new RegExp(`miTab \\\\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|\n POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|\n FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\\\b`),\n MediacomTablet: 'M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA',\n MiTablet: /\\bMI PAD\\b|\\bHM NOTE 1W\\b/,\n NibiruTablet: /Nibiru M1|Nibiru Jupiter One/,\n NexoTablet: /NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI/,\n LeaderTablet: new RegExp(`TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|\n TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100`),\n UbislateTablet: /UbiSlate[\\s]?7C/,\n PocketBookTablet: /Pocketbook/,\n KocasoTablet: /\\b(TB-1207)\\b/,\n HisenseTablet: /\\b(F5281|E2371)\\b/,\n Hudl: /Hudl HT7S3|Hudl 2/,\n TelstraTablet: /T-Hub2/,\n GenericTablet: new RegExp(`Android.*\\\\b97D\\\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\\\bA7EB\\\\b|CatNova8|\n A1_07|CT704|CT1002|\\\\bM721\\\\b|rk30sdk|\\\\bEVOTAB\\\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|\n Tablet-PC-4|Tagi Tab|\\\\bM6pro\\\\b|CT1020W|arc 10HD|\\\\bTP750\\\\b|\\\\bQTAQZ3\\\\b|WVT101|TM1088|KT107`),\n};\nconst DEVICES = {\n BLACKBERRY: 'Blackberry',\n FIREFOX_OS: 'Firefox-OS',\n CHROME_BOOK: 'Chrome-Book',\n WINDOWS_PHONE: 'Windows-Phone',\n VITA: 'Vita',\n PS4: 'PS4',\n CHROMECAST: 'Chromecast',\n APPLE_TV: 'Apple-TV',\n GOOGLE_TV: 'Google-TV',\n ANDROID: 'Android',\n Tesla: 'Tesla',\n iPad: 'iPad',\n IPHONE: 'iPhone',\n iPod: 'iPod',\n UNKNOWN: 'Unknown',\n HTC: 'HTC',\n NEXUS_PHONE: 'Nexus Phone',\n NexusTablet: 'Nexus Tablet',\n DELL: 'Dell',\n MOTOROLA: 'Motorola',\n SAMSUNG: 'Samsung',\n LG: 'LG',\n SONY: 'Sony',\n ASUS: 'Asus',\n NOKIA_LUMIA: 'Nokia Lumia',\n MICROMAX: 'Micromax',\n PALM: 'Palm',\n VERTU: 'Vertu',\n PANTECH: 'PANTECH',\n FLY: 'Fly',\n WIKO: `WIKO`,\n I_MOBILE: 'i-mobile',\n SIMVALLEY: 'Simvalley',\n WOLFGANG: 'Wolfgang',\n ALCATEL: 'Alcatel',\n NINTENDO: 'Nintendo',\n AMOI: 'Amoi',\n INQ: 'INQ',\n GENERIC_PHONE: 'Generic Phone',\n};\nconst OS = {\n WINDOWS: 'Windows',\n MAC: 'Mac',\n IOS: 'iOS',\n ANDROID: 'Android',\n LINUX: 'Linux',\n UNIX: 'Unix',\n FIREFOX_OS: 'Firefox-OS',\n CHROME_OS: 'Chrome-OS',\n WINDOWS_PHONE: 'Windows-Phone',\n UNKNOWN: 'Unknown'\n};\nconst OS_VERSIONS = {\n WINDOWS_3_11: 'windows-3-11',\n WINDOWS_95: 'windows-95',\n WINDOWS_ME: 'windows-me',\n WINDOWS_98: 'windows-98',\n WINDOWS_CE: 'windows-ce',\n WINDOWS_2000: 'windows-2000',\n WINDOWS_XP: 'windows-xp',\n WINDOWS_SERVER_2003: 'windows-server-2003',\n WINDOWS_VISTA: 'windows-vista',\n WINDOWS_7: 'windows-7',\n WINDOWS_8_1: 'windows-8-1',\n WINDOWS_8: 'windows-8',\n WINDOWS_10: 'windows-10',\n WINDOWS_PHONE_7_5: 'windows-phone-7-5',\n WINDOWS_PHONE_8_1: 'windows-phone-8-1',\n WINDOWS_PHONE_10: 'windows-phone-10',\n WINDOWS_NT_4_0: 'windows-nt-4-0',\n MACOSX_15: 'mac-os-x-15',\n MACOSX_14: 'mac-os-x-14',\n MACOSX_13: 'mac-os-x-13',\n MACOSX_12: 'mac-os-x-12',\n MACOSX_11: 'mac-os-x-11',\n MACOSX_10: 'mac-os-x-10',\n MACOSX_9: 'mac-os-x-9',\n MACOSX_8: 'mac-os-x-8',\n MACOSX_7: 'mac-os-x-7',\n MACOSX_6: 'mac-os-x-6',\n MACOSX_5: 'mac-os-x-5',\n MACOSX_4: 'mac-os-x-4',\n MACOSX_3: 'mac-os-x-3',\n MACOSX_2: 'mac-os-x-2',\n MACOSX: 'mac-os-x',\n iOS: 'iOS',\n UNKNOWN: 'unknown'\n};\nconst OS_RE = {\n WINDOWS: { and: [{ or: [/\\bWindows|(Win\\d\\d)\\b/, /\\bWin 9x\\b/] }, { not: /\\bWindows Phone\\b/ }] },\n MAC: { and: [/\\bMac OS\\b/, { not: { or: [/\\biPhone\\b/, /\\bWindows Phone\\b/] } }] },\n IOS: { and: [{ or: [/\\biPad\\b/, /\\biPhone\\b/, /\\biPod\\b/] }, { not: /\\bWindows Phone\\b/ }] },\n ANDROID: { and: [/\\bAndroid\\b/, { not: /\\bWindows Phone\\b/ }] },\n LINUX: /\\bLinux\\b/,\n UNIX: /\\bUNIX\\b/,\n FIREFOX_OS: { and: [/\\bFirefox\\b/, /Mobile\\b/] },\n CHROME_OS: /\\bCrOS\\b/,\n WINDOWS_PHONE: { or: [/\\bIEMobile\\b/, /\\bWindows Phone\\b/] },\n PS4: /\\bMozilla\\/5.0 \\(PlayStation 4\\b/,\n VITA: /\\bMozilla\\/5.0 \\(Play(S|s)tation Vita\\b/\n};\nconst BROWSERS_RE = {\n CHROME: {\n and: [{ or: [/\\bChrome\\b/, /\\bCriOS\\b/, /\\bHeadlessChrome\\b/] }, {\n not: {\n or: [/\\bOPR\\b/, /\\bEdg(e|A|iOS)\\b/, /\\bEdg\\/\\b/, /\\bSamsungBrowser\\b/, /\\bUCBrowser\\b/]\n }\n }]\n },\n FIREFOX: { or: [/\\bFirefox\\b/, /\\bFxiOS\\b/] },\n SAFARI: {\n and: [/^((?!CriOS).)*\\Safari\\b.*$/, {\n not: {\n or: [/\\bOPR\\b/, /\\bEdg(e|A|iOS)\\b/, /\\bEdg\\/\\b/, /\\bWindows Phone\\b/, /\\bSamsungBrowser\\b/, /\\bUCBrowser\\b/]\n }\n }]\n },\n OPERA: { or: [/Opera\\b/, /\\bOPR\\b/] },\n IE: { or: [/\\bMSIE\\b/, /\\bTrident\\b/, /^Mozilla\\/5\\.0 \\(Windows NT 10\\.0; Win64; x64\\)$/] },\n MS_EDGE: { or: [/\\bEdg(e|A|iOS)\\b/] },\n MS_EDGE_CHROMIUM: /\\bEdg\\/\\b/,\n PS4: /\\bMozilla\\/5.0 \\(PlayStation 4\\b/,\n VITA: /\\bMozilla\\/5.0 \\(Play(S|s)tation Vita\\b/,\n FB_MESSANGER: /\\bFBAN\\/MessengerForiOS\\b/,\n SAMSUNG: /\\bSamsungBrowser\\b/,\n UCBROWSER: /\\bUCBrowser\\b/,\n};\nconst DEVICES_RE = Object.assign({}, MOBILES_RE, TABLETS_RE, { FIREFOX_OS: { and: [/\\bFirefox\\b/, /\\bMobile\\b/] }, CHROME_BOOK: /\\bCrOS\\b/, PS4: /\\bMozilla\\/5.0 \\(PlayStation 4\\b/, CHROMECAST: /\\bCrKey\\b/, APPLE_TV: /^iTunes-AppleTV\\/4.1$/, GOOGLE_TV: /\\bGoogleTV\\b/, Tesla: /Tesla\\/([0-9]{4}.[0-9]{1,2}.?[0-9]{0,2}.?[0-9]{0,2})-(.{7})/ });\nconst OS_VERSIONS_RE_MAP = {\n WINDOWS_3_11: /Win16/,\n WINDOWS_95: /(Windows 95|Win95|Windows_95)/,\n WINDOWS_ME: /(Win 9x 4.90|Windows ME)/,\n WINDOWS_98: /(Windows 98|Win98)/,\n WINDOWS_CE: /Windows CE/,\n WINDOWS_2000: /(Windows NT 5.0|Windows 2000)/,\n WINDOWS_XP: /(Windows NT 5.1|Windows XP)/,\n WINDOWS_SERVER_2003: /Windows NT 5.2/,\n WINDOWS_VISTA: /Windows NT 6.0/,\n WINDOWS_7: /(Windows 7|Windows NT 6.1)/,\n WINDOWS_8_1: /(Windows 8.1|Windows NT 6.3)/,\n WINDOWS_8: /(Windows 8|Windows NT 6.2)/,\n WINDOWS_10: /(Windows NT 10.0)/,\n WINDOWS_PHONE_7_5: /(Windows Phone OS 7.5)/,\n WINDOWS_PHONE_8_1: /(Windows Phone 8.1)/,\n WINDOWS_PHONE_10: /(Windows Phone 10)/,\n WINDOWS_NT_4_0: { and: [/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/, { not: /Windows NT 10.0/ }] },\n MACOSX: /(MAC OS X\\s*[^ 0-9])/,\n MACOSX_3: /(Darwin 10.3|Mac OS X 10.3)/,\n MACOSX_4: /(Darwin 10.4|Mac OS X 10.4)/,\n MACOSX_5: /(Mac OS X 10.5)/,\n MACOSX_6: /(Mac OS X 10.6)/,\n MACOSX_7: /(Mac OS X 10.7)/,\n MACOSX_8: /(Mac OS X 10.8)/,\n MACOSX_9: /(Mac OS X 10.9)/,\n MACOSX_10: /(Mac OS X 10.10)/,\n MACOSX_11: /(Mac OS X 10.11)/,\n MACOSX_12: /(Mac OS X 10.12)/,\n MACOSX_13: /(Mac OS X 10.13)/,\n MACOSX_14: /(Mac OS X 10.14)/,\n MACOSX_15: /(Mac OS X 10.15)/,\n iOS: /(iPhone OS\\s*[0-9_]+)/,\n};\nconst BROWSER_VERSIONS_RE_MAP = {\n CHROME: [/\\bChrome\\/([\\d\\.]+)\\b/, /\\bCriOS\\/([\\d\\.]+)\\b/, /\\bHeadlessChrome\\/([\\d\\.]+)\\b/],\n FIREFOX: [/\\bFirefox\\/([\\d\\.]+)\\b/, /\\bFxiOS\\/([\\d\\.]+)\\b/],\n SAFARI: [/\\bVersion\\/([\\d\\.]+)\\b/, /\\bSafari\\/([\\d\\.]+)\\b/],\n OPERA: [/\\bVersion\\/([\\d\\.]+)\\b/, /\\bOPR\\/([\\d\\.]+)\\b/],\n IE: [/\\bMSIE ([\\d\\.]+\\w?)\\b/, /\\brv:([\\d\\.]+\\w?)\\b/],\n MS_EDGE: /\\bEdg(?:e|A|iOS)\\/([\\d\\.]+)\\b/,\n MS_EDGE_CHROMIUM: /\\bEdg\\/([\\d\\.]+)\\b/,\n SAMSUNG: /\\bSamsungBrowser\\/([\\d\\.]+)\\b/,\n UCBROWSER: /\\bUCBrowser\\/([\\d\\.]+)\\b/,\n};\nconst OS_VERSIONS_RE = Object.keys(OS_VERSIONS_RE_MAP).reduce(function (obj, key) {\n obj[key] = OS_VERSIONS_RE_MAP[key];\n return obj;\n}, {});\nconst BROWSER_VERSIONS_RE = Object.keys(BROWSER_VERSIONS_RE_MAP).reduce(function (obj, key) {\n obj[BROWSERS[key]] = BROWSER_VERSIONS_RE_MAP[key];\n return obj;\n}, {});\n\nvar Constants = /*#__PURE__*/Object.freeze({\n BROWSERS: BROWSERS,\n MOBILES_RE: MOBILES_RE,\n TABLETS_RE: TABLETS_RE,\n DEVICES: DEVICES,\n OS: OS,\n OS_VERSIONS: OS_VERSIONS,\n OS_RE: OS_RE,\n BROWSERS_RE: BROWSERS_RE,\n DEVICES_RE: DEVICES_RE,\n OS_VERSIONS_RE_MAP: OS_VERSIONS_RE_MAP,\n BROWSER_VERSIONS_RE_MAP: BROWSER_VERSIONS_RE_MAP,\n OS_VERSIONS_RE: OS_VERSIONS_RE,\n BROWSER_VERSIONS_RE: BROWSER_VERSIONS_RE\n});\n\n/**\n * Created by ahsanayaz on 08/11/2016.\n */\nclass ReTree {\n constructor() {\n }\n test(string, regex) {\n let self = this;\n if (typeof regex === 'string') {\n regex = new RegExp(regex);\n }\n if (regex instanceof RegExp) {\n return regex.test(string);\n }\n else if (regex && Array.isArray(regex.and)) {\n return regex.and.every(function (item) {\n return self.test(string, item);\n });\n }\n else if (regex && Array.isArray(regex.or)) {\n return regex.or.some(function (item) {\n return self.test(string, item);\n });\n }\n else if (regex && regex.not) {\n return !self.test(string, regex.not);\n }\n else {\n return false;\n }\n }\n exec(string, regex) {\n let self = this;\n if (typeof regex === 'string') {\n regex = new RegExp(regex);\n }\n if (regex instanceof RegExp) {\n return regex.exec(string);\n }\n else if (regex && Array.isArray(regex)) {\n return regex.reduce(function (res, item) {\n return (!!res) ? res : self.exec(string, item);\n }, null);\n }\n else {\n return null;\n }\n }\n}\n\nlet DeviceDetectorService = class DeviceDetectorService {\n constructor(platformId) {\n this.platformId = platformId;\n this.ua = '';\n this.userAgent = '';\n this.os = '';\n this.browser = '';\n this.device = '';\n this.os_version = '';\n this.browser_version = '';\n this.reTree = new ReTree();\n if (isPlatformBrowser(this.platformId)) {\n this.userAgent = window.navigator.userAgent;\n }\n this.setDeviceInfo(this.userAgent);\n }\n /**\n * @author Ahsan Ayaz\n * @desc Sets the initial value of the device when the service is initiated.\n * This value is later accessible for usage\n */\n setDeviceInfo(ua = this.userAgent) {\n if (ua !== this.userAgent) {\n this.userAgent = ua;\n }\n let mappings = [\n { const: 'OS', prop: 'os' },\n { const: 'BROWSERS', prop: 'browser' },\n { const: 'DEVICES', prop: 'device' },\n { const: 'OS_VERSIONS', prop: 'os_version' },\n ];\n mappings.forEach((mapping) => {\n this[mapping.prop] = Object.keys(Constants[mapping.const]).reduce((obj, item) => {\n if (Constants[mapping.const][item] === 'device') { // hack for iOS 13 Tablet\n if (isPlatformBrowser(this.platformId) &&\n (!!this.reTree.test(this.userAgent, TABLETS_RE['iPad']) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))) {\n obj[Constants[mapping.const][item]] = 'iPad';\n return Object;\n }\n }\n obj[Constants[mapping.const][item]] = this.reTree.test(ua, Constants[`${mapping.const}_RE`][item]);\n return obj;\n }, {});\n });\n mappings.forEach((mapping) => {\n this[mapping.prop] = Object.keys(Constants[mapping.const])\n .map((key) => {\n return Constants[mapping.const][key];\n }).reduce((previousValue, currentValue) => {\n if (mapping.prop === 'device' && previousValue === Constants[mapping.const].ANDROID) {\n // if we have the actual device found, instead of 'Android', return the actual device\n return (this[mapping.prop][currentValue])\n ? currentValue : previousValue;\n }\n else {\n return (previousValue === Constants[mapping.const].UNKNOWN && this[mapping.prop][currentValue])\n ? currentValue : previousValue;\n }\n }, Constants[mapping.const].UNKNOWN);\n });\n this.browser_version = '0';\n if (this.browser !== BROWSERS.UNKNOWN) {\n let re = BROWSER_VERSIONS_RE[this.browser];\n let res = this.reTree.exec(ua, re);\n if (!!res) {\n this.browser_version = res[1];\n }\n }\n }\n /**\n * @author Ahsan Ayaz\n * @desc Returns the device information\n * @returns the device information object.\n */\n getDeviceInfo() {\n const deviceInfo = {\n userAgent: this.userAgent,\n os: this.os,\n browser: this.browser,\n device: this.device,\n os_version: this.os_version,\n browser_version: this.browser_version\n };\n return deviceInfo;\n }\n /**\n * @author Ahsan Ayaz\n * @desc Compares the current device info with the mobile devices to check\n * if the current device is a mobile and also check current device is tablet so it will return false.\n * @returns whether the current device is a mobile\n */\n isMobile(userAgent = this.userAgent) {\n if (this.isTablet(userAgent)) {\n return false;\n }\n const match = Object.keys(MOBILES_RE).find((mobile) => {\n return this.reTree.test(userAgent, MOBILES_RE[mobile]);\n });\n return !!match;\n }\n ;\n /**\n * @author Ahsan Ayaz\n * @desc Compares the current device info with the tablet devices to check\n * if the current device is a tablet.\n * @returns whether the current device is a tablet\n */\n isTablet(userAgent = this.userAgent) {\n if (isPlatformBrowser(this.platformId) &&\n (!!this.reTree.test(this.userAgent, TABLETS_RE['iPad']) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1))) {\n return true;\n }\n const match = Object.keys(TABLETS_RE).find((mobile) => {\n return !!this.reTree.test(userAgent, TABLETS_RE[mobile]);\n });\n return !!match;\n }\n ;\n /**\n * @author Ahsan Ayaz\n * @desc Compares the current device info with the desktop devices to check\n * if the current device is a desktop device.\n * @returns whether the current device is a desktop device\n */\n isDesktop(userAgent = this.userAgent) {\n const desktopDevices = [\n DEVICES.PS4,\n DEVICES.CHROME_BOOK,\n DEVICES.UNKNOWN\n ];\n if (this.device === DEVICES.UNKNOWN) {\n if (this.isMobile(userAgent) || this.isTablet(userAgent)) {\n return false;\n }\n }\n return desktopDevices.indexOf(this.device) > -1;\n }\n ;\n};\nDeviceDetectorService.ɵfac = function DeviceDetectorService_Factory(t) { return new (t || DeviceDetectorService)(ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nDeviceDetectorService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DeviceDetectorService, factory: function (t) { return DeviceDetectorService.ɵfac(t); } });\nDeviceDetectorService = __decorate([ __param(0, Inject(PLATFORM_ID)),\n __metadata(\"design:paramtypes\", [Object])\n], DeviceDetectorService);\n\nvar DeviceDetectorModule_1;\nlet DeviceDetectorModule = DeviceDetectorModule_1 = class DeviceDetectorModule {\n static forRoot() {\n return {\n ngModule: DeviceDetectorModule_1,\n providers: [DeviceDetectorService]\n };\n }\n};\nDeviceDetectorModule.ɵfac = function DeviceDetectorModule_Factory(t) { return new (t || DeviceDetectorModule)(); };\nDeviceDetectorModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DeviceDetectorModule });\nDeviceDetectorModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DeviceDetectorService, [{\n type: Injectable\n }], function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DeviceDetectorModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DeviceDetectorModule, { imports: function () { return [CommonModule]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BROWSERS, BROWSERS_RE, BROWSER_VERSIONS_RE, BROWSER_VERSIONS_RE_MAP, DEVICES, DEVICES_RE, DeviceDetectorModule, DeviceDetectorService, MOBILES_RE, OS, OS_RE, OS_VERSIONS, OS_VERSIONS_RE, OS_VERSIONS_RE_MAP, ReTree, TABLETS_RE };\n\n","import { __decorate, __param } from 'tslib';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { auditTime, takeUntil, distinctUntilChanged, mapTo } from 'rxjs/operators';\nimport { InjectionToken, EventEmitter, NgZone, KeyValueDiffers, ElementRef, Inject, PLATFORM_ID, Optional, Input, Output, Directive, ChangeDetectorRef, HostBinding, ViewChild, Component, ViewEncapsulation, NgModule } from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction PerfectScrollbarComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵelement(1, \"div\", 4)(2, \"div\", 5)(3, \"div\", 6)(4, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"ps-at-top\", ctx_r0.states.top)(\"ps-at-left\", ctx_r0.states.left)(\"ps-at-right\", ctx_r0.states.right)(\"ps-at-bottom\", ctx_r0.states.bottom);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorY && ctx_r0.interaction);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorX && ctx_r0.interaction);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorX && ctx_r0.interaction);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ps-indicator-show\", ctx_r0.indicatorY && ctx_r0.interaction);\n} }\nconst _c0 = [\"*\"];\nconst PERFECT_SCROLLBAR_CONFIG = new InjectionToken('PERFECT_SCROLLBAR_CONFIG');\nclass Geometry {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n}\nclass Position {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nconst PerfectScrollbarEvents = [\n 'psScrollY',\n 'psScrollX',\n 'psScrollUp',\n 'psScrollDown',\n 'psScrollLeft',\n 'psScrollRight',\n 'psYReachEnd',\n 'psYReachStart',\n 'psXReachEnd',\n 'psXReachStart'\n];\nclass PerfectScrollbarConfig {\n constructor(config = {}) {\n this.assign(config);\n }\n assign(config = {}) {\n for (const key in config) {\n this[key] = config[key];\n }\n }\n}\n\nlet PerfectScrollbarDirective = class PerfectScrollbarDirective {\n constructor(zone, differs, elementRef, platformId, defaults) {\n this.zone = zone;\n this.differs = differs;\n this.elementRef = elementRef;\n this.platformId = platformId;\n this.defaults = defaults;\n this.instance = null;\n this.ro = null;\n this.timeout = null;\n this.animation = null;\n this.configDiff = null;\n this.ngDestroy = new Subject();\n this.disabled = false;\n this.psScrollY = new EventEmitter();\n this.psScrollX = new EventEmitter();\n this.psScrollUp = new EventEmitter();\n this.psScrollDown = new EventEmitter();\n this.psScrollLeft = new EventEmitter();\n this.psScrollRight = new EventEmitter();\n this.psYReachEnd = new EventEmitter();\n this.psYReachStart = new EventEmitter();\n this.psXReachEnd = new EventEmitter();\n this.psXReachStart = new EventEmitter();\n }\n ngOnInit() {\n if (!this.disabled && isPlatformBrowser(this.platformId)) {\n const config = new PerfectScrollbarConfig(this.defaults);\n config.assign(this.config); // Custom configuration\n this.zone.runOutsideAngular(() => {\n this.instance = new PerfectScrollbar(this.elementRef.nativeElement, config);\n });\n if (!this.configDiff) {\n this.configDiff = this.differs.find(this.config || {}).create();\n this.configDiff.diff(this.config || {});\n }\n this.zone.runOutsideAngular(() => {\n this.ro = new ResizeObserver(() => {\n this.update();\n });\n if (this.elementRef.nativeElement.children[0]) {\n this.ro.observe(this.elementRef.nativeElement.children[0]);\n }\n this.ro.observe(this.elementRef.nativeElement);\n });\n this.zone.runOutsideAngular(() => {\n PerfectScrollbarEvents.forEach((eventName) => {\n const eventType = eventName.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`);\n fromEvent(this.elementRef.nativeElement, eventType)\n .pipe(auditTime(20), takeUntil(this.ngDestroy))\n .subscribe((event) => {\n this[eventName].emit(event);\n });\n });\n });\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.complete();\n if (this.ro) {\n this.ro.disconnect();\n }\n if (this.timeout && typeof window !== 'undefined') {\n window.clearTimeout(this.timeout);\n }\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.destroy();\n }\n });\n this.instance = null;\n }\n }\n ngDoCheck() {\n if (!this.disabled && this.configDiff && isPlatformBrowser(this.platformId)) {\n const changes = this.configDiff.diff(this.config || {});\n if (changes) {\n this.ngOnDestroy();\n this.ngOnInit();\n }\n }\n }\n ngOnChanges(changes) {\n if (changes['disabled'] && !changes['disabled'].isFirstChange() && isPlatformBrowser(this.platformId)) {\n if (changes['disabled'].currentValue !== changes['disabled'].previousValue) {\n if (changes['disabled'].currentValue === true) {\n this.ngOnDestroy();\n }\n else if (changes['disabled'].currentValue === false) {\n this.ngOnInit();\n }\n }\n }\n }\n ps() {\n return this.instance;\n }\n update() {\n if (typeof window !== 'undefined') {\n if (this.timeout) {\n window.clearTimeout(this.timeout);\n }\n this.timeout = window.setTimeout(() => {\n if (!this.disabled && this.configDiff) {\n try {\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.update();\n }\n });\n }\n catch (error) {\n // Update can be finished after destroy so catch errors\n }\n }\n }, 0);\n }\n }\n geometry(prefix = 'scroll') {\n return new Geometry(this.elementRef.nativeElement[prefix + 'Left'], this.elementRef.nativeElement[prefix + 'Top'], this.elementRef.nativeElement[prefix + 'Width'], this.elementRef.nativeElement[prefix + 'Height']);\n }\n position(absolute = false) {\n if (!absolute && this.instance) {\n return new Position(this.instance.reach.x || 0, this.instance.reach.y || 0);\n }\n else {\n return new Position(this.elementRef.nativeElement.scrollLeft, this.elementRef.nativeElement.scrollTop);\n }\n }\n scrollable(direction = 'any') {\n const element = this.elementRef.nativeElement;\n if (direction === 'any') {\n return element.classList.contains('ps--active-x') ||\n element.classList.contains('ps--active-y');\n }\n else if (direction === 'both') {\n return element.classList.contains('ps--active-x') &&\n element.classList.contains('ps--active-y');\n }\n else {\n return element.classList.contains('ps--active-' + direction);\n }\n }\n scrollTo(x, y, speed) {\n if (!this.disabled) {\n if (y == null && speed == null) {\n this.animateScrolling('scrollTop', x, speed);\n }\n else {\n if (x != null) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n if (y != null) {\n this.animateScrolling('scrollTop', y, speed);\n }\n }\n }\n }\n scrollToX(x, speed) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n scrollToY(y, speed) {\n this.animateScrolling('scrollTop', y, speed);\n }\n scrollToTop(offset, speed) {\n this.animateScrolling('scrollTop', (offset || 0), speed);\n }\n scrollToLeft(offset, speed) {\n this.animateScrolling('scrollLeft', (offset || 0), speed);\n }\n scrollToRight(offset, speed) {\n const left = this.elementRef.nativeElement.scrollWidth -\n this.elementRef.nativeElement.clientWidth;\n this.animateScrolling('scrollLeft', left - (offset || 0), speed);\n }\n scrollToBottom(offset, speed) {\n const top = this.elementRef.nativeElement.scrollHeight -\n this.elementRef.nativeElement.clientHeight;\n this.animateScrolling('scrollTop', top - (offset || 0), speed);\n }\n scrollToElement(qs, offset, speed) {\n const element = this.elementRef.nativeElement.querySelector(qs);\n if (element) {\n const elementPos = element.getBoundingClientRect();\n const scrollerPos = this.elementRef.nativeElement.getBoundingClientRect();\n if (this.elementRef.nativeElement.classList.contains('ps--active-x')) {\n const currentPos = this.elementRef.nativeElement['scrollLeft'];\n const position = elementPos.left - scrollerPos.left + currentPos;\n this.animateScrolling('scrollLeft', position + (offset || 0), speed);\n }\n if (this.elementRef.nativeElement.classList.contains('ps--active-y')) {\n const currentPos = this.elementRef.nativeElement['scrollTop'];\n const position = elementPos.top - scrollerPos.top + currentPos;\n this.animateScrolling('scrollTop', position + (offset || 0), speed);\n }\n }\n }\n animateScrolling(target, value, speed) {\n if (this.animation) {\n window.cancelAnimationFrame(this.animation);\n this.animation = null;\n }\n if (!speed || typeof window === 'undefined') {\n this.elementRef.nativeElement[target] = value;\n }\n else if (value !== this.elementRef.nativeElement[target]) {\n let newValue = 0;\n let scrollCount = 0;\n let oldTimestamp = performance.now();\n let oldValue = this.elementRef.nativeElement[target];\n const cosParameter = (oldValue - value) / 2;\n const step = (newTimestamp) => {\n scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n // Only continue animation if scroll position has not changed\n if (this.elementRef.nativeElement[target] === oldValue) {\n if (scrollCount >= Math.PI) {\n this.animateScrolling(target, value, 0);\n }\n else {\n this.elementRef.nativeElement[target] = newValue;\n // On a zoomed out page the resulting offset may differ\n oldValue = this.elementRef.nativeElement[target];\n oldTimestamp = newTimestamp;\n this.animation = window.requestAnimationFrame(step);\n }\n }\n };\n window.requestAnimationFrame(step);\n }\n }\n};\nPerfectScrollbarDirective.ɵfac = function PerfectScrollbarDirective_Factory(t) { return new (t || PerfectScrollbarDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(PERFECT_SCROLLBAR_CONFIG, 8)); };\nPerfectScrollbarDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PerfectScrollbarDirective, selectors: [[\"\", \"perfectScrollbar\", \"\"]], inputs: { disabled: \"disabled\", config: [\"perfectScrollbar\", \"config\"] }, outputs: { psScrollY: \"psScrollY\", psScrollX: \"psScrollX\", psScrollUp: \"psScrollUp\", psScrollDown: \"psScrollDown\", psScrollLeft: \"psScrollLeft\", psScrollRight: \"psScrollRight\", psYReachEnd: \"psYReachEnd\", psYReachStart: \"psYReachStart\", psXReachEnd: \"psXReachEnd\", psXReachStart: \"psXReachStart\" }, exportAs: [\"ngxPerfectScrollbar\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nPerfectScrollbarDirective.ctorParameters = () => [\n { type: NgZone },\n { type: KeyValueDiffers },\n { type: ElementRef },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PERFECT_SCROLLBAR_CONFIG,] }] }\n];\n__decorate([\n Input()\n], PerfectScrollbarDirective.prototype, \"disabled\", void 0);\n__decorate([\n Input('perfectScrollbar')\n], PerfectScrollbarDirective.prototype, \"config\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollY\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollX\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollUp\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollDown\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollLeft\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollRight\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psYReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psYReachStart\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psXReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psXReachStart\", void 0);\nPerfectScrollbarDirective = __decorate([ __param(3, Inject(PLATFORM_ID)),\n __param(4, Optional()), __param(4, Inject(PERFECT_SCROLLBAR_CONFIG))\n], PerfectScrollbarDirective);\n\nlet PerfectScrollbarComponent = class PerfectScrollbarComponent {\n constructor(zone, cdRef, platformId) {\n this.zone = zone;\n this.cdRef = cdRef;\n this.platformId = platformId;\n this.states = {};\n this.indicatorX = false;\n this.indicatorY = false;\n this.interaction = false;\n this.scrollPositionX = 0;\n this.scrollPositionY = 0;\n this.scrollDirectionX = 0;\n this.scrollDirectionY = 0;\n this.usePropagationX = false;\n this.usePropagationY = false;\n this.allowPropagationX = false;\n this.allowPropagationY = false;\n this.stateTimeout = null;\n this.ngDestroy = new Subject();\n this.stateUpdate = new Subject();\n this.disabled = false;\n this.usePSClass = true;\n this.autoPropagation = false;\n this.scrollIndicators = false;\n this.psScrollY = new EventEmitter();\n this.psScrollX = new EventEmitter();\n this.psScrollUp = new EventEmitter();\n this.psScrollDown = new EventEmitter();\n this.psScrollLeft = new EventEmitter();\n this.psScrollRight = new EventEmitter();\n this.psYReachEnd = new EventEmitter();\n this.psYReachStart = new EventEmitter();\n this.psXReachEnd = new EventEmitter();\n this.psXReachStart = new EventEmitter();\n }\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.stateUpdate\n .pipe(takeUntil(this.ngDestroy), distinctUntilChanged((a, b) => (a === b && !this.stateTimeout)))\n .subscribe((state) => {\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n this.stateTimeout = null;\n }\n if (state === 'x' || state === 'y') {\n this.interaction = false;\n if (state === 'x') {\n this.indicatorX = false;\n this.states.left = false;\n this.states.right = false;\n if (this.autoPropagation && this.usePropagationX) {\n this.allowPropagationX = false;\n }\n }\n else if (state === 'y') {\n this.indicatorY = false;\n this.states.top = false;\n this.states.bottom = false;\n if (this.autoPropagation && this.usePropagationY) {\n this.allowPropagationY = false;\n }\n }\n }\n else {\n if (state === 'left' || state === 'right') {\n this.states.left = false;\n this.states.right = false;\n this.states[state] = true;\n if (this.autoPropagation && this.usePropagationX) {\n this.indicatorX = true;\n }\n }\n else if (state === 'top' || state === 'bottom') {\n this.states.top = false;\n this.states.bottom = false;\n this.states[state] = true;\n if (this.autoPropagation && this.usePropagationY) {\n this.indicatorY = true;\n }\n }\n if (this.autoPropagation && typeof window !== 'undefined') {\n this.stateTimeout = window.setTimeout(() => {\n this.indicatorX = false;\n this.indicatorY = false;\n this.stateTimeout = null;\n if (this.interaction && (this.states.left || this.states.right)) {\n this.allowPropagationX = true;\n }\n if (this.interaction && (this.states.top || this.states.bottom)) {\n this.allowPropagationY = true;\n }\n this.cdRef.markForCheck();\n }, 500);\n }\n }\n this.cdRef.markForCheck();\n this.cdRef.detectChanges();\n });\n this.zone.runOutsideAngular(() => {\n if (this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n fromEvent(element, 'wheel')\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((event) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollDeltaX = event.deltaX;\n const scrollDeltaY = event.deltaY;\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n }\n });\n fromEvent(element, 'touchmove')\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((event) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollPositionX = event.touches[0].clientX;\n const scrollPositionY = event.touches[0].clientY;\n const scrollDeltaX = scrollPositionX - this.scrollPositionX;\n const scrollDeltaY = scrollPositionY - this.scrollPositionY;\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n this.scrollPositionX = scrollPositionX;\n this.scrollPositionY = scrollPositionY;\n }\n });\n merge(fromEvent(element, 'ps-scroll-x')\n .pipe(mapTo('x')), fromEvent(element, 'ps-scroll-y')\n .pipe(mapTo('y')), fromEvent(element, 'ps-x-reach-end')\n .pipe(mapTo('right')), fromEvent(element, 'ps-y-reach-end')\n .pipe(mapTo('bottom')), fromEvent(element, 'ps-x-reach-start')\n .pipe(mapTo('left')), fromEvent(element, 'ps-y-reach-start')\n .pipe(mapTo('top')))\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((state) => {\n if (!this.disabled && (this.autoPropagation || this.scrollIndicators)) {\n this.stateUpdate.next(state);\n }\n });\n }\n });\n window.setTimeout(() => {\n PerfectScrollbarEvents.forEach((eventName) => {\n if (this.directiveRef) {\n this.directiveRef[eventName] = this[eventName];\n }\n });\n }, 0);\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.unsubscribe();\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n }\n }\n }\n ngDoCheck() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.disabled && this.autoPropagation && this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n this.usePropagationX = element.classList.contains('ps--active-x');\n this.usePropagationY = element.classList.contains('ps--active-y');\n }\n }\n }\n checkPropagation(event, deltaX, deltaY) {\n this.interaction = true;\n const scrollDirectionX = (deltaX < 0) ? -1 : 1;\n const scrollDirectionY = (deltaY < 0) ? -1 : 1;\n if ((this.usePropagationX && this.usePropagationY) ||\n (this.usePropagationX && (!this.allowPropagationX ||\n (this.scrollDirectionX !== scrollDirectionX))) ||\n (this.usePropagationY && (!this.allowPropagationY ||\n (this.scrollDirectionY !== scrollDirectionY)))) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (!!deltaX) {\n this.scrollDirectionX = scrollDirectionX;\n }\n if (!!deltaY) {\n this.scrollDirectionY = scrollDirectionY;\n }\n this.stateUpdate.next('interaction');\n this.cdRef.detectChanges();\n }\n};\nPerfectScrollbarComponent.ɵfac = function PerfectScrollbarComponent_Factory(t) { return new (t || PerfectScrollbarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nPerfectScrollbarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PerfectScrollbarComponent, selectors: [[\"perfect-scrollbar\"]], viewQuery: function PerfectScrollbarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(PerfectScrollbarDirective, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.directiveRef = _t.first);\n } }, hostVars: 4, hostBindings: function PerfectScrollbarComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ps-show-limits\", ctx.autoPropagation)(\"ps-show-active\", ctx.scrollIndicators);\n } }, inputs: { disabled: \"disabled\", usePSClass: \"usePSClass\", autoPropagation: \"autoPropagation\", scrollIndicators: \"scrollIndicators\", config: \"config\" }, outputs: { psScrollY: \"psScrollY\", psScrollX: \"psScrollX\", psScrollUp: \"psScrollUp\", psScrollDown: \"psScrollDown\", psScrollLeft: \"psScrollLeft\", psScrollRight: \"psScrollRight\", psYReachEnd: \"psYReachEnd\", psYReachStart: \"psYReachStart\", psXReachEnd: \"psXReachEnd\", psXReachStart: \"psXReachStart\" }, exportAs: [\"ngxPerfectScrollbar\"], ngContentSelectors: _c0, decls: 4, vars: 5, consts: [[2, \"position\", \"static\", 3, \"perfectScrollbar\", \"disabled\"], [1, \"ps-content\"], [\"class\", \"ps-overlay\", 3, \"ps-at-top\", \"ps-at-left\", \"ps-at-right\", \"ps-at-bottom\", 4, \"ngIf\"], [1, \"ps-overlay\"], [1, \"ps-indicator-top\"], [1, \"ps-indicator-left\"], [1, \"ps-indicator-right\"], [1, \"ps-indicator-bottom\"]], template: function PerfectScrollbarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, PerfectScrollbarComponent_div_3_Template, 5, 16, \"div\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ps\", ctx.usePSClass);\n ɵngcc0.ɵɵproperty(\"perfectScrollbar\", ctx.config)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.scrollIndicators);\n } }, directives: [PerfectScrollbarDirective, ɵngcc1.NgIf], styles: [\"perfect-scrollbar{position:relative;display:block;overflow:hidden;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar[hidden]{display:none}perfect-scrollbar[fxflex]{display:-webkit-box;display:flex;flex-direction:column;height:auto;min-width:0;min-height:0;-webkit-box-direction:column;-webkit-box-orient:column}perfect-scrollbar[fxflex]>.ps{flex:1 1 auto;width:auto;height:auto;min-width:0;min-height:0;-webkit-box-flex:1}perfect-scrollbar[fxlayout]>.ps,perfect-scrollbar[fxlayout]>.ps>.ps-content{display:-webkit-box;display:flex;flex:1 1 auto;flex-direction:inherit;align-items:inherit;align-content:inherit;justify-content:inherit;width:100%;height:100%;-webkit-box-align:inherit;-webkit-box-direction:inherit;-webkit-box-flex:1;-webkit-box-orient:inherit;-webkit-box-pack:inherit},perfect-scrollbar[fxlayout=row]>.ps,perfect-scrollbar[fxlayout=row]>.ps>.ps-content{flex-direction:row!important;-webkit-box-direction:row!important;-webkit-box-orient:row!important}perfect-scrollbar[fxlayout=column]>.ps,perfect-scrollbar[fxlayout=column]>.ps>.ps-content{flex-direction:column!important;-webkit-box-direction:column!important;-webkit-box-orient:column!important}perfect-scrollbar>.ps{position:static;display:block;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar>.ps textarea{-ms-overflow-style:scrollbar}perfect-scrollbar>.ps>.ps-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:block;overflow:hidden;pointer-events:none}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{position:absolute;opacity:0;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{left:0;min-width:100%;min-height:24px}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{top:0;min-width:24px;min-height:100%}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left{left:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{right:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom{bottom:0}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y{top:0!important;right:0!important;left:auto!important;width:10px;cursor:default;-webkit-transition:width .2s linear,opacity .2s linear,background-color .2s linear;transition:width .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y.ps--clicking,perfect-scrollbar>.ps.ps--active-y>.ps__rail-y:hover{width:15px}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x{top:auto!important;bottom:0!important;left:0!important;height:10px;cursor:default;-webkit-transition:height .2s linear,opacity .2s linear,background-color .2s linear;transition:height .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x.ps--clicking,perfect-scrollbar>.ps.ps--active-x>.ps__rail-x:hover{height:15px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-y{margin:0 0 10px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-x{margin:0 10px 0 0}perfect-scrollbar>.ps.ps--scrolling-x>.ps__rail-x,perfect-scrollbar>.ps.ps--scrolling-y>.ps__rail-y{opacity:.9;background-color:#eee}perfect-scrollbar.ps-show-always>.ps.ps--active-x>.ps__rail-x,perfect-scrollbar.ps-show-always>.ps.ps--active-y>.ps__rail-y{opacity:.6}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-top) .ps-indicator-top{opacity:1;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-bottom) .ps-indicator-bottom{opacity:1;background:-webkit-gradient(linear,left bottom,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-left) .ps-indicator-left{opacity:1;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to right,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-right) .ps-indicator-right{opacity:1;background:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to bottom,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom{background:-webkit-gradient(linear,left bottom,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to top,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left{background:-webkit-gradient(linear,left top,right top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to right,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right{background:-webkit-gradient(linear,right top,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to left,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top.ps-indicator-show{opacity:1}\", \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps{overflow:auto!important}}\"], encapsulation: 2 });\nPerfectScrollbarComponent.ctorParameters = () => [\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"usePSClass\", void 0);\n__decorate([\n HostBinding('class.ps-show-limits'),\n Input()\n], PerfectScrollbarComponent.prototype, \"autoPropagation\", void 0);\n__decorate([\n HostBinding('class.ps-show-active'),\n Input()\n], PerfectScrollbarComponent.prototype, \"scrollIndicators\", void 0);\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"config\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollY\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollX\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollUp\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollDown\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollLeft\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollRight\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psYReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psYReachStart\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psXReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psXReachStart\", void 0);\n__decorate([\n ViewChild(PerfectScrollbarDirective, { static: true })\n], PerfectScrollbarComponent.prototype, \"directiveRef\", void 0);\nPerfectScrollbarComponent = __decorate([ __param(2, Inject(PLATFORM_ID))\n], PerfectScrollbarComponent);\n\nlet PerfectScrollbarModule = class PerfectScrollbarModule {\n};\nPerfectScrollbarModule.ɵfac = function PerfectScrollbarModule_Factory(t) { return new (t || PerfectScrollbarModule)(); };\nPerfectScrollbarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PerfectScrollbarModule });\nPerfectScrollbarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule], CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PerfectScrollbarDirective, [{\n type: Directive,\n args: [{\n selector: '[perfectScrollbar]',\n exportAs: 'ngxPerfectScrollbar'\n }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.ElementRef }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [PERFECT_SCROLLBAR_CONFIG]\n }] }]; }, { disabled: [{\n type: Input\n }], psScrollY: [{\n type: Output\n }], psScrollX: [{\n type: Output\n }], psScrollUp: [{\n type: Output\n }], psScrollDown: [{\n type: Output\n }], psScrollLeft: [{\n type: Output\n }], psScrollRight: [{\n type: Output\n }], psYReachEnd: [{\n type: Output\n }], psYReachStart: [{\n type: Output\n }], psXReachEnd: [{\n type: Output\n }], psXReachStart: [{\n type: Output\n }], config: [{\n type: Input,\n args: ['perfectScrollbar']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PerfectScrollbarComponent, [{\n type: Component,\n args: [{\n selector: 'perfect-scrollbar',\n exportAs: 'ngxPerfectScrollbar',\n template: \"
    \\n
    \\n \\n
    \\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\",\n encapsulation: ViewEncapsulation.None,\n styles: [\"perfect-scrollbar{position:relative;display:block;overflow:hidden;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar[hidden]{display:none}perfect-scrollbar[fxflex]{display:-webkit-box;display:flex;flex-direction:column;height:auto;min-width:0;min-height:0;-webkit-box-direction:column;-webkit-box-orient:column}perfect-scrollbar[fxflex]>.ps{flex:1 1 auto;width:auto;height:auto;min-width:0;min-height:0;-webkit-box-flex:1}perfect-scrollbar[fxlayout]>.ps,perfect-scrollbar[fxlayout]>.ps>.ps-content{display:-webkit-box;display:flex;flex:1 1 auto;flex-direction:inherit;align-items:inherit;align-content:inherit;justify-content:inherit;width:100%;height:100%;-webkit-box-align:inherit;-webkit-box-direction:inherit;-webkit-box-flex:1;-webkit-box-orient:inherit;-webkit-box-pack:inherit},perfect-scrollbar[fxlayout=row]>.ps,perfect-scrollbar[fxlayout=row]>.ps>.ps-content{flex-direction:row!important;-webkit-box-direction:row!important;-webkit-box-orient:row!important}perfect-scrollbar[fxlayout=column]>.ps,perfect-scrollbar[fxlayout=column]>.ps>.ps-content{flex-direction:column!important;-webkit-box-direction:column!important;-webkit-box-orient:column!important}perfect-scrollbar>.ps{position:static;display:block;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar>.ps textarea{-ms-overflow-style:scrollbar}perfect-scrollbar>.ps>.ps-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:block;overflow:hidden;pointer-events:none}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{position:absolute;opacity:0;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{left:0;min-width:100%;min-height:24px}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{top:0;min-width:24px;min-height:100%}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left{left:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{right:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom{bottom:0}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y{top:0!important;right:0!important;left:auto!important;width:10px;cursor:default;-webkit-transition:width .2s linear,opacity .2s linear,background-color .2s linear;transition:width .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y.ps--clicking,perfect-scrollbar>.ps.ps--active-y>.ps__rail-y:hover{width:15px}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x{top:auto!important;bottom:0!important;left:0!important;height:10px;cursor:default;-webkit-transition:height .2s linear,opacity .2s linear,background-color .2s linear;transition:height .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x.ps--clicking,perfect-scrollbar>.ps.ps--active-x>.ps__rail-x:hover{height:15px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-y{margin:0 0 10px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-x{margin:0 10px 0 0}perfect-scrollbar>.ps.ps--scrolling-x>.ps__rail-x,perfect-scrollbar>.ps.ps--scrolling-y>.ps__rail-y{opacity:.9;background-color:#eee}perfect-scrollbar.ps-show-always>.ps.ps--active-x>.ps__rail-x,perfect-scrollbar.ps-show-always>.ps.ps--active-y>.ps__rail-y{opacity:.6}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-top) .ps-indicator-top{opacity:1;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-bottom) .ps-indicator-bottom{opacity:1;background:-webkit-gradient(linear,left bottom,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-left) .ps-indicator-left{opacity:1;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to right,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-right) .ps-indicator-right{opacity:1;background:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to bottom,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom{background:-webkit-gradient(linear,left bottom,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to top,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left{background:-webkit-gradient(linear,left top,right top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to right,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right{background:-webkit-gradient(linear,right top,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to left,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top.ps-indicator-show{opacity:1}\", \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps{overflow:auto!important}}\"]\n }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { disabled: [{\n type: Input\n }], usePSClass: [{\n type: Input\n }], autoPropagation: [{\n type: HostBinding,\n args: ['class.ps-show-limits']\n }, {\n type: Input\n }], scrollIndicators: [{\n type: HostBinding,\n args: ['class.ps-show-active']\n }, {\n type: Input\n }], psScrollY: [{\n type: Output\n }], psScrollX: [{\n type: Output\n }], psScrollUp: [{\n type: Output\n }], psScrollDown: [{\n type: Output\n }], psScrollLeft: [{\n type: Output\n }], psScrollRight: [{\n type: Output\n }], psYReachEnd: [{\n type: Output\n }], psYReachStart: [{\n type: Output\n }], psXReachEnd: [{\n type: Output\n }], psXReachStart: [{\n type: Output\n }], config: [{\n type: Input\n }], directiveRef: [{\n type: ViewChild,\n args: [PerfectScrollbarDirective, { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PerfectScrollbarModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [PerfectScrollbarComponent, PerfectScrollbarDirective],\n exports: [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PerfectScrollbarModule, { declarations: function () { return [PerfectScrollbarComponent, PerfectScrollbarDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Geometry, PERFECT_SCROLLBAR_CONFIG, PerfectScrollbarComponent, PerfectScrollbarConfig, PerfectScrollbarDirective, PerfectScrollbarModule, Position };\n\n","import { __decorate, __metadata } from 'tslib';\nimport { ɵɵdefineInjectable, Injectable, ChangeDetectorRef, Input, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction NgxSpinnerComponent_div_0_div_1_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\");\n} }\nfunction NgxSpinnerComponent_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtemplate(1, NgxSpinnerComponent_div_0_div_1_div_1_Template, 1, 0, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassMap(ctx_r1.spinner.class);\n ɵngcc0.ɵɵstyleProp(\"color\", ctx_r1.spinner.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.spinner.divArray);\n} }\nfunction NgxSpinnerComponent_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 6);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.template, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction NgxSpinnerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵtemplate(1, NgxSpinnerComponent_div_0_div_1_Template, 2, 5, \"div\", 2);\n ɵngcc0.ɵɵtemplate(2, NgxSpinnerComponent_div_0_div_2_Template, 1, 1, \"div\", 3);\n ɵngcc0.ɵɵelementStart(3, \"div\", 4);\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx_r0.spinner.bdColor)(\"z-index\", ctx_r0.spinner.zIndex)(\"position\", ctx_r0.spinner.fullScreen ? \"fixed\" : \"absolute\");\n ɵngcc0.ɵɵproperty(\"@fadeIn\", \"in\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"z-index\", ctx_r0.spinner.zIndex);\n} }\nconst _c0 = [\"*\"];\nconst LOADERS = {\n 'ball-8bits': 16,\n 'ball-atom': 4,\n 'ball-beat': 3,\n 'ball-circus': 5,\n 'ball-climbing-dot': 4,\n 'ball-clip-rotate': 1,\n 'ball-clip-rotate-multiple': 2,\n 'ball-clip-rotate-pulse': 2,\n 'ball-elastic-dots': 5,\n 'ball-fall': 3,\n 'ball-fussion': 4,\n 'ball-grid-beat': 9,\n 'ball-grid-pulse': 9,\n 'ball-newton-cradle': 4,\n 'ball-pulse': 3,\n 'ball-pulse-rise': 5,\n 'ball-pulse-sync': 3,\n 'ball-rotate': 1,\n 'ball-running-dots': 5,\n 'ball-scale': 1,\n 'ball-scale-multiple': 3,\n 'ball-scale-pulse': 2,\n 'ball-scale-ripple': 1,\n 'ball-scale-ripple-multiple': 3,\n 'ball-spin': 8,\n 'ball-spin-clockwise': 8,\n 'ball-spin-clockwise-fade': 8,\n 'ball-spin-clockwise-fade-rotating': 8,\n 'ball-spin-fade': 8,\n 'ball-spin-fade-rotating': 8,\n 'ball-spin-rotate': 2,\n 'ball-square-clockwise-spin': 8,\n 'ball-square-spin': 8,\n 'ball-triangle-path': 3,\n 'ball-zig-zag': 2,\n 'ball-zig-zag-deflect': 2,\n 'cog': 1,\n 'cube-transition': 2,\n 'fire': 3,\n 'line-scale': 5,\n 'line-scale-party': 5,\n 'line-scale-pulse-out': 5,\n 'line-scale-pulse-out-rapid': 5,\n 'line-spin-clockwise-fade': 8,\n 'line-spin-clockwise-fade-rotating': 8,\n 'line-spin-fade': 8,\n 'line-spin-fade-rotating': 8,\n 'pacman': 6,\n 'square-jelly-box': 2,\n 'square-loader': 1,\n 'square-spin': 1,\n 'timer': 1,\n 'triangle-skew-spin': 1\n};\nconst DEFAULTS = {\n BD_COLOR: 'rgba(51,51,51,0.8)',\n SPINNER_COLOR: '#fff',\n SPINNER_TYPE: 'ball-scale-multiple',\n Z_INDEX: 99999,\n};\nconst PRIMARY_SPINNER = 'primary';\nclass NgxSpinner {\n constructor(init) {\n Object.assign(this, init);\n }\n}\n\nlet NgxSpinnerService = class NgxSpinnerService {\n /**\n * Creates an instance of NgxSpinnerService.\n * @memberof NgxSpinnerService\n */\n constructor() {\n /**\n * Spinner observable\n *\n * @memberof NgxSpinnerService\n */\n this.spinnerObservable = new ReplaySubject(1);\n }\n /**\n * Get subscription of desired spinner\n * @memberof NgxSpinnerService\n **/\n getSpinner(name) {\n return this.spinnerObservable.asObservable().pipe(filter((x) => x && x.name === name));\n }\n /**\n * To show spinner\n *\n * @memberof NgxSpinnerService\n */\n show(name = PRIMARY_SPINNER, spinner) {\n const showPromise = new Promise((resolve, _reject) => {\n if (spinner && Object.keys(spinner).length) {\n spinner['name'] = name;\n this.spinnerObservable.next(new NgxSpinner(Object.assign(Object.assign({}, spinner), { show: true })));\n resolve(true);\n }\n else {\n this.spinnerObservable.next(new NgxSpinner({ name, show: true }));\n resolve(true);\n }\n });\n return showPromise;\n }\n /**\n * To hide spinner\n *\n * @memberof NgxSpinnerService\n */\n hide(name = PRIMARY_SPINNER, debounce = 0) {\n const hidePromise = new Promise((resolve, _reject) => {\n setTimeout(() => {\n this.spinnerObservable.next(new NgxSpinner({ name, show: false }));\n resolve(true);\n }, debounce);\n });\n return hidePromise;\n }\n};\nNgxSpinnerService.ɵfac = function NgxSpinnerService_Factory(t) { return new (t || NgxSpinnerService)(); };\nNgxSpinnerService.ɵprov = ɵɵdefineInjectable({ factory: function NgxSpinnerService_Factory() { return new NgxSpinnerService(); }, token: NgxSpinnerService, providedIn: \"root\" });\nNgxSpinnerService = __decorate([ __metadata(\"design:paramtypes\", [])\n], NgxSpinnerService);\n\nlet NgxSpinnerComponent = class NgxSpinnerComponent {\n /**\n * Creates an instance of NgxSpinnerComponent.\n *\n * @memberof NgxSpinnerComponent\n */\n constructor(spinnerService, changeDetector) {\n this.spinnerService = spinnerService;\n this.changeDetector = changeDetector;\n /**\n * Spinner Object\n *\n * @memberof NgxSpinnerComponent\n */\n this.spinner = new NgxSpinner();\n /**\n * Unsubscribe from spinner's observable\n *\n * @memberof NgxSpinnerComponent\n **/\n this.ngUnsubscribe = new Subject();\n /**\n * To set default ngx-spinner options\n *\n * @memberof NgxSpinnerComponent\n */\n this.setDefaultOptions = () => {\n this.spinner = new NgxSpinner({\n name: this.name,\n bdColor: this.bdColor,\n size: this.size,\n color: this.color,\n type: this.type,\n fullScreen: this.fullScreen,\n divArray: this.divArray,\n divCount: this.divCount,\n show: this.show,\n zIndex: this.zIndex,\n template: this.template,\n });\n };\n this.bdColor = DEFAULTS.BD_COLOR;\n this.zIndex = DEFAULTS.Z_INDEX;\n this.color = DEFAULTS.SPINNER_COLOR;\n this.type = DEFAULTS.SPINNER_TYPE;\n this.size = 'large';\n this.fullScreen = true;\n this.name = PRIMARY_SPINNER;\n this.template = null;\n this.divArray = [];\n this.divCount = 0;\n this.show = false;\n }\n /**\n * Initialization method\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnInit() {\n this.setDefaultOptions();\n this.spinnerService.getSpinner(this.name)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((spinner) => {\n this.setDefaultOptions();\n Object.assign(this.spinner, spinner);\n if (spinner.show) {\n this.onInputChange();\n }\n this.changeDetector.markForCheck();\n });\n }\n /**\n * On changes event for input variables\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnChanges(changes) {\n for (const propName in changes) {\n if (propName) {\n const changedProp = changes[propName];\n if (changedProp.isFirstChange()) {\n return;\n }\n else if (typeof changedProp.currentValue !== 'undefined' && changedProp.currentValue !== changedProp.previousValue) {\n if (changedProp.currentValue !== '') {\n this.spinner[propName] = changedProp.currentValue;\n }\n }\n }\n }\n }\n /**\n * To get class for spinner\n *\n * @memberof NgxSpinnerComponent\n */\n getClass(type, size) {\n this.spinner.divCount = LOADERS[type];\n this.spinner.divArray = Array(this.spinner.divCount).fill(0).map((x, i) => i);\n let sizeClass = '';\n switch (size.toLowerCase()) {\n case 'small':\n sizeClass = 'la-sm';\n break;\n case 'medium':\n sizeClass = 'la-2x';\n break;\n case 'large':\n sizeClass = 'la-3x';\n break;\n default:\n break;\n }\n return 'la-' + type + ' ' + sizeClass;\n }\n /**\n * Check if input variables have changed\n *\n * @memberof NgxSpinnerComponent\n */\n onInputChange() {\n this.spinner.class = this.getClass(this.spinner.type, this.spinner.size);\n }\n /**\n * Component destroy event\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n};\nNgxSpinnerComponent.ɵfac = function NgxSpinnerComponent_Factory(t) { return new (t || NgxSpinnerComponent)(ɵngcc0.ɵɵdirectiveInject(NgxSpinnerService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgxSpinnerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxSpinnerComponent, selectors: [[\"ngx-spinner\"]], inputs: { bdColor: \"bdColor\", zIndex: \"zIndex\", color: \"color\", type: \"type\", size: \"size\", fullScreen: \"fullScreen\", name: \"name\", template: \"template\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 1, consts: [[\"class\", \"overlay\", 3, \"background-color\", \"z-index\", \"position\", 4, \"ngIf\"], [1, \"overlay\"], [3, \"class\", \"color\", 4, \"ngIf\"], [3, \"innerHTML\", 4, \"ngIf\"], [1, \"loading-text\"], [4, \"ngFor\", \"ngForOf\"], [3, \"innerHTML\"]], template: function NgxSpinnerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgxSpinnerComponent_div_0_Template, 5, 11, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinner.show);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf], styles: [\".la-ball-8bits[_ngcontent-%COMP%], .la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-8bits[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:12px;height:12px}.la-ball-8bits.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:4px;height:4px;border-radius:0;opacity:0;-webkit-transform:translate(100%,100%);transform:translate(100%,100%);-webkit-animation:1s infinite ball-8bits;animation:1s infinite ball-8bits}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:-.9375s;animation-delay:-.9375s;top:-100%;left:0}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-.875s;animation-delay:-.875s;top:-100%;left:33.3333333333%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-.8125s;animation-delay:-.8125s;top:-66.6666666667%;left:66.6666666667%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-delay:-.75s;animation-delay:-.75s;top:-33.3333333333%;left:100%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-delay:-.6875s;animation-delay:-.6875s;top:0;left:100%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){-webkit-animation-delay:-.625s;animation-delay:-.625s;top:33.3333333333%;left:100%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){-webkit-animation-delay:-.5625s;animation-delay:-.5625s;top:66.6666666667%;left:66.6666666667%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){-webkit-animation-delay:-.5s;animation-delay:-.5s;top:100%;left:33.3333333333%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(9){-webkit-animation-delay:-.4375s;animation-delay:-.4375s;top:100%;left:0}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(10){-webkit-animation-delay:-.375s;animation-delay:-.375s;top:100%;left:-33.3333333333%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(11){-webkit-animation-delay:-.3125s;animation-delay:-.3125s;top:66.6666666667%;left:-66.6666666667%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(12){-webkit-animation-delay:-.25s;animation-delay:-.25s;top:33.3333333333%;left:-100%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(13){-webkit-animation-delay:-.1875s;animation-delay:-.1875s;top:0;left:-100%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(14){-webkit-animation-delay:-.125s;animation-delay:-.125s;top:-33.3333333333%;left:-100%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(15){-webkit-animation-delay:-.0625s;animation-delay:-.0625s;top:-66.6666666667%;left:-66.6666666667%}.la-ball-8bits[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(16){-webkit-animation-delay:0s;animation-delay:0s;top:-100%;left:-33.3333333333%}.la-ball-8bits.la-sm[_ngcontent-%COMP%]{width:6px;height:6px}.la-ball-8bits.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:2px;height:2px}.la-ball-8bits.la-2x[_ngcontent-%COMP%]{width:24px;height:24px}.la-ball-8bits.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:8px;height:8px}.la-ball-8bits.la-3x[_ngcontent-%COMP%]{width:36px;height:36px}.la-ball-8bits.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:12px;height:12px}@-webkit-keyframes ball-8bits{0%,50%{opacity:1}51%{opacity:0}}@keyframes ball-8bits{0%,50%{opacity:1}51%{opacity:0}}.la-ball-atom[_ngcontent-%COMP%], .la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-atom[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-atom.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){position:absolute;top:50%;left:50%;z-index:1;width:60%;height:60%;background:#aaa;border-radius:100%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-animation:4.5s linear infinite ball-atom-shrink;animation:4.5s linear infinite ball-atom-shrink}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)){position:absolute;left:0;z-index:0;width:100%;height:100%;background:0 0;-webkit-animation:1.5s steps(2,end) infinite ball-atom-zindex;animation:1.5s steps(2,end) infinite ball-atom-zindex}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)):before{position:absolute;top:0;left:0;width:10px;height:10px;margin-top:-5px;margin-left:-5px;content:\\\"\\\";background:currentColor;border-radius:50%;opacity:.75;-webkit-animation:1.5s infinite ball-atom-position,1.5s infinite ball-atom-size;animation:1.5s infinite ball-atom-position,1.5s infinite ball-atom-size}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:.75s;animation-delay:.75s}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2):before{-webkit-animation-delay:0s,-1.125s;animation-delay:0s,-1.125s}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-transform:rotate(120deg);transform:rotate(120deg);-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3):before{-webkit-animation-delay:-1s,-.75s;animation-delay:-1s,-.75s}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-transform:rotate(240deg);transform:rotate(240deg);-webkit-animation-delay:.25s;animation-delay:.25s}.la-ball-atom[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4):before{-webkit-animation-delay:-.5s,-125ms;animation-delay:-.5s,-125ms}.la-ball-atom.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-atom.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)):before{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-atom.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-atom.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)):before{width:20px;height:20px;margin-top:-10px;margin-left:-10px}.la-ball-atom.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-atom.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)):before{width:30px;height:30px;margin-top:-15px;margin-left:-15px}@-webkit-keyframes ball-atom-position{50%{top:100%;left:100%}}@keyframes ball-atom-position{50%{top:100%;left:100%}}@-webkit-keyframes ball-atom-size{50%{-webkit-transform:scale(.5,.5);transform:scale(.5,.5)}}@keyframes ball-atom-size{50%{-webkit-transform:scale(.5,.5);transform:scale(.5,.5)}}@-webkit-keyframes ball-atom-zindex{50%{z-index:10}}@keyframes ball-atom-zindex{50%{z-index:10}}@-webkit-keyframes ball-atom-shrink{50%{-webkit-transform:translate(-50%,-50%) scale(.8,.8);transform:translate(-50%,-50%) scale(.8,.8)}}@keyframes ball-atom-shrink{50%{-webkit-transform:translate(-50%,-50%) scale(.8,.8);transform:translate(-50%,-50%) scale(.8,.8)}}.la-ball-beat[_ngcontent-%COMP%], .la-ball-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-beat[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-beat.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;-webkit-animation:.7s linear -.15s infinite ball-beat;animation:.7s linear -.15s infinite ball-beat}.la-ball-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2n-1){-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-beat.la-sm[_ngcontent-%COMP%]{width:26px;height:8px}.la-ball-beat.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin:2px}.la-ball-beat.la-2x[_ngcontent-%COMP%]{width:108px;height:36px}.la-ball-beat.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin:8px}.la-ball-beat.la-3x[_ngcontent-%COMP%]{width:162px;height:54px}.la-ball-beat.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-beat{50%{opacity:.2;-webkit-transform:scale(.75);transform:scale(.75)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-beat{50%{opacity:.2;-webkit-transform:scale(.75);transform:scale(.75)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-circus[_ngcontent-%COMP%], .la-ball-circus[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-circus[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:16px;height:16px}.la-ball-circus.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-circus[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:-100%;display:block;width:100%;height:100%;border-radius:100%;opacity:.5;-webkit-animation:2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-position,2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-size;animation:2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-position,2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-size}.la-ball-circus[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:0s,-.5s;animation-delay:0s,-.5s}.la-ball-circus[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-.5s,-1s;animation-delay:-.5s,-1s}.la-ball-circus[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-1s,-1.5s;animation-delay:-1s,-1.5s}.la-ball-circus[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-delay:-1.5s,-2s;animation-delay:-1.5s,-2s}.la-ball-circus[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-delay:-2s,-2.5s;animation-delay:-2s,-2.5s}.la-ball-circus.la-sm[_ngcontent-%COMP%], .la-ball-circus.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:8px;height:8px}.la-ball-circus.la-2x[_ngcontent-%COMP%], .la-ball-circus.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:32px;height:32px}.la-ball-circus.la-3x[_ngcontent-%COMP%], .la-ball-circus.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:48px;height:48px}@-webkit-keyframes ball-circus-position{50%{left:100%}}@keyframes ball-circus-position{50%{left:100%}}@-webkit-keyframes ball-circus-size{50%{-webkit-transform:scale(.3,.3);transform:scale(.3,.3)}}@keyframes ball-circus-size{50%{-webkit-transform:scale(.3,.3);transform:scale(.3,.3)}}.la-ball-climbing-dot[_ngcontent-%COMP%], .la-ball-climbing-dot[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-climbing-dot[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:42px;height:32px}.la-ball-climbing-dot.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-climbing-dot[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-climbing-dot[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){position:absolute;bottom:32%;left:18%;width:14px;height:14px;border-radius:100%;-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation:.6s ease-in-out infinite ball-climbing-dot-jump;animation:.6s ease-in-out infinite ball-climbing-dot-jump}.la-ball-climbing-dot[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)){position:absolute;top:0;right:0;width:14px;height:2px;border-radius:0;-webkit-transform:translate(60%,0);transform:translate(60%,0);-webkit-animation:1.8s linear infinite ball-climbing-dot-steps;animation:1.8s linear infinite ball-climbing-dot-steps}.la-ball-climbing-dot[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)):nth-child(2){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-climbing-dot[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)):nth-child(3){-webkit-animation-delay:-.6s;animation-delay:-.6s}.la-ball-climbing-dot[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)):nth-child(4){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-ball-climbing-dot.la-sm[_ngcontent-%COMP%]{width:20px;height:16px}.la-ball-climbing-dot.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){width:6px;height:6px}.la-ball-climbing-dot.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)){width:6px;height:1px}.la-ball-climbing-dot.la-2x[_ngcontent-%COMP%]{width:84px;height:64px}.la-ball-climbing-dot.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){width:28px;height:28px}.la-ball-climbing-dot.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)){width:28px;height:4px}.la-ball-climbing-dot.la-3x[_ngcontent-%COMP%]{width:126px;height:96px}.la-ball-climbing-dot.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){width:42px;height:42px}.la-ball-climbing-dot.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:nth-child(1)){width:42px;height:6px}@-webkit-keyframes ball-climbing-dot-jump{0%,100%{-webkit-transform:scale(1,.7);transform:scale(1,.7)}20%,80%,90%{-webkit-transform:scale(.7,1.2);transform:scale(.7,1.2)}40%,46%{-webkit-transform:scale(1,1);transform:scale(1,1)}50%{bottom:125%}}@keyframes ball-climbing-dot-jump{0%,100%{-webkit-transform:scale(1,.7);transform:scale(1,.7)}20%,80%,90%{-webkit-transform:scale(.7,1.2);transform:scale(.7,1.2)}40%,46%{-webkit-transform:scale(1,1);transform:scale(1,1)}50%{bottom:125%}}@-webkit-keyframes ball-climbing-dot-steps{0%{top:0;right:0;opacity:0}50%{opacity:1}100%{top:100%;right:100%;opacity:0}}@keyframes ball-climbing-dot-steps{0%{top:0;right:0;opacity:0}50%{opacity:1}100%{top:100%;right:100%;opacity:0}}.la-ball-clip-rotate-multiple[_ngcontent-%COMP%], .la-ball-clip-rotate-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-clip-rotate-multiple[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-clip-rotate-multiple.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-clip-rotate-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:2px solid currentColor;position:absolute;top:50%;left:50%;background:0 0;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-clip-rotate-multiple-rotate;animation:1s ease-in-out infinite ball-clip-rotate-multiple-rotate}.la-ball-clip-rotate-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{position:absolute;width:32px;height:32px;border-right-color:transparent;border-left-color:transparent}.la-ball-clip-rotate-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:16px;height:16px;border-top-color:transparent;border-bottom-color:transparent;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-direction:reverse;animation-direction:reverse}.la-ball-clip-rotate-multiple.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-clip-rotate-multiple.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:1px}.la-ball-clip-rotate-multiple.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{width:16px;height:16px}.la-ball-clip-rotate-multiple.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:8px;height:8px}.la-ball-clip-rotate-multiple.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-clip-rotate-multiple.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:4px}.la-ball-clip-rotate-multiple.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{width:64px;height:64px}.la-ball-clip-rotate-multiple.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:32px;height:32px}.la-ball-clip-rotate-multiple.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-clip-rotate-multiple.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:6px}.la-ball-clip-rotate-multiple.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{width:96px;height:96px}.la-ball-clip-rotate-multiple.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:48px;height:48px}@-webkit-keyframes ball-clip-rotate-multiple-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}@keyframes ball-clip-rotate-multiple-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}.la-ball-clip-rotate-pulse[_ngcontent-%COMP%], .la-ball-clip-rotate-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-clip-rotate-pulse[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-clip-rotate-pulse.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-clip-rotate-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;border-radius:100%}.la-ball-clip-rotate-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{position:absolute;width:32px;height:32px;background:0 0;border-style:solid;border-width:2px;border-right-color:transparent;border-left-color:transparent;-webkit-animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-rotate;animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-rotate}.la-ball-clip-rotate-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:16px;height:16px;-webkit-animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-scale;animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-scale}.la-ball-clip-rotate-pulse.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-clip-rotate-pulse.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{width:16px;height:16px;border-width:1px}.la-ball-clip-rotate-pulse.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:8px;height:8px}.la-ball-clip-rotate-pulse.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-clip-rotate-pulse.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{width:64px;height:64px;border-width:4px}.la-ball-clip-rotate-pulse.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:32px;height:32px}.la-ball-clip-rotate-pulse.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-clip-rotate-pulse.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{width:96px;height:96px;border-width:6px}.la-ball-clip-rotate-pulse.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{width:48px;height:48px}@-webkit-keyframes ball-clip-rotate-pulse-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}@keyframes ball-clip-rotate-pulse-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}@-webkit-keyframes ball-clip-rotate-pulse-scale{0%,100%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}30%{opacity:.3;-webkit-transform:translate(-50%,-50%) scale(.15);transform:translate(-50%,-50%) scale(.15)}}@keyframes ball-clip-rotate-pulse-scale{0%,100%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}30%{opacity:.3;-webkit-transform:translate(-50%,-50%) scale(.15);transform:translate(-50%,-50%) scale(.15)}}.la-ball-clip-rotate[_ngcontent-%COMP%], .la-ball-clip-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-clip-rotate[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-clip-rotate.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-clip-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:2px solid currentColor;width:32px;height:32px;background:0 0;border-bottom-color:transparent;border-radius:100%;-webkit-animation:.75s linear infinite ball-clip-rotate;animation:.75s linear infinite ball-clip-rotate}.la-ball-clip-rotate.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-clip-rotate.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;border-width:1px}.la-ball-clip-rotate.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-clip-rotate.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:64px;height:64px;border-width:4px}.la-ball-clip-rotate.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-clip-rotate.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-ball-elastic-dots[_ngcontent-%COMP%], .la-ball-elastic-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-elastic-dots[_ngcontent-%COMP%]{display:block;color:#fff;width:120px;height:10px;font-size:0;text-align:center}.la-ball-elastic-dots.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-elastic-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{float:none;background-color:currentColor;border:0 solid currentColor;display:inline-block;width:10px;height:10px;white-space:nowrap;border-radius:100%;-webkit-animation:1s infinite ball-elastic-dots-anim;animation:1s infinite ball-elastic-dots-anim}.la-ball-elastic-dots.la-sm[_ngcontent-%COMP%]{width:60px;height:4px}.la-ball-elastic-dots.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px}.la-ball-elastic-dots.la-2x[_ngcontent-%COMP%]{width:240px;height:20px}.la-ball-elastic-dots.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px}.la-ball-elastic-dots.la-3x[_ngcontent-%COMP%]{width:360px;height:30px}.la-ball-elastic-dots.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px}@-webkit-keyframes ball-elastic-dots-anim{0%,100%{margin:0;-webkit-transform:scale(1);transform:scale(1)}50%{margin:0 5%;-webkit-transform:scale(.65);transform:scale(.65)}}@keyframes ball-elastic-dots-anim{0%,100%{margin:0;-webkit-transform:scale(1);transform:scale(1)}50%{margin:0 5%;-webkit-transform:scale(.65);transform:scale(.65)}}.la-ball-fall[_ngcontent-%COMP%], .la-ball-fall[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-fall[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-fall.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-fall[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;opacity:0;-webkit-animation:1s ease-in-out infinite ball-fall;animation:1s ease-in-out infinite ball-fall}.la-ball-fall[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:-.2s;animation-delay:-.2s}.la-ball-fall[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-.1s;animation-delay:-.1s}.la-ball-fall[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-fall.la-sm[_ngcontent-%COMP%]{width:26px;height:8px}.la-ball-fall.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin:2px}.la-ball-fall.la-2x[_ngcontent-%COMP%]{width:108px;height:36px}.la-ball-fall.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin:8px}.la-ball-fall.la-3x[_ngcontent-%COMP%]{width:162px;height:54px}.la-ball-fall.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-fall{0%{opacity:0;-webkit-transform:translateY(-145%);transform:translateY(-145%)}10%,90%{opacity:.5}20%,80%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(145%);transform:translateY(145%)}}@keyframes ball-fall{0%{opacity:0;-webkit-transform:translateY(-145%);transform:translateY(-145%)}10%,90%{opacity:.5}20%,80%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(145%);transform:translateY(145%)}}.la-ball-fussion[_ngcontent-%COMP%], .la-ball-fussion[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-fussion[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:8px;height:8px}.la-ball-fussion.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-fussion[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:12px;height:12px;border-radius:100%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-animation:1s infinite ball-fussion-ball1;animation:1s infinite ball-fussion-ball1}.la-ball-fussion[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:0;left:50%;z-index:1}.la-ball-fussion[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:50%;left:100%;z-index:2;-webkit-animation-name:ball-fussion-ball2;animation-name:ball-fussion-ball2}.la-ball-fussion[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:100%;left:50%;z-index:1;-webkit-animation-name:ball-fussion-ball3;animation-name:ball-fussion-ball3}.la-ball-fussion[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:50%;left:0;z-index:2;-webkit-animation-name:ball-fussion-ball4;animation-name:ball-fussion-ball4}.la-ball-fussion.la-sm[_ngcontent-%COMP%]{width:4px;height:4px}.la-ball-fussion.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:6px}.la-ball-fussion.la-2x[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-fussion.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .la-ball-fussion.la-3x[_ngcontent-%COMP%]{width:24px;height:24px}.la-ball-fussion.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:36px;height:36px}@-webkit-keyframes ball-fussion-ball1{0%{opacity:.35}50%{top:-100%;left:200%;opacity:1}100%{top:50%;left:100%;z-index:2;opacity:.35}}@keyframes ball-fussion-ball1{0%{opacity:.35}50%{top:-100%;left:200%;opacity:1}100%{top:50%;left:100%;z-index:2;opacity:.35}}@-webkit-keyframes ball-fussion-ball2{0%{opacity:.35}50%{top:200%;left:200%;opacity:1}100%{top:100%;left:50%;z-index:1;opacity:.35}}@keyframes ball-fussion-ball2{0%{opacity:.35}50%{top:200%;left:200%;opacity:1}100%{top:100%;left:50%;z-index:1;opacity:.35}}@-webkit-keyframes ball-fussion-ball3{0%{opacity:.35}50%{top:200%;left:-100%;opacity:1}100%{top:50%;left:0;z-index:2;opacity:.35}}@keyframes ball-fussion-ball3{0%{opacity:.35}50%{top:200%;left:-100%;opacity:1}100%{top:50%;left:0;z-index:2;opacity:.35}}@-webkit-keyframes ball-fussion-ball4{0%{opacity:.35}50%{top:-100%;left:-100%;opacity:1}100%{top:0;left:50%;z-index:1;opacity:.35}}@keyframes ball-fussion-ball4{0%{opacity:.35}50%{top:-100%;left:-100%;opacity:1}100%{top:0;left:50%;z-index:1;opacity:.35}}.la-ball-grid-beat[_ngcontent-%COMP%], .la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-grid-beat[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:36px;height:36px}.la-ball-grid-beat.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:8px;height:8px;margin:2px;border-radius:100%;-webkit-animation-name:ball-grid-beat;animation-name:ball-grid-beat;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-duration:.65s;animation-duration:.65s;-webkit-animation-delay:.03s;animation-delay:.03s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-duration:1.02s;animation-duration:1.02s;-webkit-animation-delay:.09s;animation-delay:.09s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-duration:1.06s;animation-duration:1.06s;-webkit-animation-delay:-.69s;animation-delay:-.69s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-delay:-.41s;animation-delay:-.41s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-duration:1.6s;animation-duration:1.6s;-webkit-animation-delay:.04s;animation-delay:.04s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){-webkit-animation-duration:.84s;animation-duration:.84s;-webkit-animation-delay:.07s;animation-delay:.07s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){-webkit-animation-duration:.68s;animation-duration:.68s;-webkit-animation-delay:-.66s;animation-delay:-.66s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){-webkit-animation-duration:.93s;animation-duration:.93s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-beat[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(9){-webkit-animation-duration:1.24s;animation-duration:1.24s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-beat.la-sm[_ngcontent-%COMP%]{width:18px;height:18px}.la-ball-grid-beat.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin:1px}.la-ball-grid-beat.la-2x[_ngcontent-%COMP%]{width:72px;height:72px}.la-ball-grid-beat.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin:4px}.la-ball-grid-beat.la-3x[_ngcontent-%COMP%]{width:108px;height:108px}.la-ball-grid-beat.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin:6px}@-webkit-keyframes ball-grid-beat{0%,100%{opacity:1}50%{opacity:.35}}@keyframes ball-grid-beat{0%,100%{opacity:1}50%{opacity:.35}}.la-ball-grid-pulse[_ngcontent-%COMP%], .la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-grid-pulse[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:36px;height:36px}.la-ball-grid-pulse.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:8px;height:8px;margin:2px;border-radius:100%;-webkit-animation-name:ball-grid-pulse;animation-name:ball-grid-pulse;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-duration:.65s;animation-duration:.65s;-webkit-animation-delay:.03s;animation-delay:.03s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-duration:1.02s;animation-duration:1.02s;-webkit-animation-delay:.09s;animation-delay:.09s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-duration:1.06s;animation-duration:1.06s;-webkit-animation-delay:-.69s;animation-delay:-.69s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-delay:-.41s;animation-delay:-.41s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-duration:1.6s;animation-duration:1.6s;-webkit-animation-delay:.04s;animation-delay:.04s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){-webkit-animation-duration:.84s;animation-duration:.84s;-webkit-animation-delay:.07s;animation-delay:.07s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){-webkit-animation-duration:.68s;animation-duration:.68s;-webkit-animation-delay:-.66s;animation-delay:-.66s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){-webkit-animation-duration:.93s;animation-duration:.93s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(9){-webkit-animation-duration:1.24s;animation-duration:1.24s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-pulse.la-sm[_ngcontent-%COMP%]{width:18px;height:18px}.la-ball-grid-pulse.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin:1px}.la-ball-grid-pulse.la-2x[_ngcontent-%COMP%]{width:72px;height:72px}.la-ball-grid-pulse.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin:4px}.la-ball-grid-pulse.la-3x[_ngcontent-%COMP%]{width:108px;height:108px}.la-ball-grid-pulse.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin:6px}@-webkit-keyframes ball-grid-pulse{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.35;-webkit-transform:scale(.45);transform:scale(.45)}}@keyframes ball-grid-pulse{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.35;-webkit-transform:scale(.45);transform:scale(.45)}}.la-ball-newton-cradle[_ngcontent-%COMP%], .la-ball-newton-cradle[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-newton-cradle[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:40px;height:10px}.la-ball-newton-cradle.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-newton-cradle[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;border-radius:100%}.la-ball-newton-cradle[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{-webkit-transform:translateX(0);transform:translateX(0);-webkit-animation:1s ease-out infinite ball-newton-cradle-left;animation:1s ease-out infinite ball-newton-cradle-left}.la-ball-newton-cradle[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{-webkit-transform:translateX(0);transform:translateX(0);-webkit-animation:1s ease-out infinite ball-newton-cradle-right;animation:1s ease-out infinite ball-newton-cradle-right}.la-ball-newton-cradle.la-sm[_ngcontent-%COMP%]{width:20px;height:4px}.la-ball-newton-cradle.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px}.la-ball-newton-cradle.la-2x[_ngcontent-%COMP%]{width:80px;height:20px}.la-ball-newton-cradle.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px}.la-ball-newton-cradle.la-3x[_ngcontent-%COMP%]{width:120px;height:30px}.la-ball-newton-cradle.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px}@-webkit-keyframes ball-newton-cradle-left{25%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes ball-newton-cradle-left{25%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes ball-newton-cradle-right{100%,50%{-webkit-transform:translateX(0);transform:translateX(0)}75%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes ball-newton-cradle-right{100%,50%{-webkit-transform:translateX(0);transform:translateX(0)}75%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.la-ball-pulse-rise[_ngcontent-%COMP%], .la-ball-pulse-rise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-pulse-rise[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:70px;height:14px}.la-ball-pulse-rise.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-pulse-rise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:2px;border-radius:100%;-webkit-animation:1s cubic-bezier(.15,.36,.9,.6) infinite ball-pulse-rise-even;animation:1s cubic-bezier(.15,.36,.9,.6) infinite ball-pulse-rise-even}.la-ball-pulse-rise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2n-1){-webkit-animation-name:ball-pulse-rise-odd;animation-name:ball-pulse-rise-odd}.la-ball-pulse-rise.la-sm[_ngcontent-%COMP%]{width:34px;height:6px}.la-ball-pulse-rise.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin:1px}.la-ball-pulse-rise.la-2x[_ngcontent-%COMP%]{width:140px;height:28px}.la-ball-pulse-rise.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin:4px}.la-ball-pulse-rise.la-3x[_ngcontent-%COMP%]{width:210px;height:42px}.la-ball-pulse-rise.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin:6px}@-webkit-keyframes ball-pulse-rise-even{0%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}25%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}50%{opacity:.35;-webkit-transform:scale(.3);transform:scale(.3)}75%{-webkit-transform:translateY(200%);transform:translateY(200%)}100%{opacity:1;-webkit-transform:translateY(0);-webkit-transform:scale(1);transform:translateY(0);transform:scale(1)}}@keyframes ball-pulse-rise-even{0%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}25%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}50%{opacity:.35;-webkit-transform:scale(.3);transform:scale(.3)}75%{-webkit-transform:translateY(200%);transform:translateY(200%)}100%{opacity:1;-webkit-transform:translateY(0);-webkit-transform:scale(1);transform:translateY(0);transform:scale(1)}}@-webkit-keyframes ball-pulse-rise-odd{0%{opacity:.35;-webkit-transform:scale(.4);transform:scale(.4)}25%{-webkit-transform:translateY(200%);transform:translateY(200%)}50%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}75%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}100%{opacity:.35;-webkit-transform:translateY(0);-webkit-transform:scale(.75);transform:translateY(0);transform:scale(.75)}}@keyframes ball-pulse-rise-odd{0%{opacity:.35;-webkit-transform:scale(.4);transform:scale(.4)}25%{-webkit-transform:translateY(200%);transform:translateY(200%)}50%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}75%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}100%{opacity:.35;-webkit-transform:translateY(0);-webkit-transform:scale(.75);transform:translateY(0);transform:scale(.75)}}.la-ball-pulse-sync[_ngcontent-%COMP%], .la-ball-pulse-sync[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-pulse-sync[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-pulse-sync.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-pulse-sync[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;-webkit-animation:.6s ease-in-out infinite ball-pulse-sync;animation:.6s ease-in-out infinite ball-pulse-sync}.la-ball-pulse-sync[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:-.14s;animation-delay:-.14s}.la-ball-pulse-sync[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-.07s;animation-delay:-.07s}.la-ball-pulse-sync[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-pulse-sync.la-sm[_ngcontent-%COMP%]{width:26px;height:8px}.la-ball-pulse-sync.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin:2px}.la-ball-pulse-sync.la-2x[_ngcontent-%COMP%]{width:108px;height:36px}.la-ball-pulse-sync.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin:8px}.la-ball-pulse-sync.la-3x[_ngcontent-%COMP%]{width:162px;height:54px}.la-ball-pulse-sync.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-pulse-sync{33%{-webkit-transform:translateY(100%);transform:translateY(100%)}66%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes ball-pulse-sync{33%{-webkit-transform:translateY(100%);transform:translateY(100%)}66%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.la-ball-pulse[_ngcontent-%COMP%], .la-ball-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-pulse[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-pulse.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;-webkit-animation:1s infinite ball-pulse;animation:1s infinite ball-pulse}.la-ball-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:-.2s;animation-delay:-.2s}.la-ball-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-.1s;animation-delay:-.1s}.la-ball-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-pulse.la-sm[_ngcontent-%COMP%]{width:26px;height:8px}.la-ball-pulse.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin:2px}.la-ball-pulse.la-2x[_ngcontent-%COMP%]{width:108px;height:36px}.la-ball-pulse.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin:8px}.la-ball-pulse.la-3x[_ngcontent-%COMP%]{width:162px;height:54px}.la-ball-pulse.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-pulse{0%,100%,60%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}30%{opacity:.1;-webkit-transform:scale(.01);transform:scale(.01)}}@keyframes ball-pulse{0%,100%,60%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}30%{opacity:.1;-webkit-transform:scale(.01);transform:scale(.01)}}.la-ball-rotate[_ngcontent-%COMP%], .la-ball-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-rotate[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:10px;height:10px}.la-ball-rotate.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;border-radius:100%;-webkit-animation:1s cubic-bezier(.7,-.13,.22,.86) infinite ball-rotate-animation;animation:1s cubic-bezier(.7,-.13,.22,.86) infinite ball-rotate-animation}.la-ball-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after, .la-ball-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{position:absolute;width:inherit;height:inherit;margin:inherit;content:\\\"\\\";background:currentColor;border-radius:inherit;opacity:.8}.la-ball-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{top:0;left:-150%}.la-ball-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{top:0;left:150%}.la-ball-rotate.la-sm[_ngcontent-%COMP%], .la-ball-rotate.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px}.la-ball-rotate.la-2x[_ngcontent-%COMP%], .la-ball-rotate.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px}.la-ball-rotate.la-3x[_ngcontent-%COMP%], .la-ball-rotate.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px}@-webkit-keyframes ball-rotate-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-rotate-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-ball-running-dots[_ngcontent-%COMP%], .la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-running-dots[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:10px;height:10px}.la-ball-running-dots.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:10px;height:10px;margin-left:-25px;border-radius:100%;-webkit-animation:2s linear infinite ball-running-dots-animate;animation:2s linear infinite ball-running-dots-animate}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-delay:-1.6s;animation-delay:-1.6s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){-webkit-animation-delay:-2.4s;animation-delay:-2.4s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){-webkit-animation-delay:-2.8s;animation-delay:-2.8s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(9){-webkit-animation-delay:-3.2s;animation-delay:-3.2s}.la-ball-running-dots[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(10){-webkit-animation-delay:-3.6s;animation-delay:-3.6s}.la-ball-running-dots.la-sm[_ngcontent-%COMP%]{width:4px;height:4px}.la-ball-running-dots.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-left:-12px}.la-ball-running-dots.la-2x[_ngcontent-%COMP%]{width:20px;height:20px}.la-ball-running-dots.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin-left:-50px}.la-ball-running-dots.la-3x[_ngcontent-%COMP%]{width:30px;height:30px}.la-ball-running-dots.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin-left:-75px}@-webkit-keyframes ball-running-dots-animate{0%,100%{width:100%;height:100%;-webkit-transform:translateY(0) translateX(500%);transform:translateY(0) translateX(500%)}80%{-webkit-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}85%{width:100%;height:100%;-webkit-transform:translateY(-125%) translateX(0);transform:translateY(-125%) translateX(0)}90%{width:200%;height:75%}95%{width:100%;height:100%;-webkit-transform:translateY(-100%) translateX(500%);transform:translateY(-100%) translateX(500%)}}@keyframes ball-running-dots-animate{0%,100%{width:100%;height:100%;-webkit-transform:translateY(0) translateX(500%);transform:translateY(0) translateX(500%)}80%{-webkit-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}85%{width:100%;height:100%;-webkit-transform:translateY(-125%) translateX(0);transform:translateY(-125%) translateX(0)}90%{width:200%;height:75%}95%{width:100%;height:100%;-webkit-transform:translateY(-100%) translateX(500%);transform:translateY(-100%) translateX(500%)}}.la-ball-scale-multiple[_ngcontent-%COMP%], .la-ball-scale-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-scale-multiple[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-multiple.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-scale-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:32px;height:32px;border-radius:100%;opacity:0;-webkit-animation:1s linear infinite ball-scale-multiple;animation:1s linear infinite ball-scale-multiple}.la-ball-scale-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:.2s;animation-delay:.2s}.la-ball-scale-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s}.la-ball-scale-multiple.la-sm[_ngcontent-%COMP%], .la-ball-scale-multiple.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-scale-multiple.la-2x[_ngcontent-%COMP%], .la-ball-scale-multiple.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-scale-multiple.la-3x[_ngcontent-%COMP%], .la-ball-scale-multiple.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:96px;height:96px}@-webkit-keyframes ball-scale-multiple{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}5%{opacity:.75}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-scale-multiple{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}5%{opacity:.75}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-scale-pulse[_ngcontent-%COMP%], .la-ball-scale-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-scale-pulse[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-pulse.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-scale-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:32px;height:32px;border-radius:100%;opacity:.5;-webkit-animation:2s ease-in-out infinite ball-scale-pulse;animation:2s ease-in-out infinite ball-scale-pulse}.la-ball-scale-pulse[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{-webkit-animation-delay:-1s;animation-delay:-1s}.la-ball-scale-pulse.la-sm[_ngcontent-%COMP%], .la-ball-scale-pulse.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-scale-pulse.la-2x[_ngcontent-%COMP%], .la-ball-scale-pulse.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-scale-pulse.la-3x[_ngcontent-%COMP%], .la-ball-scale-pulse.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:96px;height:96px}@-webkit-keyframes ball-scale-pulse{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-scale-pulse{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-scale-ripple-multiple[_ngcontent-%COMP%], .la-ball-scale-ripple-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-scale-ripple-multiple[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-ripple-multiple.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-scale-ripple-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:2px solid currentColor;position:absolute;top:0;left:0;width:32px;height:32px;background:0 0;border-radius:100%;opacity:0;-webkit-animation:1.25s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple-multiple;animation:1.25s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple-multiple}.la-ball-scale-ripple-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-scale-ripple-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:.25s;animation-delay:.25s}.la-ball-scale-ripple-multiple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:.5s;animation-delay:.5s}.la-ball-scale-ripple-multiple.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-scale-ripple-multiple.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;border-width:1px}.la-ball-scale-ripple-multiple.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-scale-ripple-multiple.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:64px;height:64px;border-width:4px}.la-ball-scale-ripple-multiple.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-scale-ripple-multiple.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-scale-ripple-multiple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.5;-webkit-transform:scale(1);transform:scale(1)}95%{opacity:0}}@keyframes ball-scale-ripple-multiple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.5;-webkit-transform:scale(1);transform:scale(1)}95%{opacity:0}}.la-ball-scale-ripple[_ngcontent-%COMP%], .la-ball-scale-ripple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-scale-ripple[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-ripple.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-scale-ripple[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:2px solid currentColor;width:32px;height:32px;background:0 0;border-radius:100%;opacity:0;-webkit-animation:1s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple;animation:1s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple}.la-ball-scale-ripple.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-scale-ripple.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;border-width:1px}.la-ball-scale-ripple.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-scale-ripple.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:64px;height:64px;border-width:4px}.la-ball-scale-ripple.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-scale-ripple.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-scale-ripple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.65;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0}}@keyframes ball-scale-ripple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.65;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0}}.la-ball-scale[_ngcontent-%COMP%], .la-ball-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-scale[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:32px;height:32px;border-radius:100%;opacity:0;-webkit-animation:1s ease-in-out infinite ball-scale;animation:1s ease-in-out infinite ball-scale}.la-ball-scale.la-sm[_ngcontent-%COMP%], .la-ball-scale.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-scale.la-2x[_ngcontent-%COMP%], .la-ball-scale.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-scale.la-3x[_ngcontent-%COMP%], .la-ball-scale.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:96px;height:96px}@-webkit-keyframes ball-scale{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-scale{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%], .la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite ball-spin-clockwise-fade-rotating-rotate;animation:6s linear infinite ball-spin-clockwise-fade-rotating-rotate}.la-ball-spin-clockwise-fade-rotating.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-clockwise-fade-rotating;animation:1s linear infinite ball-spin-clockwise-fade-rotating}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-spin-clockwise-fade-rotating.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-spin-clockwise-fade-rotating.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-clockwise-fade-rotating.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-spin-clockwise-fade-rotating.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-clockwise-fade-rotating.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-spin-clockwise-fade-rotating.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes ball-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@-webkit-keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%], .la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin-clockwise-fade.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-clockwise-fade;animation:1s linear infinite ball-spin-clockwise-fade}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-spin-clockwise-fade.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-spin-clockwise-fade.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-clockwise-fade.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-spin-clockwise-fade.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-clockwise-fade.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-spin-clockwise-fade.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-clockwise-fade{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-spin-clockwise-fade{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin-clockwise[_ngcontent-%COMP%], .la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-spin-clockwise[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin-clockwise.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-spin-clockwise;animation:1s ease-in-out infinite ball-spin-clockwise}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-spin-clockwise[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-spin-clockwise.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-spin-clockwise.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-clockwise.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-spin-clockwise.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-clockwise.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-spin-clockwise.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-clockwise{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}@keyframes ball-spin-clockwise{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}.la-ball-spin-fade-rotating[_ngcontent-%COMP%], .la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-spin-fade-rotating[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite ball-spin-fade-rotate;animation:6s linear infinite ball-spin-fade-rotate}.la-ball-spin-fade-rotating.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-fade;animation:1s linear infinite ball-spin-fade}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-spin-fade-rotating.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-spin-fade-rotating.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-fade-rotating.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-spin-fade-rotating.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-fade-rotating.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-spin-fade-rotating.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-fade-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-spin-fade-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-ball-spin-fade[_ngcontent-%COMP%], .la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-spin-fade[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin-fade.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-fade;animation:1s linear infinite ball-spin-fade}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-spin-fade.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-spin-fade.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-fade.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-spin-fade.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-fade.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-spin-fade.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-fade{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}}@keyframes ball-spin-fade{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}}.la-ball-spin-rotate[_ngcontent-%COMP%], .la-ball-spin-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-spin-rotate[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:2s linear infinite ball-spin-rotate;animation:2s linear infinite ball-spin-rotate}.la-ball-spin-rotate.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-spin-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;width:60%;height:60%;border-radius:100%;-webkit-animation:2s ease-in-out infinite ball-spin-bounce;animation:2s ease-in-out infinite ball-spin-bounce}.la-ball-spin-rotate[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{top:auto;bottom:0;-webkit-animation-delay:-1s;animation-delay:-1s}.la-ball-spin-rotate.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-spin-rotate.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-spin-rotate.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}@-webkit-keyframes ball-spin-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-spin-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes ball-spin-bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-spin-bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin[_ngcontent-%COMP%], .la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-spin[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-spin;animation:1s ease-in-out infinite ball-spin}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-spin.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-spin.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-spin.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-spin.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}@keyframes ball-spin{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}.la-ball-square-clockwise-spin[_ngcontent-%COMP%], .la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-square-clockwise-spin[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:26px;height:26px}.la-ball-square-clockwise-spin.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:12px;height:12px;margin-top:-6px;margin-left:-6px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-square-clockwise-spin;animation:1s ease-in-out infinite ball-square-clockwise-spin}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:0;left:0;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:0;left:50%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:0;left:100%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:50%;left:100%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:100%;left:100%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:100%;left:50%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:100%;left:0;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-square-clockwise-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:50%;left:0;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-square-clockwise-spin.la-sm[_ngcontent-%COMP%]{width:12px;height:12px}.la-ball-square-clockwise-spin.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:6px;margin-top:-3px;margin-left:-3px}.la-ball-square-clockwise-spin.la-2x[_ngcontent-%COMP%]{width:52px;height:52px}.la-ball-square-clockwise-spin.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}.la-ball-square-clockwise-spin.la-3x[_ngcontent-%COMP%]{width:78px;height:78px}.la-ball-square-clockwise-spin.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:36px;height:36px;margin-top:-18px;margin-left:-18px}@-webkit-keyframes ball-square-clockwise-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-square-clockwise-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-square-spin[_ngcontent-%COMP%], .la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-square-spin[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:26px;height:26px}.la-ball-square-spin.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:12px;height:12px;margin-top:-6px;margin-left:-6px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-square-spin;animation:1s ease-in-out infinite ball-square-spin}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:0;left:0;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:0;left:50%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:0;left:100%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:50%;left:100%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:100%;left:100%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:100%;left:50%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:100%;left:0;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:50%;left:0;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-square-spin.la-sm[_ngcontent-%COMP%]{width:12px;height:12px}.la-ball-square-spin.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:6px;margin-top:-3px;margin-left:-3px}.la-ball-square-spin.la-2x[_ngcontent-%COMP%]{width:52px;height:52px}.la-ball-square-spin.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px;margin-top:-12px;margin-left:-12px}.la-ball-square-spin.la-3x[_ngcontent-%COMP%]{width:78px;height:78px}.la-ball-square-spin.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:36px;height:36px;margin-top:-18px;margin-left:-18px}@-webkit-keyframes ball-square-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-square-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-triangle-path[_ngcontent-%COMP%], .la-ball-triangle-path[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-ball-triangle-path[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-triangle-path.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-triangle-path[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:10px;height:10px;border-radius:100%}.la-ball-triangle-path[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation:2s ease-in-out infinite ball-triangle-path-ball-one;animation:2s ease-in-out infinite ball-triangle-path-ball-one}.la-ball-triangle-path[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation:2s ease-in-out infinite ball-triangle-path-ball-two;animation:2s ease-in-out infinite ball-triangle-path-ball-two}.la-ball-triangle-path[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation:2s ease-in-out infinite ball-triangle-path-ball-tree;animation:2s ease-in-out infinite ball-triangle-path-ball-tree}.la-ball-triangle-path.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-triangle-path.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px}.la-ball-triangle-path.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-triangle-path.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px}.la-ball-triangle-path.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-triangle-path.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px}@-webkit-keyframes ball-triangle-path-ball-one{0%{-webkit-transform:translate(0,220%);transform:translate(0,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}66%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}100%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}}@keyframes ball-triangle-path-ball-one{0%{-webkit-transform:translate(0,220%);transform:translate(0,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}66%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}100%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}}@-webkit-keyframes ball-triangle-path-ball-two{0%{-webkit-transform:translate(110%,0);transform:translate(110%,0)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}66%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}100%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}}@keyframes ball-triangle-path-ball-two{0%{-webkit-transform:translate(110%,0);transform:translate(110%,0)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}66%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}100%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}}@-webkit-keyframes ball-triangle-path-ball-tree{0%{-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}66%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}100%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}}@keyframes ball-triangle-path-ball-tree{0%{-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}66%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}100%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}}.la-ball-zig-zag-deflect[_ngcontent-%COMP%], .la-ball-zig-zag-deflect[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{box-sizing:border-box}.la-ball-zig-zag-deflect[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;position:relative;width:32px;height:32px}.la-ball-zig-zag-deflect.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-zig-zag-deflect[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:10px;height:10px;margin-top:-5px;margin-left:-5px;border-radius:100%}.la-ball-zig-zag-deflect[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{-webkit-animation:1.5s linear infinite ball-zig-deflect;animation:1.5s linear infinite ball-zig-deflect}.la-ball-zig-zag-deflect[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{-webkit-animation:1.5s linear infinite ball-zag-deflect;animation:1.5s linear infinite ball-zag-deflect}.la-ball-zig-zag-deflect.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-zig-zag-deflect.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-zig-zag-deflect.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-zig-zag-deflect.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin-top:-10px;margin-left:-10px}.la-ball-zig-zag-deflect.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-zig-zag-deflect.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin-top:-15px;margin-left:-15px}@-webkit-keyframes ball-zig-deflect{17%,84%{-webkit-transform:translate(-80%,-160%);transform:translate(-80%,-160%)}34%,67%{-webkit-transform:translate(80%,-160%);transform:translate(80%,-160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ball-zig-deflect{17%,84%{-webkit-transform:translate(-80%,-160%);transform:translate(-80%,-160%)}34%,67%{-webkit-transform:translate(80%,-160%);transform:translate(80%,-160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ball-zag-deflect{17%,84%{-webkit-transform:translate(80%,160%);transform:translate(80%,160%)}34%,67%{-webkit-transform:translate(-80%,160%);transform:translate(-80%,160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ball-zag-deflect{17%,84%{-webkit-transform:translate(80%,160%);transform:translate(80%,160%)}34%,67%{-webkit-transform:translate(-80%,160%);transform:translate(-80%,160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}.la-ball-zig-zag[_ngcontent-%COMP%], .la-ball-zig-zag[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{box-sizing:border-box}.la-ball-zig-zag[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;position:relative;width:32px;height:32px}.la-ball-zig-zag.la-dark[_ngcontent-%COMP%]{color:#333}.la-ball-zig-zag[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:10px;height:10px;margin-top:-5px;margin-left:-5px;border-radius:100%}.la-ball-zig-zag[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{-webkit-animation:.7s linear infinite ball-zig-effect;animation:.7s linear infinite ball-zig-effect}.la-ball-zig-zag[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{-webkit-animation:.7s linear infinite ball-zag-effect;animation:.7s linear infinite ball-zag-effect}.la-ball-zig-zag.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-ball-zig-zag.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-zig-zag.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-ball-zig-zag.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:20px;height:20px;margin-top:-10px;margin-left:-10px}.la-ball-zig-zag.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-ball-zig-zag.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:30px;margin-top:-15px;margin-left:-15px}@-webkit-keyframes ball-zig-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(-75%,-150%);transform:translate(-75%,-150%)}66%{-webkit-transform:translate(75%,-150%);transform:translate(75%,-150%)}}@keyframes ball-zig-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(-75%,-150%);transform:translate(-75%,-150%)}66%{-webkit-transform:translate(75%,-150%);transform:translate(75%,-150%)}}@-webkit-keyframes ball-zag-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(75%,150%);transform:translate(75%,150%)}66%{-webkit-transform:translate(-75%,150%);transform:translate(-75%,150%)}}@keyframes ball-zag-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(75%,150%);transform:translate(75%,150%)}66%{-webkit-transform:translate(-75%,150%);transform:translate(-75%,150%)}}.la-cog[_ngcontent-%COMP%], .la-cog[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-cog[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:31px;height:31px}.la-cog.la-dark[_ngcontent-%COMP%]{color:#333}.la-cog[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:2px dashed currentColor;width:100%;height:100%;background-color:transparent;border-radius:100%;-webkit-animation:4s linear infinite cog-rotate;animation:4s linear infinite cog-rotate}.la-cog[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\\\"\\\";border:2px solid currentColor;border-radius:100%}.la-cog.la-sm[_ngcontent-%COMP%]{width:15px;height:15px}.la-cog.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .la-cog.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{border-width:1px}.la-cog.la-2x[_ngcontent-%COMP%]{width:61px;height:61px}.la-cog.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .la-cog.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{border-width:4px}.la-cog.la-3x[_ngcontent-%COMP%]{width:91px;height:91px}.la-cog.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .la-cog.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{border-width:6px}@-webkit-keyframes cog-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cog-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-cube-transition[_ngcontent-%COMP%], .la-cube-transition[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-cube-transition[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-cube-transition.la-dark[_ngcontent-%COMP%]{color:#333}.la-cube-transition[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:14px;height:14px;margin-top:-7px;margin-left:-7px;border-radius:0;-webkit-animation:1.6s ease-in-out infinite cube-transition;animation:1.6s ease-in-out infinite cube-transition}.la-cube-transition[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:last-child{-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-cube-transition.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-cube-transition.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:6px;margin-top:-3px;margin-left:-3px}.la-cube-transition.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-cube-transition.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:28px;height:28px;margin-top:-14px;margin-left:-14px}.la-cube-transition.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-cube-transition.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:42px;height:42px;margin-top:-21px;margin-left:-21px}@-webkit-keyframes cube-transition{25%{top:0;left:100%;-webkit-transform:scale(.5) rotate(-90deg);transform:scale(.5) rotate(-90deg)}50%{top:100%;left:100%;-webkit-transform:scale(1) rotate(-180deg);transform:scale(1) rotate(-180deg)}75%{top:100%;left:0;-webkit-transform:scale(.5) rotate(-270deg);transform:scale(.5) rotate(-270deg)}100%{top:0;left:0;-webkit-transform:scale(1) rotate(-360deg);transform:scale(1) rotate(-360deg)}}@keyframes cube-transition{25%{top:0;left:100%;-webkit-transform:scale(.5) rotate(-90deg);transform:scale(.5) rotate(-90deg)}50%{top:100%;left:100%;-webkit-transform:scale(1) rotate(-180deg);transform:scale(1) rotate(-180deg)}75%{top:100%;left:0;-webkit-transform:scale(.5) rotate(-270deg);transform:scale(.5) rotate(-270deg)}100%{top:0;left:0;-webkit-transform:scale(1) rotate(-360deg);transform:scale(1) rotate(-360deg)}}.la-fire[_ngcontent-%COMP%], .la-fire[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-fire[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-fire.la-dark[_ngcontent-%COMP%]{color:#333}.la-fire[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;bottom:0;left:50%;width:12px;height:12px;border-radius:2px;-webkit-transform:translateY(0) translateX(-50%) rotate(45deg) scale(0);transform:translateY(0) translateX(-50%) rotate(45deg) scale(0);-webkit-animation:1.5s linear infinite fire-diamonds;animation:1.5s linear infinite fire-diamonds}.la-fire[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:-.85s;animation-delay:-.85s}.la-fire[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-1.85s;animation-delay:-1.85s}.la-fire[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-2.85s;animation-delay:-2.85s}.la-fire.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-fire.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:6px}.la-fire.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-fire.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:24px;height:24px}.la-fire.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-fire.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:36px;height:36px}@-webkit-keyframes fire-diamonds{0%{-webkit-transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0)}50%{-webkit-transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1);transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1)}100%{-webkit-transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0)}}@keyframes fire-diamonds{0%{-webkit-transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0)}50%{-webkit-transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1);transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1)}100%{-webkit-transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0)}}.la-line-scale-party[_ngcontent-%COMP%], .la-line-scale-party[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-scale-party[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale-party.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-scale-party[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation-name:line-scale-party;animation-name:line-scale-party;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.la-line-scale-party[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-duration:.43s;animation-duration:.43s;-webkit-animation-delay:-.23s;animation-delay:-.23s}.la-line-scale-party[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-duration:.62s;animation-duration:.62s;-webkit-animation-delay:-.32s;animation-delay:-.32s}.la-line-scale-party[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-duration:.43s;animation-duration:.43s;-webkit-animation-delay:-.44s;animation-delay:-.44s}.la-line-scale-party[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-delay:-.31s;animation-delay:-.31s}.la-line-scale-party[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-duration:.74s;animation-duration:.74s;-webkit-animation-delay:-.24s;animation-delay:-.24s}.la-line-scale-party.la-sm[_ngcontent-%COMP%]{width:20px;height:16px}.la-line-scale-party.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:2px;height:16px;margin:0 1px}.la-line-scale-party.la-2x[_ngcontent-%COMP%]{width:80px;height:64px}.la-line-scale-party.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:8px;height:64px;margin:0 4px}.la-line-scale-party.la-3x[_ngcontent-%COMP%]{width:120px;height:96px}.la-line-scale-party.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale-party{0%,100%{-webkit-transform:scaleY(1);transform:scaleY(1)}50%{-webkit-transform:scaleY(.3);transform:scaleY(.3)}}@keyframes line-scale-party{0%,100%{-webkit-transform:scaleY(1);transform:scaleY(1)}50%{-webkit-transform:scaleY(.3);transform:scaleY(.3)}}.la-line-scale-pulse-out-rapid[_ngcontent-%COMP%], .la-line-scale-pulse-out-rapid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-scale-pulse-out-rapid[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale-pulse-out-rapid.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-scale-pulse-out-rapid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation:.9s cubic-bezier(.11,.49,.38,.78) infinite line-scale-pulse-out-rapid;animation:.9s cubic-bezier(.11,.49,.38,.78) infinite line-scale-pulse-out-rapid}.la-line-scale-pulse-out-rapid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale-pulse-out-rapid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2), .la-line-scale-pulse-out-rapid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-delay:-.65s;animation-delay:-.65s}.la-line-scale-pulse-out-rapid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1), .la-line-scale-pulse-out-rapid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-delay:-.4s;animation-delay:-.4s}.la-line-scale-pulse-out-rapid.la-sm[_ngcontent-%COMP%]{width:20px;height:16px}.la-line-scale-pulse-out-rapid.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:2px;height:16px;margin:0 1px}.la-line-scale-pulse-out-rapid.la-2x[_ngcontent-%COMP%]{width:80px;height:64px}.la-line-scale-pulse-out-rapid.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:8px;height:64px;margin:0 4px}.la-line-scale-pulse-out-rapid.la-3x[_ngcontent-%COMP%]{width:120px;height:96px}.la-line-scale-pulse-out-rapid.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale-pulse-out-rapid{0%,90%{-webkit-transform:scaley(1);transform:scaley(1)}80%{-webkit-transform:scaley(.3);transform:scaley(.3)}}@keyframes line-scale-pulse-out-rapid{0%,90%{-webkit-transform:scaley(1);transform:scaley(1)}80%{-webkit-transform:scaley(.3);transform:scaley(.3)}}.la-line-scale-pulse-out[_ngcontent-%COMP%], .la-line-scale-pulse-out[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-scale-pulse-out[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale-pulse-out.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-scale-pulse-out[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation:.9s cubic-bezier(.85,.25,.37,.85) infinite line-scale-pulse-out;animation:.9s cubic-bezier(.85,.25,.37,.85) infinite line-scale-pulse-out}.la-line-scale-pulse-out[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale-pulse-out[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2), .la-line-scale-pulse-out[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-delay:-.7s;animation-delay:-.7s}.la-line-scale-pulse-out[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1), .la-line-scale-pulse-out[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-line-scale-pulse-out.la-sm[_ngcontent-%COMP%]{width:20px;height:16px}.la-line-scale-pulse-out.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:2px;height:16px;margin:0 1px}.la-line-scale-pulse-out.la-2x[_ngcontent-%COMP%]{width:80px;height:64px}.la-line-scale-pulse-out.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:8px;height:64px;margin:0 4px}.la-line-scale-pulse-out.la-3x[_ngcontent-%COMP%]{width:120px;height:96px}.la-line-scale-pulse-out.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale-pulse-out{0%,100%{-webkit-transform:scaley(1);transform:scaley(1)}50%{-webkit-transform:scaley(.3);transform:scaley(.3)}}@keyframes line-scale-pulse-out{0%,100%{-webkit-transform:scaley(1);transform:scaley(1)}50%{-webkit-transform:scaley(.3);transform:scaley(.3)}}.la-line-scale[_ngcontent-%COMP%], .la-line-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-scale[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation:1.2s infinite line-scale;animation:1.2s infinite line-scale}.la-line-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-line-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.la-line-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-1s;animation-delay:-1s}.la-line-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-line-scale.la-sm[_ngcontent-%COMP%]{width:20px;height:16px}.la-line-scale.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:2px;height:16px;margin:0 1px}.la-line-scale.la-2x[_ngcontent-%COMP%]{width:80px;height:64px}.la-line-scale.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:8px;height:64px;margin:0 4px}.la-line-scale.la-3x[_ngcontent-%COMP%]{width:120px;height:96px}.la-line-scale.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes line-scale{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%], .la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite line-spin-clockwise-fade-rotating-rotate;animation:6s linear infinite line-spin-clockwise-fade-rotating-rotate}.la-line-spin-clockwise-fade-rotating.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-clockwise-fade-rotating;animation:1s ease-in-out infinite line-spin-clockwise-fade-rotating}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-line-spin-clockwise-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:0s;animation-delay:0s}.la-line-spin-clockwise-fade-rotating.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-line-spin-clockwise-fade-rotating.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-clockwise-fade-rotating.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-line-spin-clockwise-fade-rotating.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-clockwise-fade-rotating.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-line-spin-clockwise-fade-rotating.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes line-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes line-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@-webkit-keyframes line-spin-clockwise-fade-rotating{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-clockwise-fade-rotating{50%{opacity:.2}100%{opacity:1}}.la-line-spin-clockwise-fade[_ngcontent-%COMP%], .la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-spin-clockwise-fade[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-line-spin-clockwise-fade.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-clockwise-fade;animation:1s ease-in-out infinite line-spin-clockwise-fade}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-line-spin-clockwise-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:0s;animation-delay:0s}.la-line-spin-clockwise-fade.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-line-spin-clockwise-fade.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-clockwise-fade.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-line-spin-clockwise-fade.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-clockwise-fade.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-line-spin-clockwise-fade.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes line-spin-clockwise-fade{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-clockwise-fade{50%{opacity:.2}100%{opacity:1}}.la-line-spin-fade-rotating[_ngcontent-%COMP%], .la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-spin-fade-rotating[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite ball-spin-fade-rotating-rotate;animation:6s linear infinite ball-spin-fade-rotating-rotate}.la-line-spin-fade-rotating.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-fade-rotating;animation:1s ease-in-out infinite line-spin-fade-rotating}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-line-spin-fade-rotating[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:-2s;animation-delay:-2s}.la-line-spin-fade-rotating.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-line-spin-fade-rotating.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-fade-rotating.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-line-spin-fade-rotating.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-fade-rotating.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-line-spin-fade-rotating.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes ball-spin-fade-rotating-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-spin-fade-rotating-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes line-spin-fade-rotating{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-fade-rotating{50%{opacity:.2}100%{opacity:1}}.la-line-spin-fade[_ngcontent-%COMP%], .la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-line-spin-fade[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-line-spin-fade.la-dark[_ngcontent-%COMP%]{color:#333}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-fade;animation:1s ease-in-out infinite line-spin-fade}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-line-spin-fade[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:-2s;animation-delay:-2s}.la-line-spin-fade.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-line-spin-fade.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-fade.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-line-spin-fade.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-fade.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-line-spin-fade.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes line-spin-fade{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-fade{50%{opacity:.2}100%{opacity:1}}.la-pacman[_ngcontent-%COMP%], .la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-pacman[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-pacman.la-dark[_ngcontent-%COMP%]{color:#333}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1), .la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){width:0;height:0;background:0 0;border-style:solid;border-width:16px;border-right-color:transparent;border-radius:100%;-webkit-animation:.5s infinite pacman-rotate-half-up;animation:.5s infinite pacman-rotate-half-up}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){margin-top:-32px;-webkit-animation-name:pacman-rotate-half-down;animation-name:pacman-rotate-half-down}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3), .la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4), .la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5), .la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){position:absolute;top:50%;left:200%;width:8px;height:8px;border-radius:100%;opacity:0;-webkit-animation:2s linear infinite pacman-balls;animation:2s linear infinite pacman-balls}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3){-webkit-animation-delay:-1.44s;animation-delay:-1.44s}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4){-webkit-animation-delay:-1.94s;animation-delay:-1.94s}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5){-webkit-animation-delay:-2.44s;animation-delay:-2.44s}.la-pacman[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){-webkit-animation-delay:-2.94s;animation-delay:-2.94s}.la-pacman.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-pacman.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1), .la-pacman.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){border-width:8px}.la-pacman.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){margin-top:-16px}.la-pacman.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3), .la-pacman.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4), .la-pacman.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5), .la-pacman.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){width:4px;height:4px}.la-pacman.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-pacman.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1), .la-pacman.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){border-width:32px}.la-pacman.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){margin-top:-64px}.la-pacman.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3), .la-pacman.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4), .la-pacman.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5), .la-pacman.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){width:16px;height:16px}.la-pacman.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-pacman.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1), .la-pacman.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){border-width:48px}.la-pacman.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){margin-top:-96px}.la-pacman.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(3), .la-pacman.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(4), .la-pacman.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(5), .la-pacman.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(6){width:24px;height:24px}@-webkit-keyframes pacman-rotate-half-up{0%,100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}50%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pacman-rotate-half-up{0%,100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}50%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes pacman-rotate-half-down{0%,100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes pacman-rotate-half-down{0%,100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes pacman-balls{0%{left:200%;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}5%{opacity:.5}66%{opacity:1}67%{opacity:0}100%{left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}}@keyframes pacman-balls{0%{left:200%;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}5%{opacity:.5}66%{opacity:1}67%{opacity:0}100%{left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}}.la-square-jelly-box[_ngcontent-%COMP%], .la-square-jelly-box[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-square-jelly-box[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-square-jelly-box.la-dark[_ngcontent-%COMP%]{color:#333}.la-square-jelly-box[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-square-jelly-box[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1), .la-square-jelly-box[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){position:absolute;left:0;width:100%}.la-square-jelly-box[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(1){top:-25%;z-index:1;height:100%;border-radius:10%;-webkit-animation:.6s linear -.1s infinite square-jelly-box-animate;animation:.6s linear -.1s infinite square-jelly-box-animate}.la-square-jelly-box[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:nth-child(2){bottom:-9%;height:10%;background:#000;border-radius:50%;opacity:.2;-webkit-animation:.6s linear -.1s infinite square-jelly-box-shadow;animation:.6s linear -.1s infinite square-jelly-box-shadow}.la-square-jelly-box.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-square-jelly-box.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-square-jelly-box.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}@-webkit-keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{-webkit-transform:translateY(25%) rotate(22.5deg);transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;-webkit-transform:translateY(50%) scale(1,.9) rotate(45deg);transform:translateY(50%) scale(1,.9) rotate(45deg)}75%{-webkit-transform:translateY(25%) rotate(67.5deg);transform:translateY(25%) rotate(67.5deg)}100%{-webkit-transform:translateY(0) rotate(90deg);transform:translateY(0) rotate(90deg)}}@keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{-webkit-transform:translateY(25%) rotate(22.5deg);transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;-webkit-transform:translateY(50%) scale(1,.9) rotate(45deg);transform:translateY(50%) scale(1,.9) rotate(45deg)}75%{-webkit-transform:translateY(25%) rotate(67.5deg);transform:translateY(25%) rotate(67.5deg)}100%{-webkit-transform:translateY(0) rotate(90deg);transform:translateY(0) rotate(90deg)}}@-webkit-keyframes square-jelly-box-shadow{50%{-webkit-transform:scale(1.25,1);transform:scale(1.25,1)}}@keyframes square-jelly-box-shadow{50%{-webkit-transform:scale(1.25,1);transform:scale(1.25,1)}}.la-square-loader[_ngcontent-%COMP%], .la-square-loader[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-square-loader[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-square-loader.la-dark[_ngcontent-%COMP%]{color:#333}.la-square-loader[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:2px solid currentColor;width:100%;height:100%;background:0 0;border-radius:0;-webkit-animation:2s infinite square-loader;animation:2s infinite square-loader}.la-square-loader[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{display:inline-block;width:100%;vertical-align:top;content:\\\"\\\";background-color:currentColor;-webkit-animation:2s ease-in infinite square-loader-inner;animation:2s ease-in infinite square-loader-inner}.la-square-loader.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-square-loader.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:1px}.la-square-loader.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-square-loader.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:4px}.la-square-loader.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-square-loader.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:6px}@-webkit-keyframes square-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes square-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes square-loader-inner{0%,100%,25%{height:0}50%,75%{height:100%}}@keyframes square-loader-inner{0%,100%,25%{height:0}50%,75%{height:100%}}.la-square-spin[_ngcontent-%COMP%], .la-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-square-spin[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-square-spin.la-dark[_ngcontent-%COMP%]{color:#333}.la-square-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:100%;height:100%;border-radius:0;-webkit-animation:3s cubic-bezier(.09,.57,.49,.9) infinite square-spin;animation:3s cubic-bezier(.09,.57,.49,.9) infinite square-spin}.la-square-spin.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-square-spin.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-square-spin.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}@-webkit-keyframes square-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}@keyframes square-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}.la-timer[_ngcontent-%COMP%], .la-timer[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-timer[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-timer.la-dark[_ngcontent-%COMP%]{color:#333}.la-timer[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:2px solid currentColor;width:32px;height:32px;background:0 0;border-radius:100%}.la-timer[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after, .la-timer[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{position:absolute;top:14px;left:14px;display:block;width:2px;margin-top:-1px;margin-left:-1px;content:\\\"\\\";background:currentColor;border-radius:2px;-webkit-transform-origin:1px 1px 0;transform-origin:1px 1px 0;-webkit-animation:1.25s linear -625ms infinite timer-loader;animation:1.25s linear -625ms infinite timer-loader}.la-timer[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{height:12px}.la-timer[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{height:8px;-webkit-animation-duration:15s;animation-duration:15s;-webkit-animation-delay:-7.5s;animation-delay:-7.5s}.la-timer.la-sm[_ngcontent-%COMP%]{width:16px;height:16px}.la-timer.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:16px;height:16px;border-width:1px}.la-timer.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after, .la-timer.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{top:7px;left:7px;width:1px;margin-top:-.5px;margin-left:-.5px;border-radius:1px;-webkit-transform-origin:.5px .5px 0;transform-origin:.5px .5px 0}.la-timer.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{height:6px}.la-timer.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{height:4px}.la-timer.la-2x[_ngcontent-%COMP%]{width:64px;height:64px}.la-timer.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:64px;height:64px;border-width:4px}.la-timer.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after, .la-timer.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{top:28px;left:28px;width:4px;margin-top:-2px;margin-left:-2px;border-radius:4px;-webkit-transform-origin:2px 2px 0;transform-origin:2px 2px 0}.la-timer.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{height:24px}.la-timer.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{height:16px}.la-timer.la-3x[_ngcontent-%COMP%]{width:96px;height:96px}.la-timer.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:96px;height:96px;border-width:6px}.la-timer.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after, .la-timer.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{top:42px;left:42px;width:6px;margin-top:-3px;margin-left:-3px;border-radius:6px;-webkit-transform-origin:3px 3px 0;transform-origin:3px 3px 0}.la-timer.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:before{height:36px}.la-timer.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:after{height:24px}@-webkit-keyframes timer-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes timer-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-triangle-skew-spin[_ngcontent-%COMP%], .la-triangle-skew-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{position:relative;box-sizing:border-box}.la-triangle-skew-spin[_ngcontent-%COMP%]{display:block;font-size:0;color:#fff;width:32px;height:16px}.la-triangle-skew-spin.la-dark[_ngcontent-%COMP%]{color:#333}.la-triangle-skew-spin[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:inline-block;float:none;border:0 solid currentColor;width:0;height:0;background:0 0;border:solid;border-width:0 16px 16px;border-right-color:transparent;border-left-color:transparent;-webkit-animation:3s cubic-bezier(.09,.57,.49,.9) infinite triangle-skew-spin;animation:3s cubic-bezier(.09,.57,.49,.9) infinite triangle-skew-spin}.la-triangle-skew-spin.la-sm[_ngcontent-%COMP%]{width:16px;height:8px}.la-triangle-skew-spin.la-sm[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:0 8px 8px}.la-triangle-skew-spin.la-2x[_ngcontent-%COMP%]{width:64px;height:32px}.la-triangle-skew-spin.la-2x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:0 32px 32px}.la-triangle-skew-spin.la-3x[_ngcontent-%COMP%]{width:96px;height:48px}.la-triangle-skew-spin.la-3x[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-width:0 48px 48px}@-webkit-keyframes triangle-skew-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}@keyframes triangle-skew-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}.overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%}.overlay[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(.loading-text){top:50%;left:50%;margin:0;position:absolute;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.loading-text[_ngcontent-%COMP%]{position:absolute;top:60%;left:50%;-webkit-transform:translate(-50%,-60%);transform:translate(-50%,-60%)}\"], data: { animation: [\n trigger('fadeIn', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n style({ opacity: 0 }),\n animate(300)\n ]),\n transition(':leave', animate(200, style({ opacity: 0 })))\n ])\n ] }, changeDetection: 0 });\nNgxSpinnerComponent.ctorParameters = () => [\n { type: NgxSpinnerService },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NgxSpinnerComponent.prototype, \"bdColor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NgxSpinnerComponent.prototype, \"size\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NgxSpinnerComponent.prototype, \"color\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NgxSpinnerComponent.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], NgxSpinnerComponent.prototype, \"fullScreen\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NgxSpinnerComponent.prototype, \"name\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], NgxSpinnerComponent.prototype, \"zIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], NgxSpinnerComponent.prototype, \"template\", void 0);\nNgxSpinnerComponent = __decorate([ __metadata(\"design:paramtypes\", [NgxSpinnerService, ChangeDetectorRef])\n], NgxSpinnerComponent);\n\nlet NgxSpinnerModule = class NgxSpinnerModule {\n};\nNgxSpinnerModule.ɵfac = function NgxSpinnerModule_Factory(t) { return new (t || NgxSpinnerModule)(); };\nNgxSpinnerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxSpinnerModule });\nNgxSpinnerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxSpinnerService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxSpinnerComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-spinner',\n template: \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \",\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('fadeIn', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n style({ opacity: 0 }),\n animate(300)\n ]),\n transition(':leave', animate(200, style({ opacity: 0 })))\n ])\n ],\n styles: [\"/*!\\n * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)\\n * Copyright 2015 Daniel Cardoso <@DanielCardoso>\\n * Licensed under MIT\\n */.la-ball-8bits,.la-ball-8bits>div{position:relative;box-sizing:border-box}.la-ball-8bits{display:block;font-size:0;color:#fff;width:12px;height:12px}.la-ball-8bits.la-dark{color:#333}.la-ball-8bits>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:4px;height:4px;border-radius:0;opacity:0;-webkit-transform:translate(100%,100%);transform:translate(100%,100%);-webkit-animation:1s infinite ball-8bits;animation:1s infinite ball-8bits}.la-ball-8bits>div:nth-child(1){-webkit-animation-delay:-.9375s;animation-delay:-.9375s;top:-100%;left:0}.la-ball-8bits>div:nth-child(2){-webkit-animation-delay:-.875s;animation-delay:-.875s;top:-100%;left:33.3333333333%}.la-ball-8bits>div:nth-child(3){-webkit-animation-delay:-.8125s;animation-delay:-.8125s;top:-66.6666666667%;left:66.6666666667%}.la-ball-8bits>div:nth-child(4){-webkit-animation-delay:-.75s;animation-delay:-.75s;top:-33.3333333333%;left:100%}.la-ball-8bits>div:nth-child(5){-webkit-animation-delay:-.6875s;animation-delay:-.6875s;top:0;left:100%}.la-ball-8bits>div:nth-child(6){-webkit-animation-delay:-.625s;animation-delay:-.625s;top:33.3333333333%;left:100%}.la-ball-8bits>div:nth-child(7){-webkit-animation-delay:-.5625s;animation-delay:-.5625s;top:66.6666666667%;left:66.6666666667%}.la-ball-8bits>div:nth-child(8){-webkit-animation-delay:-.5s;animation-delay:-.5s;top:100%;left:33.3333333333%}.la-ball-8bits>div:nth-child(9){-webkit-animation-delay:-.4375s;animation-delay:-.4375s;top:100%;left:0}.la-ball-8bits>div:nth-child(10){-webkit-animation-delay:-.375s;animation-delay:-.375s;top:100%;left:-33.3333333333%}.la-ball-8bits>div:nth-child(11){-webkit-animation-delay:-.3125s;animation-delay:-.3125s;top:66.6666666667%;left:-66.6666666667%}.la-ball-8bits>div:nth-child(12){-webkit-animation-delay:-.25s;animation-delay:-.25s;top:33.3333333333%;left:-100%}.la-ball-8bits>div:nth-child(13){-webkit-animation-delay:-.1875s;animation-delay:-.1875s;top:0;left:-100%}.la-ball-8bits>div:nth-child(14){-webkit-animation-delay:-.125s;animation-delay:-.125s;top:-33.3333333333%;left:-100%}.la-ball-8bits>div:nth-child(15){-webkit-animation-delay:-.0625s;animation-delay:-.0625s;top:-66.6666666667%;left:-66.6666666667%}.la-ball-8bits>div:nth-child(16){-webkit-animation-delay:0s;animation-delay:0s;top:-100%;left:-33.3333333333%}.la-ball-8bits.la-sm{width:6px;height:6px}.la-ball-8bits.la-sm>div{width:2px;height:2px}.la-ball-8bits.la-2x{width:24px;height:24px}.la-ball-8bits.la-2x>div{width:8px;height:8px}.la-ball-8bits.la-3x{width:36px;height:36px}.la-ball-8bits.la-3x>div{width:12px;height:12px}@-webkit-keyframes ball-8bits{0%,50%{opacity:1}51%{opacity:0}}@keyframes ball-8bits{0%,50%{opacity:1}51%{opacity:0}}.la-ball-atom,.la-ball-atom>div{position:relative;box-sizing:border-box}.la-ball-atom{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-atom.la-dark{color:#333}.la-ball-atom>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-atom>div:nth-child(1){position:absolute;top:50%;left:50%;z-index:1;width:60%;height:60%;background:#aaa;border-radius:100%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-animation:4.5s linear infinite ball-atom-shrink;animation:4.5s linear infinite ball-atom-shrink}.la-ball-atom>div:not(:nth-child(1)){position:absolute;left:0;z-index:0;width:100%;height:100%;background:0 0;-webkit-animation:1.5s steps(2,end) infinite ball-atom-zindex;animation:1.5s steps(2,end) infinite ball-atom-zindex}.la-ball-atom>div:not(:nth-child(1)):before{position:absolute;top:0;left:0;width:10px;height:10px;margin-top:-5px;margin-left:-5px;content:\\\"\\\";background:currentColor;border-radius:50%;opacity:.75;-webkit-animation:1.5s infinite ball-atom-position,1.5s infinite ball-atom-size;animation:1.5s infinite ball-atom-position,1.5s infinite ball-atom-size}.la-ball-atom>div:nth-child(2){-webkit-animation-delay:.75s;animation-delay:.75s}.la-ball-atom>div:nth-child(2):before{-webkit-animation-delay:0s,-1.125s;animation-delay:0s,-1.125s}.la-ball-atom>div:nth-child(3){-webkit-transform:rotate(120deg);transform:rotate(120deg);-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-atom>div:nth-child(3):before{-webkit-animation-delay:-1s,-.75s;animation-delay:-1s,-.75s}.la-ball-atom>div:nth-child(4){-webkit-transform:rotate(240deg);transform:rotate(240deg);-webkit-animation-delay:.25s;animation-delay:.25s}.la-ball-atom>div:nth-child(4):before{-webkit-animation-delay:-.5s,-125ms;animation-delay:-.5s,-125ms}.la-ball-atom.la-sm{width:16px;height:16px}.la-ball-atom.la-sm>div:not(:nth-child(1)):before{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-atom.la-2x{width:64px;height:64px}.la-ball-atom.la-2x>div:not(:nth-child(1)):before{width:20px;height:20px;margin-top:-10px;margin-left:-10px}.la-ball-atom.la-3x{width:96px;height:96px}.la-ball-atom.la-3x>div:not(:nth-child(1)):before{width:30px;height:30px;margin-top:-15px;margin-left:-15px}@-webkit-keyframes ball-atom-position{50%{top:100%;left:100%}}@keyframes ball-atom-position{50%{top:100%;left:100%}}@-webkit-keyframes ball-atom-size{50%{-webkit-transform:scale(.5,.5);transform:scale(.5,.5)}}@keyframes ball-atom-size{50%{-webkit-transform:scale(.5,.5);transform:scale(.5,.5)}}@-webkit-keyframes ball-atom-zindex{50%{z-index:10}}@keyframes ball-atom-zindex{50%{z-index:10}}@-webkit-keyframes ball-atom-shrink{50%{-webkit-transform:translate(-50%,-50%) scale(.8,.8);transform:translate(-50%,-50%) scale(.8,.8)}}@keyframes ball-atom-shrink{50%{-webkit-transform:translate(-50%,-50%) scale(.8,.8);transform:translate(-50%,-50%) scale(.8,.8)}}.la-ball-beat,.la-ball-beat>div{position:relative;box-sizing:border-box}.la-ball-beat{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-beat.la-dark{color:#333}.la-ball-beat>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;-webkit-animation:.7s linear -.15s infinite ball-beat;animation:.7s linear -.15s infinite ball-beat}.la-ball-beat>div:nth-child(2n-1){-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-beat.la-sm{width:26px;height:8px}.la-ball-beat.la-sm>div{width:4px;height:4px;margin:2px}.la-ball-beat.la-2x{width:108px;height:36px}.la-ball-beat.la-2x>div{width:20px;height:20px;margin:8px}.la-ball-beat.la-3x{width:162px;height:54px}.la-ball-beat.la-3x>div{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-beat{50%{opacity:.2;-webkit-transform:scale(.75);transform:scale(.75)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-beat{50%{opacity:.2;-webkit-transform:scale(.75);transform:scale(.75)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-circus,.la-ball-circus>div{position:relative;box-sizing:border-box}.la-ball-circus{display:block;font-size:0;color:#fff;width:16px;height:16px}.la-ball-circus.la-dark{color:#333}.la-ball-circus>div{float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:-100%;display:block;width:100%;height:100%;border-radius:100%;opacity:.5;-webkit-animation:2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-position,2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-size;animation:2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-position,2.5s cubic-bezier(.25,0,.75,1) infinite ball-circus-size}.la-ball-circus>div:nth-child(1){-webkit-animation-delay:0s,-.5s;animation-delay:0s,-.5s}.la-ball-circus>div:nth-child(2){-webkit-animation-delay:-.5s,-1s;animation-delay:-.5s,-1s}.la-ball-circus>div:nth-child(3){-webkit-animation-delay:-1s,-1.5s;animation-delay:-1s,-1.5s}.la-ball-circus>div:nth-child(4){-webkit-animation-delay:-1.5s,-2s;animation-delay:-1.5s,-2s}.la-ball-circus>div:nth-child(5){-webkit-animation-delay:-2s,-2.5s;animation-delay:-2s,-2.5s}.la-ball-circus.la-sm,.la-ball-circus.la-sm>div{width:8px;height:8px}.la-ball-circus.la-2x,.la-ball-circus.la-2x>div{width:32px;height:32px}.la-ball-circus.la-3x,.la-ball-circus.la-3x>div{width:48px;height:48px}@-webkit-keyframes ball-circus-position{50%{left:100%}}@keyframes ball-circus-position{50%{left:100%}}@-webkit-keyframes ball-circus-size{50%{-webkit-transform:scale(.3,.3);transform:scale(.3,.3)}}@keyframes ball-circus-size{50%{-webkit-transform:scale(.3,.3);transform:scale(.3,.3)}}.la-ball-climbing-dot,.la-ball-climbing-dot>div{position:relative;box-sizing:border-box}.la-ball-climbing-dot{display:block;font-size:0;color:#fff;width:42px;height:32px}.la-ball-climbing-dot.la-dark{color:#333}.la-ball-climbing-dot>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-climbing-dot>div:nth-child(1){position:absolute;bottom:32%;left:18%;width:14px;height:14px;border-radius:100%;-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation:.6s ease-in-out infinite ball-climbing-dot-jump;animation:.6s ease-in-out infinite ball-climbing-dot-jump}.la-ball-climbing-dot>div:not(:nth-child(1)){position:absolute;top:0;right:0;width:14px;height:2px;border-radius:0;-webkit-transform:translate(60%,0);transform:translate(60%,0);-webkit-animation:1.8s linear infinite ball-climbing-dot-steps;animation:1.8s linear infinite ball-climbing-dot-steps}.la-ball-climbing-dot>div:not(:nth-child(1)):nth-child(2){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-climbing-dot>div:not(:nth-child(1)):nth-child(3){-webkit-animation-delay:-.6s;animation-delay:-.6s}.la-ball-climbing-dot>div:not(:nth-child(1)):nth-child(4){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-ball-climbing-dot.la-sm{width:20px;height:16px}.la-ball-climbing-dot.la-sm>div:nth-child(1){width:6px;height:6px}.la-ball-climbing-dot.la-sm>div:not(:nth-child(1)){width:6px;height:1px}.la-ball-climbing-dot.la-2x{width:84px;height:64px}.la-ball-climbing-dot.la-2x>div:nth-child(1){width:28px;height:28px}.la-ball-climbing-dot.la-2x>div:not(:nth-child(1)){width:28px;height:4px}.la-ball-climbing-dot.la-3x{width:126px;height:96px}.la-ball-climbing-dot.la-3x>div:nth-child(1){width:42px;height:42px}.la-ball-climbing-dot.la-3x>div:not(:nth-child(1)){width:42px;height:6px}@-webkit-keyframes ball-climbing-dot-jump{0%,100%{-webkit-transform:scale(1,.7);transform:scale(1,.7)}20%,80%,90%{-webkit-transform:scale(.7,1.2);transform:scale(.7,1.2)}40%,46%{-webkit-transform:scale(1,1);transform:scale(1,1)}50%{bottom:125%}}@keyframes ball-climbing-dot-jump{0%,100%{-webkit-transform:scale(1,.7);transform:scale(1,.7)}20%,80%,90%{-webkit-transform:scale(.7,1.2);transform:scale(.7,1.2)}40%,46%{-webkit-transform:scale(1,1);transform:scale(1,1)}50%{bottom:125%}}@-webkit-keyframes ball-climbing-dot-steps{0%{top:0;right:0;opacity:0}50%{opacity:1}100%{top:100%;right:100%;opacity:0}}@keyframes ball-climbing-dot-steps{0%{top:0;right:0;opacity:0}50%{opacity:1}100%{top:100%;right:100%;opacity:0}}.la-ball-clip-rotate-multiple,.la-ball-clip-rotate-multiple>div{position:relative;box-sizing:border-box}.la-ball-clip-rotate-multiple{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-clip-rotate-multiple.la-dark{color:#333}.la-ball-clip-rotate-multiple>div{display:inline-block;float:none;border:2px solid currentColor;position:absolute;top:50%;left:50%;background:0 0;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-clip-rotate-multiple-rotate;animation:1s ease-in-out infinite ball-clip-rotate-multiple-rotate}.la-ball-clip-rotate-multiple>div:first-child{position:absolute;width:32px;height:32px;border-right-color:transparent;border-left-color:transparent}.la-ball-clip-rotate-multiple>div:last-child{width:16px;height:16px;border-top-color:transparent;border-bottom-color:transparent;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-direction:reverse;animation-direction:reverse}.la-ball-clip-rotate-multiple.la-sm{width:16px;height:16px}.la-ball-clip-rotate-multiple.la-sm>div{border-width:1px}.la-ball-clip-rotate-multiple.la-sm>div:first-child{width:16px;height:16px}.la-ball-clip-rotate-multiple.la-sm>div:last-child{width:8px;height:8px}.la-ball-clip-rotate-multiple.la-2x{width:64px;height:64px}.la-ball-clip-rotate-multiple.la-2x>div{border-width:4px}.la-ball-clip-rotate-multiple.la-2x>div:first-child{width:64px;height:64px}.la-ball-clip-rotate-multiple.la-2x>div:last-child{width:32px;height:32px}.la-ball-clip-rotate-multiple.la-3x{width:96px;height:96px}.la-ball-clip-rotate-multiple.la-3x>div{border-width:6px}.la-ball-clip-rotate-multiple.la-3x>div:first-child{width:96px;height:96px}.la-ball-clip-rotate-multiple.la-3x>div:last-child{width:48px;height:48px}@-webkit-keyframes ball-clip-rotate-multiple-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}@keyframes ball-clip-rotate-multiple-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}.la-ball-clip-rotate-pulse,.la-ball-clip-rotate-pulse>div{position:relative;box-sizing:border-box}.la-ball-clip-rotate-pulse{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-clip-rotate-pulse.la-dark{color:#333}.la-ball-clip-rotate-pulse>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;border-radius:100%}.la-ball-clip-rotate-pulse>div:first-child{position:absolute;width:32px;height:32px;background:0 0;border-style:solid;border-width:2px;border-right-color:transparent;border-left-color:transparent;-webkit-animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-rotate;animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-rotate}.la-ball-clip-rotate-pulse>div:last-child{width:16px;height:16px;-webkit-animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-scale;animation:1s cubic-bezier(.09,.57,.49,.9) infinite ball-clip-rotate-pulse-scale}.la-ball-clip-rotate-pulse.la-sm{width:16px;height:16px}.la-ball-clip-rotate-pulse.la-sm>div:first-child{width:16px;height:16px;border-width:1px}.la-ball-clip-rotate-pulse.la-sm>div:last-child{width:8px;height:8px}.la-ball-clip-rotate-pulse.la-2x{width:64px;height:64px}.la-ball-clip-rotate-pulse.la-2x>div:first-child{width:64px;height:64px;border-width:4px}.la-ball-clip-rotate-pulse.la-2x>div:last-child{width:32px;height:32px}.la-ball-clip-rotate-pulse.la-3x{width:96px;height:96px}.la-ball-clip-rotate-pulse.la-3x>div:first-child{width:96px;height:96px;border-width:6px}.la-ball-clip-rotate-pulse.la-3x>div:last-child{width:48px;height:48px}@-webkit-keyframes ball-clip-rotate-pulse-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}@keyframes ball-clip-rotate-pulse-rotate{0%{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}50%{-webkit-transform:translate(-50%,-50%) rotate(180deg);transform:translate(-50%,-50%) rotate(180deg)}100%{-webkit-transform:translate(-50%,-50%) rotate(360deg);transform:translate(-50%,-50%) rotate(360deg)}}@-webkit-keyframes ball-clip-rotate-pulse-scale{0%,100%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}30%{opacity:.3;-webkit-transform:translate(-50%,-50%) scale(.15);transform:translate(-50%,-50%) scale(.15)}}@keyframes ball-clip-rotate-pulse-scale{0%,100%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}30%{opacity:.3;-webkit-transform:translate(-50%,-50%) scale(.15);transform:translate(-50%,-50%) scale(.15)}}.la-ball-clip-rotate,.la-ball-clip-rotate>div{position:relative;box-sizing:border-box}.la-ball-clip-rotate{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-clip-rotate.la-dark{color:#333}.la-ball-clip-rotate>div{display:inline-block;float:none;border:2px solid currentColor;width:32px;height:32px;background:0 0;border-bottom-color:transparent;border-radius:100%;-webkit-animation:.75s linear infinite ball-clip-rotate;animation:.75s linear infinite ball-clip-rotate}.la-ball-clip-rotate.la-sm{width:16px;height:16px}.la-ball-clip-rotate.la-sm>div{width:16px;height:16px;border-width:1px}.la-ball-clip-rotate.la-2x{width:64px;height:64px}.la-ball-clip-rotate.la-2x>div{width:64px;height:64px;border-width:4px}.la-ball-clip-rotate.la-3x{width:96px;height:96px}.la-ball-clip-rotate.la-3x>div{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-ball-elastic-dots,.la-ball-elastic-dots>div{position:relative;box-sizing:border-box}.la-ball-elastic-dots{display:block;color:#fff;width:120px;height:10px;font-size:0;text-align:center}.la-ball-elastic-dots.la-dark{color:#333}.la-ball-elastic-dots>div{float:none;background-color:currentColor;border:0 solid currentColor;display:inline-block;width:10px;height:10px;white-space:nowrap;border-radius:100%;-webkit-animation:1s infinite ball-elastic-dots-anim;animation:1s infinite ball-elastic-dots-anim}.la-ball-elastic-dots.la-sm{width:60px;height:4px}.la-ball-elastic-dots.la-sm>div{width:4px;height:4px}.la-ball-elastic-dots.la-2x{width:240px;height:20px}.la-ball-elastic-dots.la-2x>div{width:20px;height:20px}.la-ball-elastic-dots.la-3x{width:360px;height:30px}.la-ball-elastic-dots.la-3x>div{width:30px;height:30px}@-webkit-keyframes ball-elastic-dots-anim{0%,100%{margin:0;-webkit-transform:scale(1);transform:scale(1)}50%{margin:0 5%;-webkit-transform:scale(.65);transform:scale(.65)}}@keyframes ball-elastic-dots-anim{0%,100%{margin:0;-webkit-transform:scale(1);transform:scale(1)}50%{margin:0 5%;-webkit-transform:scale(.65);transform:scale(.65)}}.la-ball-fall,.la-ball-fall>div{position:relative;box-sizing:border-box}.la-ball-fall{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-fall.la-dark{color:#333}.la-ball-fall>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;opacity:0;-webkit-animation:1s ease-in-out infinite ball-fall;animation:1s ease-in-out infinite ball-fall}.la-ball-fall>div:nth-child(1){-webkit-animation-delay:-.2s;animation-delay:-.2s}.la-ball-fall>div:nth-child(2){-webkit-animation-delay:-.1s;animation-delay:-.1s}.la-ball-fall>div:nth-child(3){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-fall.la-sm{width:26px;height:8px}.la-ball-fall.la-sm>div{width:4px;height:4px;margin:2px}.la-ball-fall.la-2x{width:108px;height:36px}.la-ball-fall.la-2x>div{width:20px;height:20px;margin:8px}.la-ball-fall.la-3x{width:162px;height:54px}.la-ball-fall.la-3x>div{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-fall{0%{opacity:0;-webkit-transform:translateY(-145%);transform:translateY(-145%)}10%,90%{opacity:.5}20%,80%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(145%);transform:translateY(145%)}}@keyframes ball-fall{0%{opacity:0;-webkit-transform:translateY(-145%);transform:translateY(-145%)}10%,90%{opacity:.5}20%,80%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(145%);transform:translateY(145%)}}.la-ball-fussion,.la-ball-fussion>div{position:relative;box-sizing:border-box}.la-ball-fussion{display:block;font-size:0;color:#fff;width:8px;height:8px}.la-ball-fussion.la-dark{color:#333}.la-ball-fussion>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:12px;height:12px;border-radius:100%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-animation:1s infinite ball-fussion-ball1;animation:1s infinite ball-fussion-ball1}.la-ball-fussion>div:nth-child(1){top:0;left:50%;z-index:1}.la-ball-fussion>div:nth-child(2){top:50%;left:100%;z-index:2;-webkit-animation-name:ball-fussion-ball2;animation-name:ball-fussion-ball2}.la-ball-fussion>div:nth-child(3){top:100%;left:50%;z-index:1;-webkit-animation-name:ball-fussion-ball3;animation-name:ball-fussion-ball3}.la-ball-fussion>div:nth-child(4){top:50%;left:0;z-index:2;-webkit-animation-name:ball-fussion-ball4;animation-name:ball-fussion-ball4}.la-ball-fussion.la-sm{width:4px;height:4px}.la-ball-fussion.la-sm>div{width:6px;height:6px}.la-ball-fussion.la-2x{width:16px;height:16px}.la-ball-fussion.la-2x>div,.la-ball-fussion.la-3x{width:24px;height:24px}.la-ball-fussion.la-3x>div{width:36px;height:36px}@-webkit-keyframes ball-fussion-ball1{0%{opacity:.35}50%{top:-100%;left:200%;opacity:1}100%{top:50%;left:100%;z-index:2;opacity:.35}}@keyframes ball-fussion-ball1{0%{opacity:.35}50%{top:-100%;left:200%;opacity:1}100%{top:50%;left:100%;z-index:2;opacity:.35}}@-webkit-keyframes ball-fussion-ball2{0%{opacity:.35}50%{top:200%;left:200%;opacity:1}100%{top:100%;left:50%;z-index:1;opacity:.35}}@keyframes ball-fussion-ball2{0%{opacity:.35}50%{top:200%;left:200%;opacity:1}100%{top:100%;left:50%;z-index:1;opacity:.35}}@-webkit-keyframes ball-fussion-ball3{0%{opacity:.35}50%{top:200%;left:-100%;opacity:1}100%{top:50%;left:0;z-index:2;opacity:.35}}@keyframes ball-fussion-ball3{0%{opacity:.35}50%{top:200%;left:-100%;opacity:1}100%{top:50%;left:0;z-index:2;opacity:.35}}@-webkit-keyframes ball-fussion-ball4{0%{opacity:.35}50%{top:-100%;left:-100%;opacity:1}100%{top:0;left:50%;z-index:1;opacity:.35}}@keyframes ball-fussion-ball4{0%{opacity:.35}50%{top:-100%;left:-100%;opacity:1}100%{top:0;left:50%;z-index:1;opacity:.35}}.la-ball-grid-beat,.la-ball-grid-beat>div{position:relative;box-sizing:border-box}.la-ball-grid-beat{display:block;font-size:0;color:#fff;width:36px;height:36px}.la-ball-grid-beat.la-dark{color:#333}.la-ball-grid-beat>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:8px;height:8px;margin:2px;border-radius:100%;-webkit-animation-name:ball-grid-beat;animation-name:ball-grid-beat;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.la-ball-grid-beat>div:nth-child(1){-webkit-animation-duration:.65s;animation-duration:.65s;-webkit-animation-delay:.03s;animation-delay:.03s}.la-ball-grid-beat>div:nth-child(2){-webkit-animation-duration:1.02s;animation-duration:1.02s;-webkit-animation-delay:.09s;animation-delay:.09s}.la-ball-grid-beat>div:nth-child(3){-webkit-animation-duration:1.06s;animation-duration:1.06s;-webkit-animation-delay:-.69s;animation-delay:-.69s}.la-ball-grid-beat>div:nth-child(4){-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-delay:-.41s;animation-delay:-.41s}.la-ball-grid-beat>div:nth-child(5){-webkit-animation-duration:1.6s;animation-duration:1.6s;-webkit-animation-delay:.04s;animation-delay:.04s}.la-ball-grid-beat>div:nth-child(6){-webkit-animation-duration:.84s;animation-duration:.84s;-webkit-animation-delay:.07s;animation-delay:.07s}.la-ball-grid-beat>div:nth-child(7){-webkit-animation-duration:.68s;animation-duration:.68s;-webkit-animation-delay:-.66s;animation-delay:-.66s}.la-ball-grid-beat>div:nth-child(8){-webkit-animation-duration:.93s;animation-duration:.93s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-beat>div:nth-child(9){-webkit-animation-duration:1.24s;animation-duration:1.24s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-beat.la-sm{width:18px;height:18px}.la-ball-grid-beat.la-sm>div{width:4px;height:4px;margin:1px}.la-ball-grid-beat.la-2x{width:72px;height:72px}.la-ball-grid-beat.la-2x>div{width:16px;height:16px;margin:4px}.la-ball-grid-beat.la-3x{width:108px;height:108px}.la-ball-grid-beat.la-3x>div{width:24px;height:24px;margin:6px}@-webkit-keyframes ball-grid-beat{0%,100%{opacity:1}50%{opacity:.35}}@keyframes ball-grid-beat{0%,100%{opacity:1}50%{opacity:.35}}.la-ball-grid-pulse,.la-ball-grid-pulse>div{position:relative;box-sizing:border-box}.la-ball-grid-pulse{display:block;font-size:0;color:#fff;width:36px;height:36px}.la-ball-grid-pulse.la-dark{color:#333}.la-ball-grid-pulse>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:8px;height:8px;margin:2px;border-radius:100%;-webkit-animation-name:ball-grid-pulse;animation-name:ball-grid-pulse;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.la-ball-grid-pulse>div:nth-child(1){-webkit-animation-duration:.65s;animation-duration:.65s;-webkit-animation-delay:.03s;animation-delay:.03s}.la-ball-grid-pulse>div:nth-child(2){-webkit-animation-duration:1.02s;animation-duration:1.02s;-webkit-animation-delay:.09s;animation-delay:.09s}.la-ball-grid-pulse>div:nth-child(3){-webkit-animation-duration:1.06s;animation-duration:1.06s;-webkit-animation-delay:-.69s;animation-delay:-.69s}.la-ball-grid-pulse>div:nth-child(4){-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-delay:-.41s;animation-delay:-.41s}.la-ball-grid-pulse>div:nth-child(5){-webkit-animation-duration:1.6s;animation-duration:1.6s;-webkit-animation-delay:.04s;animation-delay:.04s}.la-ball-grid-pulse>div:nth-child(6){-webkit-animation-duration:.84s;animation-duration:.84s;-webkit-animation-delay:.07s;animation-delay:.07s}.la-ball-grid-pulse>div:nth-child(7){-webkit-animation-duration:.68s;animation-duration:.68s;-webkit-animation-delay:-.66s;animation-delay:-.66s}.la-ball-grid-pulse>div:nth-child(8){-webkit-animation-duration:.93s;animation-duration:.93s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-pulse>div:nth-child(9){-webkit-animation-duration:1.24s;animation-duration:1.24s;-webkit-animation-delay:-.76s;animation-delay:-.76s}.la-ball-grid-pulse.la-sm{width:18px;height:18px}.la-ball-grid-pulse.la-sm>div{width:4px;height:4px;margin:1px}.la-ball-grid-pulse.la-2x{width:72px;height:72px}.la-ball-grid-pulse.la-2x>div{width:16px;height:16px;margin:4px}.la-ball-grid-pulse.la-3x{width:108px;height:108px}.la-ball-grid-pulse.la-3x>div{width:24px;height:24px;margin:6px}@-webkit-keyframes ball-grid-pulse{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.35;-webkit-transform:scale(.45);transform:scale(.45)}}@keyframes ball-grid-pulse{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.35;-webkit-transform:scale(.45);transform:scale(.45)}}.la-ball-newton-cradle,.la-ball-newton-cradle>div{position:relative;box-sizing:border-box}.la-ball-newton-cradle{display:block;font-size:0;color:#fff;width:40px;height:10px}.la-ball-newton-cradle.la-dark{color:#333}.la-ball-newton-cradle>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;border-radius:100%}.la-ball-newton-cradle>div:first-child{-webkit-transform:translateX(0);transform:translateX(0);-webkit-animation:1s ease-out infinite ball-newton-cradle-left;animation:1s ease-out infinite ball-newton-cradle-left}.la-ball-newton-cradle>div:last-child{-webkit-transform:translateX(0);transform:translateX(0);-webkit-animation:1s ease-out infinite ball-newton-cradle-right;animation:1s ease-out infinite ball-newton-cradle-right}.la-ball-newton-cradle.la-sm{width:20px;height:4px}.la-ball-newton-cradle.la-sm>div{width:4px;height:4px}.la-ball-newton-cradle.la-2x{width:80px;height:20px}.la-ball-newton-cradle.la-2x>div{width:20px;height:20px}.la-ball-newton-cradle.la-3x{width:120px;height:30px}.la-ball-newton-cradle.la-3x>div{width:30px;height:30px}@-webkit-keyframes ball-newton-cradle-left{25%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes ball-newton-cradle-left{25%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes ball-newton-cradle-right{100%,50%{-webkit-transform:translateX(0);transform:translateX(0)}75%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes ball-newton-cradle-right{100%,50%{-webkit-transform:translateX(0);transform:translateX(0)}75%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.la-ball-pulse-rise,.la-ball-pulse-rise>div{position:relative;box-sizing:border-box}.la-ball-pulse-rise{display:block;font-size:0;color:#fff;width:70px;height:14px}.la-ball-pulse-rise.la-dark{color:#333}.la-ball-pulse-rise>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:2px;border-radius:100%;-webkit-animation:1s cubic-bezier(.15,.36,.9,.6) infinite ball-pulse-rise-even;animation:1s cubic-bezier(.15,.36,.9,.6) infinite ball-pulse-rise-even}.la-ball-pulse-rise>div:nth-child(2n-1){-webkit-animation-name:ball-pulse-rise-odd;animation-name:ball-pulse-rise-odd}.la-ball-pulse-rise.la-sm{width:34px;height:6px}.la-ball-pulse-rise.la-sm>div{width:4px;height:4px;margin:1px}.la-ball-pulse-rise.la-2x{width:140px;height:28px}.la-ball-pulse-rise.la-2x>div{width:20px;height:20px;margin:4px}.la-ball-pulse-rise.la-3x{width:210px;height:42px}.la-ball-pulse-rise.la-3x>div{width:30px;height:30px;margin:6px}@-webkit-keyframes ball-pulse-rise-even{0%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}25%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}50%{opacity:.35;-webkit-transform:scale(.3);transform:scale(.3)}75%{-webkit-transform:translateY(200%);transform:translateY(200%)}100%{opacity:1;-webkit-transform:translateY(0);-webkit-transform:scale(1);transform:translateY(0);transform:scale(1)}}@keyframes ball-pulse-rise-even{0%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}25%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}50%{opacity:.35;-webkit-transform:scale(.3);transform:scale(.3)}75%{-webkit-transform:translateY(200%);transform:translateY(200%)}100%{opacity:1;-webkit-transform:translateY(0);-webkit-transform:scale(1);transform:translateY(0);transform:scale(1)}}@-webkit-keyframes ball-pulse-rise-odd{0%{opacity:.35;-webkit-transform:scale(.4);transform:scale(.4)}25%{-webkit-transform:translateY(200%);transform:translateY(200%)}50%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}75%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}100%{opacity:.35;-webkit-transform:translateY(0);-webkit-transform:scale(.75);transform:translateY(0);transform:scale(.75)}}@keyframes ball-pulse-rise-odd{0%{opacity:.35;-webkit-transform:scale(.4);transform:scale(.4)}25%{-webkit-transform:translateY(200%);transform:translateY(200%)}50%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}75%{-webkit-transform:translateY(-200%);transform:translateY(-200%)}100%{opacity:.35;-webkit-transform:translateY(0);-webkit-transform:scale(.75);transform:translateY(0);transform:scale(.75)}}.la-ball-pulse-sync,.la-ball-pulse-sync>div{position:relative;box-sizing:border-box}.la-ball-pulse-sync{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-pulse-sync.la-dark{color:#333}.la-ball-pulse-sync>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;-webkit-animation:.6s ease-in-out infinite ball-pulse-sync;animation:.6s ease-in-out infinite ball-pulse-sync}.la-ball-pulse-sync>div:nth-child(1){-webkit-animation-delay:-.14s;animation-delay:-.14s}.la-ball-pulse-sync>div:nth-child(2){-webkit-animation-delay:-.07s;animation-delay:-.07s}.la-ball-pulse-sync>div:nth-child(3){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-pulse-sync.la-sm{width:26px;height:8px}.la-ball-pulse-sync.la-sm>div{width:4px;height:4px;margin:2px}.la-ball-pulse-sync.la-2x{width:108px;height:36px}.la-ball-pulse-sync.la-2x>div{width:20px;height:20px;margin:8px}.la-ball-pulse-sync.la-3x{width:162px;height:54px}.la-ball-pulse-sync.la-3x>div{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-pulse-sync{33%{-webkit-transform:translateY(100%);transform:translateY(100%)}66%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes ball-pulse-sync{33%{-webkit-transform:translateY(100%);transform:translateY(100%)}66%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.la-ball-pulse,.la-ball-pulse>div{position:relative;box-sizing:border-box}.la-ball-pulse{display:block;font-size:0;color:#fff;width:54px;height:18px}.la-ball-pulse.la-dark{color:#333}.la-ball-pulse>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;margin:4px;border-radius:100%;-webkit-animation:1s infinite ball-pulse;animation:1s infinite ball-pulse}.la-ball-pulse>div:nth-child(1){-webkit-animation-delay:-.2s;animation-delay:-.2s}.la-ball-pulse>div:nth-child(2){-webkit-animation-delay:-.1s;animation-delay:-.1s}.la-ball-pulse>div:nth-child(3){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-pulse.la-sm{width:26px;height:8px}.la-ball-pulse.la-sm>div{width:4px;height:4px;margin:2px}.la-ball-pulse.la-2x{width:108px;height:36px}.la-ball-pulse.la-2x>div{width:20px;height:20px;margin:8px}.la-ball-pulse.la-3x{width:162px;height:54px}.la-ball-pulse.la-3x>div{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-pulse{0%,100%,60%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}30%{opacity:.1;-webkit-transform:scale(.01);transform:scale(.01)}}@keyframes ball-pulse{0%,100%,60%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}30%{opacity:.1;-webkit-transform:scale(.01);transform:scale(.01)}}.la-ball-rotate,.la-ball-rotate>div{position:relative;box-sizing:border-box}.la-ball-rotate{display:block;font-size:0;color:#fff;width:10px;height:10px}.la-ball-rotate.la-dark{color:#333}.la-ball-rotate>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:10px;height:10px;border-radius:100%;-webkit-animation:1s cubic-bezier(.7,-.13,.22,.86) infinite ball-rotate-animation;animation:1s cubic-bezier(.7,-.13,.22,.86) infinite ball-rotate-animation}.la-ball-rotate>div:after,.la-ball-rotate>div:before{position:absolute;width:inherit;height:inherit;margin:inherit;content:\\\"\\\";background:currentColor;border-radius:inherit;opacity:.8}.la-ball-rotate>div:before{top:0;left:-150%}.la-ball-rotate>div:after{top:0;left:150%}.la-ball-rotate.la-sm,.la-ball-rotate.la-sm>div{width:4px;height:4px}.la-ball-rotate.la-2x,.la-ball-rotate.la-2x>div{width:20px;height:20px}.la-ball-rotate.la-3x,.la-ball-rotate.la-3x>div{width:30px;height:30px}@-webkit-keyframes ball-rotate-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-rotate-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-ball-running-dots,.la-ball-running-dots>div{position:relative;box-sizing:border-box}.la-ball-running-dots{display:block;font-size:0;color:#fff;width:10px;height:10px}.la-ball-running-dots.la-dark{color:#333}.la-ball-running-dots>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:10px;height:10px;margin-left:-25px;border-radius:100%;-webkit-animation:2s linear infinite ball-running-dots-animate;animation:2s linear infinite ball-running-dots-animate}.la-ball-running-dots>div:nth-child(1){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-running-dots>div:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}.la-ball-running-dots>div:nth-child(3){-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-ball-running-dots>div:nth-child(4){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-ball-running-dots>div:nth-child(5){-webkit-animation-delay:-1.6s;animation-delay:-1.6s}.la-ball-running-dots>div:nth-child(6){-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-running-dots>div:nth-child(7){-webkit-animation-delay:-2.4s;animation-delay:-2.4s}.la-ball-running-dots>div:nth-child(8){-webkit-animation-delay:-2.8s;animation-delay:-2.8s}.la-ball-running-dots>div:nth-child(9){-webkit-animation-delay:-3.2s;animation-delay:-3.2s}.la-ball-running-dots>div:nth-child(10){-webkit-animation-delay:-3.6s;animation-delay:-3.6s}.la-ball-running-dots.la-sm{width:4px;height:4px}.la-ball-running-dots.la-sm>div{width:4px;height:4px;margin-left:-12px}.la-ball-running-dots.la-2x{width:20px;height:20px}.la-ball-running-dots.la-2x>div{width:20px;height:20px;margin-left:-50px}.la-ball-running-dots.la-3x{width:30px;height:30px}.la-ball-running-dots.la-3x>div{width:30px;height:30px;margin-left:-75px}@-webkit-keyframes ball-running-dots-animate{0%,100%{width:100%;height:100%;-webkit-transform:translateY(0) translateX(500%);transform:translateY(0) translateX(500%)}80%{-webkit-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}85%{width:100%;height:100%;-webkit-transform:translateY(-125%) translateX(0);transform:translateY(-125%) translateX(0)}90%{width:200%;height:75%}95%{width:100%;height:100%;-webkit-transform:translateY(-100%) translateX(500%);transform:translateY(-100%) translateX(500%)}}@keyframes ball-running-dots-animate{0%,100%{width:100%;height:100%;-webkit-transform:translateY(0) translateX(500%);transform:translateY(0) translateX(500%)}80%{-webkit-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}85%{width:100%;height:100%;-webkit-transform:translateY(-125%) translateX(0);transform:translateY(-125%) translateX(0)}90%{width:200%;height:75%}95%{width:100%;height:100%;-webkit-transform:translateY(-100%) translateX(500%);transform:translateY(-100%) translateX(500%)}}.la-ball-scale-multiple,.la-ball-scale-multiple>div{position:relative;box-sizing:border-box}.la-ball-scale-multiple{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-multiple.la-dark{color:#333}.la-ball-scale-multiple>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:32px;height:32px;border-radius:100%;opacity:0;-webkit-animation:1s linear infinite ball-scale-multiple;animation:1s linear infinite ball-scale-multiple}.la-ball-scale-multiple>div:nth-child(2){-webkit-animation-delay:.2s;animation-delay:.2s}.la-ball-scale-multiple>div:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s}.la-ball-scale-multiple.la-sm,.la-ball-scale-multiple.la-sm>div{width:16px;height:16px}.la-ball-scale-multiple.la-2x,.la-ball-scale-multiple.la-2x>div{width:64px;height:64px}.la-ball-scale-multiple.la-3x,.la-ball-scale-multiple.la-3x>div{width:96px;height:96px}@-webkit-keyframes ball-scale-multiple{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}5%{opacity:.75}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-scale-multiple{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}5%{opacity:.75}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-scale-pulse,.la-ball-scale-pulse>div{position:relative;box-sizing:border-box}.la-ball-scale-pulse{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-pulse.la-dark{color:#333}.la-ball-scale-pulse>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:32px;height:32px;border-radius:100%;opacity:.5;-webkit-animation:2s ease-in-out infinite ball-scale-pulse;animation:2s ease-in-out infinite ball-scale-pulse}.la-ball-scale-pulse>div:last-child{-webkit-animation-delay:-1s;animation-delay:-1s}.la-ball-scale-pulse.la-sm,.la-ball-scale-pulse.la-sm>div{width:16px;height:16px}.la-ball-scale-pulse.la-2x,.la-ball-scale-pulse.la-2x>div{width:64px;height:64px}.la-ball-scale-pulse.la-3x,.la-ball-scale-pulse.la-3x>div{width:96px;height:96px}@-webkit-keyframes ball-scale-pulse{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-scale-pulse{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-scale-ripple-multiple,.la-ball-scale-ripple-multiple>div{position:relative;box-sizing:border-box}.la-ball-scale-ripple-multiple{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-ripple-multiple.la-dark{color:#333}.la-ball-scale-ripple-multiple>div{display:inline-block;float:none;border:2px solid currentColor;position:absolute;top:0;left:0;width:32px;height:32px;background:0 0;border-radius:100%;opacity:0;-webkit-animation:1.25s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple-multiple;animation:1.25s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple-multiple}.la-ball-scale-ripple-multiple>div:nth-child(1){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-scale-ripple-multiple>div:nth-child(2){-webkit-animation-delay:.25s;animation-delay:.25s}.la-ball-scale-ripple-multiple>div:nth-child(3){-webkit-animation-delay:.5s;animation-delay:.5s}.la-ball-scale-ripple-multiple.la-sm{width:16px;height:16px}.la-ball-scale-ripple-multiple.la-sm>div{width:16px;height:16px;border-width:1px}.la-ball-scale-ripple-multiple.la-2x{width:64px;height:64px}.la-ball-scale-ripple-multiple.la-2x>div{width:64px;height:64px;border-width:4px}.la-ball-scale-ripple-multiple.la-3x{width:96px;height:96px}.la-ball-scale-ripple-multiple.la-3x>div{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-scale-ripple-multiple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.5;-webkit-transform:scale(1);transform:scale(1)}95%{opacity:0}}@keyframes ball-scale-ripple-multiple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.5;-webkit-transform:scale(1);transform:scale(1)}95%{opacity:0}}.la-ball-scale-ripple,.la-ball-scale-ripple>div{position:relative;box-sizing:border-box}.la-ball-scale-ripple{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale-ripple.la-dark{color:#333}.la-ball-scale-ripple>div{display:inline-block;float:none;border:2px solid currentColor;width:32px;height:32px;background:0 0;border-radius:100%;opacity:0;-webkit-animation:1s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple;animation:1s cubic-bezier(.21,.53,.56,.8) infinite ball-scale-ripple}.la-ball-scale-ripple.la-sm{width:16px;height:16px}.la-ball-scale-ripple.la-sm>div{width:16px;height:16px;border-width:1px}.la-ball-scale-ripple.la-2x{width:64px;height:64px}.la-ball-scale-ripple.la-2x>div{width:64px;height:64px;border-width:4px}.la-ball-scale-ripple.la-3x{width:96px;height:96px}.la-ball-scale-ripple.la-3x>div{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-scale-ripple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.65;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0}}@keyframes ball-scale-ripple{0%{opacity:1;-webkit-transform:scale(.1);transform:scale(.1)}70%{opacity:.65;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0}}.la-ball-scale,.la-ball-scale>div{position:relative;box-sizing:border-box}.la-ball-scale{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-scale.la-dark{color:#333}.la-ball-scale>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:32px;height:32px;border-radius:100%;opacity:0;-webkit-animation:1s ease-in-out infinite ball-scale;animation:1s ease-in-out infinite ball-scale}.la-ball-scale.la-sm,.la-ball-scale.la-sm>div{width:16px;height:16px}.la-ball-scale.la-2x,.la-ball-scale.la-2x>div{width:64px;height:64px}.la-ball-scale.la-3x,.la-ball-scale.la-3x>div{width:96px;height:96px}@-webkit-keyframes ball-scale{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-scale{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin-clockwise-fade-rotating,.la-ball-spin-clockwise-fade-rotating>div{position:relative;box-sizing:border-box}.la-ball-spin-clockwise-fade-rotating{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite ball-spin-clockwise-fade-rotating-rotate;animation:6s linear infinite ball-spin-clockwise-fade-rotating-rotate}.la-ball-spin-clockwise-fade-rotating.la-dark{color:#333}.la-ball-spin-clockwise-fade-rotating>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-clockwise-fade-rotating;animation:1s linear infinite ball-spin-clockwise-fade-rotating}.la-ball-spin-clockwise-fade-rotating>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-spin-clockwise-fade-rotating>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-spin-clockwise-fade-rotating>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-spin-clockwise-fade-rotating>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-spin-clockwise-fade-rotating>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-spin-clockwise-fade-rotating>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-spin-clockwise-fade-rotating>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-spin-clockwise-fade-rotating>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-spin-clockwise-fade-rotating.la-sm{width:16px;height:16px}.la-ball-spin-clockwise-fade-rotating.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-clockwise-fade-rotating.la-2x{width:64px;height:64px}.la-ball-spin-clockwise-fade-rotating.la-2x>div{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-clockwise-fade-rotating.la-3x{width:96px;height:96px}.la-ball-spin-clockwise-fade-rotating.la-3x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes ball-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@-webkit-keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin-clockwise-fade,.la-ball-spin-clockwise-fade>div{position:relative;box-sizing:border-box}.la-ball-spin-clockwise-fade{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin-clockwise-fade.la-dark{color:#333}.la-ball-spin-clockwise-fade>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-clockwise-fade;animation:1s linear infinite ball-spin-clockwise-fade}.la-ball-spin-clockwise-fade>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-spin-clockwise-fade>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-spin-clockwise-fade>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-spin-clockwise-fade>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-spin-clockwise-fade>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-spin-clockwise-fade>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-spin-clockwise-fade>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-spin-clockwise-fade>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-spin-clockwise-fade.la-sm{width:16px;height:16px}.la-ball-spin-clockwise-fade.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-clockwise-fade.la-2x{width:64px;height:64px}.la-ball-spin-clockwise-fade.la-2x>div{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-clockwise-fade.la-3x{width:96px;height:96px}.la-ball-spin-clockwise-fade.la-3x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-clockwise-fade{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-spin-clockwise-fade{50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin-clockwise,.la-ball-spin-clockwise>div{position:relative;box-sizing:border-box}.la-ball-spin-clockwise{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin-clockwise.la-dark{color:#333}.la-ball-spin-clockwise>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-spin-clockwise;animation:1s ease-in-out infinite ball-spin-clockwise}.la-ball-spin-clockwise>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-spin-clockwise>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-spin-clockwise>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-spin-clockwise>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-spin-clockwise>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-spin-clockwise>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-spin-clockwise>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-spin-clockwise>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-spin-clockwise.la-sm{width:16px;height:16px}.la-ball-spin-clockwise.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-clockwise.la-2x{width:64px;height:64px}.la-ball-spin-clockwise.la-2x>div{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-clockwise.la-3x{width:96px;height:96px}.la-ball-spin-clockwise.la-3x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-clockwise{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}@keyframes ball-spin-clockwise{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}.la-ball-spin-fade-rotating,.la-ball-spin-fade-rotating>div{position:relative;box-sizing:border-box}.la-ball-spin-fade-rotating{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite ball-spin-fade-rotate;animation:6s linear infinite ball-spin-fade-rotate}.la-ball-spin-fade-rotating.la-dark{color:#333}.la-ball-spin-fade-rotating>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-fade;animation:1s linear infinite ball-spin-fade}.la-ball-spin-fade-rotating>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-spin-fade-rotating>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-spin-fade-rotating>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-spin-fade-rotating>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-spin-fade-rotating>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-spin-fade-rotating>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-spin-fade-rotating>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-spin-fade-rotating>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-spin-fade-rotating.la-sm{width:16px;height:16px}.la-ball-spin-fade-rotating.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-fade-rotating.la-2x{width:64px;height:64px}.la-ball-spin-fade-rotating.la-2x>div{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-fade-rotating.la-3x{width:96px;height:96px}.la-ball-spin-fade-rotating.la-3x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-fade-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-spin-fade-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-ball-spin-fade,.la-ball-spin-fade>div{position:relative;box-sizing:border-box}.la-ball-spin-fade{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin-fade.la-dark{color:#333}.la-ball-spin-fade>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s linear infinite ball-spin-fade;animation:1s linear infinite ball-spin-fade}.la-ball-spin-fade>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-spin-fade>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-spin-fade>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-spin-fade>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-spin-fade>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-spin-fade>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-spin-fade>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-spin-fade>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-spin-fade.la-sm{width:16px;height:16px}.la-ball-spin-fade.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin-fade.la-2x{width:64px;height:64px}.la-ball-spin-fade.la-2x>div{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin-fade.la-3x{width:96px;height:96px}.la-ball-spin-fade.la-3x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin-fade{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}}@keyframes ball-spin-fade{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.25;-webkit-transform:scale(.5);transform:scale(.5)}}.la-ball-spin-rotate,.la-ball-spin-rotate>div{position:relative;box-sizing:border-box}.la-ball-spin-rotate{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:2s linear infinite ball-spin-rotate;animation:2s linear infinite ball-spin-rotate}.la-ball-spin-rotate.la-dark{color:#333}.la-ball-spin-rotate>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;width:60%;height:60%;border-radius:100%;-webkit-animation:2s ease-in-out infinite ball-spin-bounce;animation:2s ease-in-out infinite ball-spin-bounce}.la-ball-spin-rotate>div:last-child{top:auto;bottom:0;-webkit-animation-delay:-1s;animation-delay:-1s}.la-ball-spin-rotate.la-sm{width:16px;height:16px}.la-ball-spin-rotate.la-2x{width:64px;height:64px}.la-ball-spin-rotate.la-3x{width:96px;height:96px}@-webkit-keyframes ball-spin-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-spin-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes ball-spin-bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-spin-bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-spin,.la-ball-spin>div{position:relative;box-sizing:border-box}.la-ball-spin{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-spin.la-dark{color:#333}.la-ball-spin>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:8px;height:8px;margin-top:-4px;margin-left:-4px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-spin;animation:1s ease-in-out infinite ball-spin}.la-ball-spin>div:nth-child(1){top:5%;left:50%;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-spin>div:nth-child(2){top:18.1801948466%;left:81.8198051534%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-spin>div:nth-child(3){top:50%;left:95%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-spin>div:nth-child(4){top:81.8198051534%;left:81.8198051534%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-spin>div:nth-child(5){top:94.9999999966%;left:50.0000000005%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-spin>div:nth-child(6){top:81.8198046966%;left:18.1801949248%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-spin>div:nth-child(7){top:49.9999750815%;left:5.0000051215%;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-spin>div:nth-child(8){top:18.179464974%;left:18.1803700518%;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-spin.la-sm{width:16px;height:16px}.la-ball-spin.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-spin.la-2x{width:64px;height:64px}.la-ball-spin.la-2x>div{width:16px;height:16px;margin-top:-8px;margin-left:-8px}.la-ball-spin.la-3x{width:96px;height:96px}.la-ball-spin.la-3x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}@-webkit-keyframes ball-spin{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}@keyframes ball-spin{0%,100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:1}80%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}.la-ball-square-clockwise-spin,.la-ball-square-clockwise-spin>div{position:relative;box-sizing:border-box}.la-ball-square-clockwise-spin{display:block;font-size:0;color:#fff;width:26px;height:26px}.la-ball-square-clockwise-spin.la-dark{color:#333}.la-ball-square-clockwise-spin>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:12px;height:12px;margin-top:-6px;margin-left:-6px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-square-clockwise-spin;animation:1s ease-in-out infinite ball-square-clockwise-spin}.la-ball-square-clockwise-spin>div:nth-child(1){top:0;left:0;-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-square-clockwise-spin>div:nth-child(2){top:0;left:50%;-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-square-clockwise-spin>div:nth-child(3){top:0;left:100%;-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-square-clockwise-spin>div:nth-child(4){top:50%;left:100%;-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-square-clockwise-spin>div:nth-child(5){top:100%;left:100%;-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-square-clockwise-spin>div:nth-child(6){top:100%;left:50%;-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-square-clockwise-spin>div:nth-child(7){top:100%;left:0;-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-square-clockwise-spin>div:nth-child(8){top:50%;left:0;-webkit-animation-delay:0s;animation-delay:0s}.la-ball-square-clockwise-spin.la-sm{width:12px;height:12px}.la-ball-square-clockwise-spin.la-sm>div{width:6px;height:6px;margin-top:-3px;margin-left:-3px}.la-ball-square-clockwise-spin.la-2x{width:52px;height:52px}.la-ball-square-clockwise-spin.la-2x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}.la-ball-square-clockwise-spin.la-3x{width:78px;height:78px}.la-ball-square-clockwise-spin.la-3x>div{width:36px;height:36px;margin-top:-18px;margin-left:-18px}@-webkit-keyframes ball-square-clockwise-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-square-clockwise-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-square-spin,.la-ball-square-spin>div{position:relative;box-sizing:border-box}.la-ball-square-spin{display:block;font-size:0;color:#fff;width:26px;height:26px}.la-ball-square-spin.la-dark{color:#333}.la-ball-square-spin>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:12px;height:12px;margin-top:-6px;margin-left:-6px;border-radius:100%;-webkit-animation:1s ease-in-out infinite ball-square-spin;animation:1s ease-in-out infinite ball-square-spin}.la-ball-square-spin>div:nth-child(1){top:0;left:0;-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-ball-square-spin>div:nth-child(2){top:0;left:50%;-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-ball-square-spin>div:nth-child(3){top:0;left:100%;-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-ball-square-spin>div:nth-child(4){top:50%;left:100%;-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-ball-square-spin>div:nth-child(5){top:100%;left:100%;-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-ball-square-spin>div:nth-child(6){top:100%;left:50%;-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-ball-square-spin>div:nth-child(7){top:100%;left:0;-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-ball-square-spin>div:nth-child(8){top:50%;left:0;-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-square-spin.la-sm{width:12px;height:12px}.la-ball-square-spin.la-sm>div{width:6px;height:6px;margin-top:-3px;margin-left:-3px}.la-ball-square-spin.la-2x{width:52px;height:52px}.la-ball-square-spin.la-2x>div{width:24px;height:24px;margin-top:-12px;margin-left:-12px}.la-ball-square-spin.la-3x{width:78px;height:78px}.la-ball-square-spin.la-3x>div{width:36px;height:36px;margin-top:-18px;margin-left:-18px}@-webkit-keyframes ball-square-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes ball-square-spin{0%,100%,40%{-webkit-transform:scale(.4);transform:scale(.4)}70%{-webkit-transform:scale(1);transform:scale(1)}}.la-ball-triangle-path,.la-ball-triangle-path>div{position:relative;box-sizing:border-box}.la-ball-triangle-path{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-ball-triangle-path.la-dark{color:#333}.la-ball-triangle-path>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:10px;height:10px;border-radius:100%}.la-ball-triangle-path>div:nth-child(1){-webkit-animation:2s ease-in-out infinite ball-triangle-path-ball-one;animation:2s ease-in-out infinite ball-triangle-path-ball-one}.la-ball-triangle-path>div:nth-child(2){-webkit-animation:2s ease-in-out infinite ball-triangle-path-ball-two;animation:2s ease-in-out infinite ball-triangle-path-ball-two}.la-ball-triangle-path>div:nth-child(3){-webkit-animation:2s ease-in-out infinite ball-triangle-path-ball-tree;animation:2s ease-in-out infinite ball-triangle-path-ball-tree}.la-ball-triangle-path.la-sm{width:16px;height:16px}.la-ball-triangle-path.la-sm>div{width:4px;height:4px}.la-ball-triangle-path.la-2x{width:64px;height:64px}.la-ball-triangle-path.la-2x>div{width:20px;height:20px}.la-ball-triangle-path.la-3x{width:96px;height:96px}.la-ball-triangle-path.la-3x>div{width:30px;height:30px}@-webkit-keyframes ball-triangle-path-ball-one{0%{-webkit-transform:translate(0,220%);transform:translate(0,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}66%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}100%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}}@keyframes ball-triangle-path-ball-one{0%{-webkit-transform:translate(0,220%);transform:translate(0,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}66%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}100%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}}@-webkit-keyframes ball-triangle-path-ball-two{0%{-webkit-transform:translate(110%,0);transform:translate(110%,0)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}66%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}100%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}}@keyframes ball-triangle-path-ball-two{0%{-webkit-transform:translate(110%,0);transform:translate(110%,0)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}66%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}100%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}}@-webkit-keyframes ball-triangle-path-ball-tree{0%{-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}66%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}100%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}}@keyframes ball-triangle-path-ball-tree{0%{-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}17%,50%,83%{opacity:.25}33%{opacity:1;-webkit-transform:translate(0,220%);transform:translate(0,220%)}66%{opacity:1;-webkit-transform:translate(110%,0);transform:translate(110%,0)}100%{opacity:1;-webkit-transform:translate(220%,220%);transform:translate(220%,220%)}}.la-ball-zig-zag-deflect,.la-ball-zig-zag-deflect>div{box-sizing:border-box}.la-ball-zig-zag-deflect{display:block;font-size:0;color:#fff;position:relative;width:32px;height:32px}.la-ball-zig-zag-deflect.la-dark{color:#333}.la-ball-zig-zag-deflect>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:10px;height:10px;margin-top:-5px;margin-left:-5px;border-radius:100%}.la-ball-zig-zag-deflect>div:first-child{-webkit-animation:1.5s linear infinite ball-zig-deflect;animation:1.5s linear infinite ball-zig-deflect}.la-ball-zig-zag-deflect>div:last-child{-webkit-animation:1.5s linear infinite ball-zag-deflect;animation:1.5s linear infinite ball-zag-deflect}.la-ball-zig-zag-deflect.la-sm{width:16px;height:16px}.la-ball-zig-zag-deflect.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-zig-zag-deflect.la-2x{width:64px;height:64px}.la-ball-zig-zag-deflect.la-2x>div{width:20px;height:20px;margin-top:-10px;margin-left:-10px}.la-ball-zig-zag-deflect.la-3x{width:96px;height:96px}.la-ball-zig-zag-deflect.la-3x>div{width:30px;height:30px;margin-top:-15px;margin-left:-15px}@-webkit-keyframes ball-zig-deflect{17%,84%{-webkit-transform:translate(-80%,-160%);transform:translate(-80%,-160%)}34%,67%{-webkit-transform:translate(80%,-160%);transform:translate(80%,-160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ball-zig-deflect{17%,84%{-webkit-transform:translate(-80%,-160%);transform:translate(-80%,-160%)}34%,67%{-webkit-transform:translate(80%,-160%);transform:translate(80%,-160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ball-zag-deflect{17%,84%{-webkit-transform:translate(80%,160%);transform:translate(80%,160%)}34%,67%{-webkit-transform:translate(-80%,160%);transform:translate(-80%,160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ball-zag-deflect{17%,84%{-webkit-transform:translate(80%,160%);transform:translate(80%,160%)}34%,67%{-webkit-transform:translate(-80%,160%);transform:translate(-80%,160%)}100%,50%{-webkit-transform:translate(0,0);transform:translate(0,0)}}.la-ball-zig-zag,.la-ball-zig-zag>div{box-sizing:border-box}.la-ball-zig-zag{display:block;font-size:0;color:#fff;position:relative;width:32px;height:32px}.la-ball-zig-zag.la-dark{color:#333}.la-ball-zig-zag>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:50%;left:50%;width:10px;height:10px;margin-top:-5px;margin-left:-5px;border-radius:100%}.la-ball-zig-zag>div:first-child{-webkit-animation:.7s linear infinite ball-zig-effect;animation:.7s linear infinite ball-zig-effect}.la-ball-zig-zag>div:last-child{-webkit-animation:.7s linear infinite ball-zag-effect;animation:.7s linear infinite ball-zag-effect}.la-ball-zig-zag.la-sm{width:16px;height:16px}.la-ball-zig-zag.la-sm>div{width:4px;height:4px;margin-top:-2px;margin-left:-2px}.la-ball-zig-zag.la-2x{width:64px;height:64px}.la-ball-zig-zag.la-2x>div{width:20px;height:20px;margin-top:-10px;margin-left:-10px}.la-ball-zig-zag.la-3x{width:96px;height:96px}.la-ball-zig-zag.la-3x>div{width:30px;height:30px;margin-top:-15px;margin-left:-15px}@-webkit-keyframes ball-zig-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(-75%,-150%);transform:translate(-75%,-150%)}66%{-webkit-transform:translate(75%,-150%);transform:translate(75%,-150%)}}@keyframes ball-zig-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(-75%,-150%);transform:translate(-75%,-150%)}66%{-webkit-transform:translate(75%,-150%);transform:translate(75%,-150%)}}@-webkit-keyframes ball-zag-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(75%,150%);transform:translate(75%,150%)}66%{-webkit-transform:translate(-75%,150%);transform:translate(-75%,150%)}}@keyframes ball-zag-effect{0%,100%{-webkit-transform:translate(0,0);transform:translate(0,0)}33%{-webkit-transform:translate(75%,150%);transform:translate(75%,150%)}66%{-webkit-transform:translate(-75%,150%);transform:translate(-75%,150%)}}.la-cog,.la-cog>div{position:relative;box-sizing:border-box}.la-cog{display:block;font-size:0;color:#fff;width:31px;height:31px}.la-cog.la-dark{color:#333}.la-cog>div{display:inline-block;float:none;border:2px dashed currentColor;width:100%;height:100%;background-color:transparent;border-radius:100%;-webkit-animation:4s linear infinite cog-rotate;animation:4s linear infinite cog-rotate}.la-cog>div:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\\\"\\\";border:2px solid currentColor;border-radius:100%}.la-cog.la-sm{width:15px;height:15px}.la-cog.la-sm>div,.la-cog.la-sm>div:after{border-width:1px}.la-cog.la-2x{width:61px;height:61px}.la-cog.la-2x>div,.la-cog.la-2x>div:after{border-width:4px}.la-cog.la-3x{width:91px;height:91px}.la-cog.la-3x>div,.la-cog.la-3x>div:after{border-width:6px}@-webkit-keyframes cog-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cog-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-cube-transition,.la-cube-transition>div{position:relative;box-sizing:border-box}.la-cube-transition{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-cube-transition.la-dark{color:#333}.la-cube-transition>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;top:0;left:0;width:14px;height:14px;margin-top:-7px;margin-left:-7px;border-radius:0;-webkit-animation:1.6s ease-in-out infinite cube-transition;animation:1.6s ease-in-out infinite cube-transition}.la-cube-transition>div:last-child{-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-cube-transition.la-sm{width:16px;height:16px}.la-cube-transition.la-sm>div{width:6px;height:6px;margin-top:-3px;margin-left:-3px}.la-cube-transition.la-2x{width:64px;height:64px}.la-cube-transition.la-2x>div{width:28px;height:28px;margin-top:-14px;margin-left:-14px}.la-cube-transition.la-3x{width:96px;height:96px}.la-cube-transition.la-3x>div{width:42px;height:42px;margin-top:-21px;margin-left:-21px}@-webkit-keyframes cube-transition{25%{top:0;left:100%;-webkit-transform:scale(.5) rotate(-90deg);transform:scale(.5) rotate(-90deg)}50%{top:100%;left:100%;-webkit-transform:scale(1) rotate(-180deg);transform:scale(1) rotate(-180deg)}75%{top:100%;left:0;-webkit-transform:scale(.5) rotate(-270deg);transform:scale(.5) rotate(-270deg)}100%{top:0;left:0;-webkit-transform:scale(1) rotate(-360deg);transform:scale(1) rotate(-360deg)}}@keyframes cube-transition{25%{top:0;left:100%;-webkit-transform:scale(.5) rotate(-90deg);transform:scale(.5) rotate(-90deg)}50%{top:100%;left:100%;-webkit-transform:scale(1) rotate(-180deg);transform:scale(1) rotate(-180deg)}75%{top:100%;left:0;-webkit-transform:scale(.5) rotate(-270deg);transform:scale(.5) rotate(-270deg)}100%{top:0;left:0;-webkit-transform:scale(1) rotate(-360deg);transform:scale(1) rotate(-360deg)}}.la-fire,.la-fire>div{position:relative;box-sizing:border-box}.la-fire{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-fire.la-dark{color:#333}.la-fire>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;bottom:0;left:50%;width:12px;height:12px;border-radius:2px;-webkit-transform:translateY(0) translateX(-50%) rotate(45deg) scale(0);transform:translateY(0) translateX(-50%) rotate(45deg) scale(0);-webkit-animation:1.5s linear infinite fire-diamonds;animation:1.5s linear infinite fire-diamonds}.la-fire>div:nth-child(1){-webkit-animation-delay:-.85s;animation-delay:-.85s}.la-fire>div:nth-child(2){-webkit-animation-delay:-1.85s;animation-delay:-1.85s}.la-fire>div:nth-child(3){-webkit-animation-delay:-2.85s;animation-delay:-2.85s}.la-fire.la-sm{width:16px;height:16px}.la-fire.la-sm>div{width:6px;height:6px}.la-fire.la-2x{width:64px;height:64px}.la-fire.la-2x>div{width:24px;height:24px}.la-fire.la-3x{width:96px;height:96px}.la-fire.la-3x>div{width:36px;height:36px}@-webkit-keyframes fire-diamonds{0%{-webkit-transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0)}50%{-webkit-transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1);transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1)}100%{-webkit-transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0)}}@keyframes fire-diamonds{0%{-webkit-transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0)}50%{-webkit-transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1);transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1)}100%{-webkit-transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0);transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0)}}.la-line-scale-party,.la-line-scale-party>div{position:relative;box-sizing:border-box}.la-line-scale-party{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale-party.la-dark{color:#333}.la-line-scale-party>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation-name:line-scale-party;animation-name:line-scale-party;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.la-line-scale-party>div:nth-child(1){-webkit-animation-duration:.43s;animation-duration:.43s;-webkit-animation-delay:-.23s;animation-delay:-.23s}.la-line-scale-party>div:nth-child(2){-webkit-animation-duration:.62s;animation-duration:.62s;-webkit-animation-delay:-.32s;animation-delay:-.32s}.la-line-scale-party>div:nth-child(3){-webkit-animation-duration:.43s;animation-duration:.43s;-webkit-animation-delay:-.44s;animation-delay:-.44s}.la-line-scale-party>div:nth-child(4){-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-delay:-.31s;animation-delay:-.31s}.la-line-scale-party>div:nth-child(5){-webkit-animation-duration:.74s;animation-duration:.74s;-webkit-animation-delay:-.24s;animation-delay:-.24s}.la-line-scale-party.la-sm{width:20px;height:16px}.la-line-scale-party.la-sm>div{width:2px;height:16px;margin:0 1px}.la-line-scale-party.la-2x{width:80px;height:64px}.la-line-scale-party.la-2x>div{width:8px;height:64px;margin:0 4px}.la-line-scale-party.la-3x{width:120px;height:96px}.la-line-scale-party.la-3x>div{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale-party{0%,100%{-webkit-transform:scaleY(1);transform:scaleY(1)}50%{-webkit-transform:scaleY(.3);transform:scaleY(.3)}}@keyframes line-scale-party{0%,100%{-webkit-transform:scaleY(1);transform:scaleY(1)}50%{-webkit-transform:scaleY(.3);transform:scaleY(.3)}}.la-line-scale-pulse-out-rapid,.la-line-scale-pulse-out-rapid>div{position:relative;box-sizing:border-box}.la-line-scale-pulse-out-rapid{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale-pulse-out-rapid.la-dark{color:#333}.la-line-scale-pulse-out-rapid>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation:.9s cubic-bezier(.11,.49,.38,.78) infinite line-scale-pulse-out-rapid;animation:.9s cubic-bezier(.11,.49,.38,.78) infinite line-scale-pulse-out-rapid}.la-line-scale-pulse-out-rapid>div:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale-pulse-out-rapid>div:nth-child(2),.la-line-scale-pulse-out-rapid>div:nth-child(4){-webkit-animation-delay:-.65s;animation-delay:-.65s}.la-line-scale-pulse-out-rapid>div:nth-child(1),.la-line-scale-pulse-out-rapid>div:nth-child(5){-webkit-animation-delay:-.4s;animation-delay:-.4s}.la-line-scale-pulse-out-rapid.la-sm{width:20px;height:16px}.la-line-scale-pulse-out-rapid.la-sm>div{width:2px;height:16px;margin:0 1px}.la-line-scale-pulse-out-rapid.la-2x{width:80px;height:64px}.la-line-scale-pulse-out-rapid.la-2x>div{width:8px;height:64px;margin:0 4px}.la-line-scale-pulse-out-rapid.la-3x{width:120px;height:96px}.la-line-scale-pulse-out-rapid.la-3x>div{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale-pulse-out-rapid{0%,90%{-webkit-transform:scaley(1);transform:scaley(1)}80%{-webkit-transform:scaley(.3);transform:scaley(.3)}}@keyframes line-scale-pulse-out-rapid{0%,90%{-webkit-transform:scaley(1);transform:scaley(1)}80%{-webkit-transform:scaley(.3);transform:scaley(.3)}}.la-line-scale-pulse-out,.la-line-scale-pulse-out>div{position:relative;box-sizing:border-box}.la-line-scale-pulse-out{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale-pulse-out.la-dark{color:#333}.la-line-scale-pulse-out>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation:.9s cubic-bezier(.85,.25,.37,.85) infinite line-scale-pulse-out;animation:.9s cubic-bezier(.85,.25,.37,.85) infinite line-scale-pulse-out}.la-line-scale-pulse-out>div:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale-pulse-out>div:nth-child(2),.la-line-scale-pulse-out>div:nth-child(4){-webkit-animation-delay:-.7s;animation-delay:-.7s}.la-line-scale-pulse-out>div:nth-child(1),.la-line-scale-pulse-out>div:nth-child(5){-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-line-scale-pulse-out.la-sm{width:20px;height:16px}.la-line-scale-pulse-out.la-sm>div{width:2px;height:16px;margin:0 1px}.la-line-scale-pulse-out.la-2x{width:80px;height:64px}.la-line-scale-pulse-out.la-2x>div{width:8px;height:64px;margin:0 4px}.la-line-scale-pulse-out.la-3x{width:120px;height:96px}.la-line-scale-pulse-out.la-3x>div{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale-pulse-out{0%,100%{-webkit-transform:scaley(1);transform:scaley(1)}50%{-webkit-transform:scaley(.3);transform:scaley(.3)}}@keyframes line-scale-pulse-out{0%,100%{-webkit-transform:scaley(1);transform:scaley(1)}50%{-webkit-transform:scaley(.3);transform:scaley(.3)}}.la-line-scale,.la-line-scale>div{position:relative;box-sizing:border-box}.la-line-scale{display:block;font-size:0;color:#fff;width:40px;height:32px}.la-line-scale.la-dark{color:#333}.la-line-scale>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:4px;height:32px;margin:0 2px;border-radius:0;-webkit-animation:1.2s infinite line-scale;animation:1.2s infinite line-scale}.la-line-scale>div:nth-child(1){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-line-scale>div:nth-child(2){-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.la-line-scale>div:nth-child(3){-webkit-animation-delay:-1s;animation-delay:-1s}.la-line-scale>div:nth-child(4){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale>div:nth-child(5){-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-line-scale.la-sm{width:20px;height:16px}.la-line-scale.la-sm>div{width:2px;height:16px;margin:0 1px}.la-line-scale.la-2x{width:80px;height:64px}.la-line-scale.la-2x>div{width:8px;height:64px;margin:0 4px}.la-line-scale.la-3x{width:120px;height:96px}.la-line-scale.la-3x>div{width:12px;height:96px;margin:0 6px}@-webkit-keyframes line-scale{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes line-scale{0%,100%,40%{-webkit-transform:scaleY(.4);transform:scaleY(.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}.la-line-spin-clockwise-fade-rotating,.la-line-spin-clockwise-fade-rotating>div{position:relative;box-sizing:border-box}.la-line-spin-clockwise-fade-rotating{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite line-spin-clockwise-fade-rotating-rotate;animation:6s linear infinite line-spin-clockwise-fade-rotating-rotate}.la-line-spin-clockwise-fade-rotating.la-dark{color:#333}.la-line-spin-clockwise-fade-rotating>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-clockwise-fade-rotating;animation:1s ease-in-out infinite line-spin-clockwise-fade-rotating}.la-line-spin-clockwise-fade-rotating>div:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-line-spin-clockwise-fade-rotating>div:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-line-spin-clockwise-fade-rotating>div:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-line-spin-clockwise-fade-rotating>div:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-line-spin-clockwise-fade-rotating>div:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-line-spin-clockwise-fade-rotating>div:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-line-spin-clockwise-fade-rotating>div:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-line-spin-clockwise-fade-rotating>div:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:0s;animation-delay:0s}.la-line-spin-clockwise-fade-rotating.la-sm{width:16px;height:16px}.la-line-spin-clockwise-fade-rotating.la-sm>div{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-clockwise-fade-rotating.la-2x{width:64px;height:64px}.la-line-spin-clockwise-fade-rotating.la-2x>div{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-clockwise-fade-rotating.la-3x{width:96px;height:96px}.la-line-spin-clockwise-fade-rotating.la-3x>div{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes line-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes line-spin-clockwise-fade-rotating-rotate{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@-webkit-keyframes line-spin-clockwise-fade-rotating{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-clockwise-fade-rotating{50%{opacity:.2}100%{opacity:1}}.la-line-spin-clockwise-fade,.la-line-spin-clockwise-fade>div{position:relative;box-sizing:border-box}.la-line-spin-clockwise-fade{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-line-spin-clockwise-fade.la-dark{color:#333}.la-line-spin-clockwise-fade>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-clockwise-fade;animation:1s ease-in-out infinite line-spin-clockwise-fade}.la-line-spin-clockwise-fade>div:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-line-spin-clockwise-fade>div:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-line-spin-clockwise-fade>div:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-line-spin-clockwise-fade>div:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-line-spin-clockwise-fade>div:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-line-spin-clockwise-fade>div:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-line-spin-clockwise-fade>div:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-line-spin-clockwise-fade>div:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:0s;animation-delay:0s}.la-line-spin-clockwise-fade.la-sm{width:16px;height:16px}.la-line-spin-clockwise-fade.la-sm>div{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-clockwise-fade.la-2x{width:64px;height:64px}.la-line-spin-clockwise-fade.la-2x>div{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-clockwise-fade.la-3x{width:96px;height:96px}.la-line-spin-clockwise-fade.la-3x>div{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes line-spin-clockwise-fade{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-clockwise-fade{50%{opacity:.2}100%{opacity:1}}.la-line-spin-fade-rotating,.la-line-spin-fade-rotating>div{position:relative;box-sizing:border-box}.la-line-spin-fade-rotating{display:block;font-size:0;color:#fff;width:32px;height:32px;-webkit-animation:6s linear infinite ball-spin-fade-rotating-rotate;animation:6s linear infinite ball-spin-fade-rotating-rotate}.la-line-spin-fade-rotating.la-dark{color:#333}.la-line-spin-fade-rotating>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-fade-rotating;animation:1s ease-in-out infinite line-spin-fade-rotating}.la-line-spin-fade-rotating>div:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-line-spin-fade-rotating>div:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-line-spin-fade-rotating>div:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-line-spin-fade-rotating>div:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-line-spin-fade-rotating>div:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-line-spin-fade-rotating>div:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-line-spin-fade-rotating>div:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-line-spin-fade-rotating>div:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:-2s;animation-delay:-2s}.la-line-spin-fade-rotating.la-sm{width:16px;height:16px}.la-line-spin-fade-rotating.la-sm>div{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-fade-rotating.la-2x{width:64px;height:64px}.la-line-spin-fade-rotating.la-2x>div{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-fade-rotating.la-3x{width:96px;height:96px}.la-line-spin-fade-rotating.la-3x>div{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes ball-spin-fade-rotating-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-spin-fade-rotating-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes line-spin-fade-rotating{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-fade-rotating{50%{opacity:.2}100%{opacity:1}}.la-line-spin-fade,.la-line-spin-fade>div{position:relative;box-sizing:border-box}.la-line-spin-fade{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-line-spin-fade.la-dark{color:#333}.la-line-spin-fade>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;position:absolute;width:2px;height:10px;margin:-5px 2px 2px -1px;border-radius:0;-webkit-animation:1s ease-in-out infinite line-spin-fade;animation:1s ease-in-out infinite line-spin-fade}.la-line-spin-fade>div:nth-child(1){top:15%;left:50%;-webkit-transform:rotate(0);transform:rotate(0);-webkit-animation-delay:-1.125s;animation-delay:-1.125s}.la-line-spin-fade>div:nth-child(2){top:25.2512626585%;left:74.7487373415%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation-delay:-1.25s;animation-delay:-1.25s}.la-line-spin-fade>div:nth-child(3){top:50%;left:85%;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-animation-delay:-1.375s;animation-delay:-1.375s}.la-line-spin-fade>div:nth-child(4){top:74.7487373415%;left:74.7487373415%;-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.la-line-spin-fade>div:nth-child(5){top:84.9999999974%;left:50.0000000004%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-animation-delay:-1.625s;animation-delay:-1.625s}.la-line-spin-fade>div:nth-child(6){top:74.7487369862%;left:25.2512627193%;-webkit-transform:rotate(225deg);transform:rotate(225deg);-webkit-animation-delay:-1.75s;animation-delay:-1.75s}.la-line-spin-fade>div:nth-child(7){top:49.9999806189%;left:15.0000039834%;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-animation-delay:-1.875s;animation-delay:-1.875s}.la-line-spin-fade>div:nth-child(8){top:25.2506949798%;left:25.2513989292%;-webkit-transform:rotate(315deg);transform:rotate(315deg);-webkit-animation-delay:-2s;animation-delay:-2s}.la-line-spin-fade.la-sm{width:16px;height:16px}.la-line-spin-fade.la-sm>div{width:1px;height:4px;margin-top:-2px;margin-left:0}.la-line-spin-fade.la-2x{width:64px;height:64px}.la-line-spin-fade.la-2x>div{width:4px;height:20px;margin-top:-10px;margin-left:-2px}.la-line-spin-fade.la-3x{width:96px;height:96px}.la-line-spin-fade.la-3x>div{width:6px;height:30px;margin-top:-15px;margin-left:-3px}@-webkit-keyframes line-spin-fade{50%{opacity:.2}100%{opacity:1}}@keyframes line-spin-fade{50%{opacity:.2}100%{opacity:1}}.la-pacman,.la-pacman>div{position:relative;box-sizing:border-box}.la-pacman{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-pacman.la-dark{color:#333}.la-pacman>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-pacman>div:nth-child(1),.la-pacman>div:nth-child(2){width:0;height:0;background:0 0;border-style:solid;border-width:16px;border-right-color:transparent;border-radius:100%;-webkit-animation:.5s infinite pacman-rotate-half-up;animation:.5s infinite pacman-rotate-half-up}.la-pacman>div:nth-child(2){margin-top:-32px;-webkit-animation-name:pacman-rotate-half-down;animation-name:pacman-rotate-half-down}.la-pacman>div:nth-child(3),.la-pacman>div:nth-child(4),.la-pacman>div:nth-child(5),.la-pacman>div:nth-child(6){position:absolute;top:50%;left:200%;width:8px;height:8px;border-radius:100%;opacity:0;-webkit-animation:2s linear infinite pacman-balls;animation:2s linear infinite pacman-balls}.la-pacman>div:nth-child(3){-webkit-animation-delay:-1.44s;animation-delay:-1.44s}.la-pacman>div:nth-child(4){-webkit-animation-delay:-1.94s;animation-delay:-1.94s}.la-pacman>div:nth-child(5){-webkit-animation-delay:-2.44s;animation-delay:-2.44s}.la-pacman>div:nth-child(6){-webkit-animation-delay:-2.94s;animation-delay:-2.94s}.la-pacman.la-sm{width:16px;height:16px}.la-pacman.la-sm>div:nth-child(1),.la-pacman.la-sm>div:nth-child(2){border-width:8px}.la-pacman.la-sm>div:nth-child(2){margin-top:-16px}.la-pacman.la-sm>div:nth-child(3),.la-pacman.la-sm>div:nth-child(4),.la-pacman.la-sm>div:nth-child(5),.la-pacman.la-sm>div:nth-child(6){width:4px;height:4px}.la-pacman.la-2x{width:64px;height:64px}.la-pacman.la-2x>div:nth-child(1),.la-pacman.la-2x>div:nth-child(2){border-width:32px}.la-pacman.la-2x>div:nth-child(2){margin-top:-64px}.la-pacman.la-2x>div:nth-child(3),.la-pacman.la-2x>div:nth-child(4),.la-pacman.la-2x>div:nth-child(5),.la-pacman.la-2x>div:nth-child(6){width:16px;height:16px}.la-pacman.la-3x{width:96px;height:96px}.la-pacman.la-3x>div:nth-child(1),.la-pacman.la-3x>div:nth-child(2){border-width:48px}.la-pacman.la-3x>div:nth-child(2){margin-top:-96px}.la-pacman.la-3x>div:nth-child(3),.la-pacman.la-3x>div:nth-child(4),.la-pacman.la-3x>div:nth-child(5),.la-pacman.la-3x>div:nth-child(6){width:24px;height:24px}@-webkit-keyframes pacman-rotate-half-up{0%,100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}50%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pacman-rotate-half-up{0%,100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}50%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes pacman-rotate-half-down{0%,100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes pacman-rotate-half-down{0%,100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes pacman-balls{0%{left:200%;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}5%{opacity:.5}66%{opacity:1}67%{opacity:0}100%{left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}}@keyframes pacman-balls{0%{left:200%;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}5%{opacity:.5}66%{opacity:1}67%{opacity:0}100%{left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}}.la-square-jelly-box,.la-square-jelly-box>div{position:relative;box-sizing:border-box}.la-square-jelly-box{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-square-jelly-box.la-dark{color:#333}.la-square-jelly-box>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-square-jelly-box>div:nth-child(1),.la-square-jelly-box>div:nth-child(2){position:absolute;left:0;width:100%}.la-square-jelly-box>div:nth-child(1){top:-25%;z-index:1;height:100%;border-radius:10%;-webkit-animation:.6s linear -.1s infinite square-jelly-box-animate;animation:.6s linear -.1s infinite square-jelly-box-animate}.la-square-jelly-box>div:nth-child(2){bottom:-9%;height:10%;background:#000;border-radius:50%;opacity:.2;-webkit-animation:.6s linear -.1s infinite square-jelly-box-shadow;animation:.6s linear -.1s infinite square-jelly-box-shadow}.la-square-jelly-box.la-sm{width:16px;height:16px}.la-square-jelly-box.la-2x{width:64px;height:64px}.la-square-jelly-box.la-3x{width:96px;height:96px}@-webkit-keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{-webkit-transform:translateY(25%) rotate(22.5deg);transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;-webkit-transform:translateY(50%) scale(1,.9) rotate(45deg);transform:translateY(50%) scale(1,.9) rotate(45deg)}75%{-webkit-transform:translateY(25%) rotate(67.5deg);transform:translateY(25%) rotate(67.5deg)}100%{-webkit-transform:translateY(0) rotate(90deg);transform:translateY(0) rotate(90deg)}}@keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{-webkit-transform:translateY(25%) rotate(22.5deg);transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;-webkit-transform:translateY(50%) scale(1,.9) rotate(45deg);transform:translateY(50%) scale(1,.9) rotate(45deg)}75%{-webkit-transform:translateY(25%) rotate(67.5deg);transform:translateY(25%) rotate(67.5deg)}100%{-webkit-transform:translateY(0) rotate(90deg);transform:translateY(0) rotate(90deg)}}@-webkit-keyframes square-jelly-box-shadow{50%{-webkit-transform:scale(1.25,1);transform:scale(1.25,1)}}@keyframes square-jelly-box-shadow{50%{-webkit-transform:scale(1.25,1);transform:scale(1.25,1)}}.la-square-loader,.la-square-loader>div{position:relative;box-sizing:border-box}.la-square-loader{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-square-loader.la-dark{color:#333}.la-square-loader>div{display:inline-block;float:none;border:2px solid currentColor;width:100%;height:100%;background:0 0;border-radius:0;-webkit-animation:2s infinite square-loader;animation:2s infinite square-loader}.la-square-loader>div:after{display:inline-block;width:100%;vertical-align:top;content:\\\"\\\";background-color:currentColor;-webkit-animation:2s ease-in infinite square-loader-inner;animation:2s ease-in infinite square-loader-inner}.la-square-loader.la-sm{width:16px;height:16px}.la-square-loader.la-sm>div{border-width:1px}.la-square-loader.la-2x{width:64px;height:64px}.la-square-loader.la-2x>div{border-width:4px}.la-square-loader.la-3x{width:96px;height:96px}.la-square-loader.la-3x>div{border-width:6px}@-webkit-keyframes square-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes square-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes square-loader-inner{0%,100%,25%{height:0}50%,75%{height:100%}}@keyframes square-loader-inner{0%,100%,25%{height:0}50%,75%{height:100%}}.la-square-spin,.la-square-spin>div{position:relative;box-sizing:border-box}.la-square-spin{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-square-spin.la-dark{color:#333}.la-square-spin>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor;width:100%;height:100%;border-radius:0;-webkit-animation:3s cubic-bezier(.09,.57,.49,.9) infinite square-spin;animation:3s cubic-bezier(.09,.57,.49,.9) infinite square-spin}.la-square-spin.la-sm{width:16px;height:16px}.la-square-spin.la-2x{width:64px;height:64px}.la-square-spin.la-3x{width:96px;height:96px}@-webkit-keyframes square-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}@keyframes square-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}.la-timer,.la-timer>div{position:relative;box-sizing:border-box}.la-timer{display:block;font-size:0;color:#fff;width:32px;height:32px}.la-timer.la-dark{color:#333}.la-timer>div{display:inline-block;float:none;border:2px solid currentColor;width:32px;height:32px;background:0 0;border-radius:100%}.la-timer>div:after,.la-timer>div:before{position:absolute;top:14px;left:14px;display:block;width:2px;margin-top:-1px;margin-left:-1px;content:\\\"\\\";background:currentColor;border-radius:2px;-webkit-transform-origin:1px 1px 0;transform-origin:1px 1px 0;-webkit-animation:1.25s linear -625ms infinite timer-loader;animation:1.25s linear -625ms infinite timer-loader}.la-timer>div:before{height:12px}.la-timer>div:after{height:8px;-webkit-animation-duration:15s;animation-duration:15s;-webkit-animation-delay:-7.5s;animation-delay:-7.5s}.la-timer.la-sm{width:16px;height:16px}.la-timer.la-sm>div{width:16px;height:16px;border-width:1px}.la-timer.la-sm>div:after,.la-timer.la-sm>div:before{top:7px;left:7px;width:1px;margin-top:-.5px;margin-left:-.5px;border-radius:1px;-webkit-transform-origin:.5px .5px 0;transform-origin:.5px .5px 0}.la-timer.la-sm>div:before{height:6px}.la-timer.la-sm>div:after{height:4px}.la-timer.la-2x{width:64px;height:64px}.la-timer.la-2x>div{width:64px;height:64px;border-width:4px}.la-timer.la-2x>div:after,.la-timer.la-2x>div:before{top:28px;left:28px;width:4px;margin-top:-2px;margin-left:-2px;border-radius:4px;-webkit-transform-origin:2px 2px 0;transform-origin:2px 2px 0}.la-timer.la-2x>div:before{height:24px}.la-timer.la-2x>div:after{height:16px}.la-timer.la-3x{width:96px;height:96px}.la-timer.la-3x>div{width:96px;height:96px;border-width:6px}.la-timer.la-3x>div:after,.la-timer.la-3x>div:before{top:42px;left:42px;width:6px;margin-top:-3px;margin-left:-3px;border-radius:6px;-webkit-transform-origin:3px 3px 0;transform-origin:3px 3px 0}.la-timer.la-3x>div:before{height:36px}.la-timer.la-3x>div:after{height:24px}@-webkit-keyframes timer-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes timer-loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.la-triangle-skew-spin,.la-triangle-skew-spin>div{position:relative;box-sizing:border-box}.la-triangle-skew-spin{display:block;font-size:0;color:#fff;width:32px;height:16px}.la-triangle-skew-spin.la-dark{color:#333}.la-triangle-skew-spin>div{display:inline-block;float:none;border:0 solid currentColor;width:0;height:0;background:0 0;border:solid;border-width:0 16px 16px;border-right-color:transparent;border-left-color:transparent;-webkit-animation:3s cubic-bezier(.09,.57,.49,.9) infinite triangle-skew-spin;animation:3s cubic-bezier(.09,.57,.49,.9) infinite triangle-skew-spin}.la-triangle-skew-spin.la-sm{width:16px;height:8px}.la-triangle-skew-spin.la-sm>div{border-width:0 8px 8px}.la-triangle-skew-spin.la-2x{width:64px;height:32px}.la-triangle-skew-spin.la-2x>div{border-width:0 32px 32px}.la-triangle-skew-spin.la-3x{width:96px;height:48px}.la-triangle-skew-spin.la-3x>div{border-width:0 48px 48px}@-webkit-keyframes triangle-skew-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}@keyframes triangle-skew-spin{0%{-webkit-transform:perspective(100px) rotateX(0) rotateY(0);transform:perspective(100px) rotateX(0) rotateY(0)}25%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(0);transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{-webkit-transform:perspective(100px) rotateX(180deg) rotateY(180deg);transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{-webkit-transform:perspective(100px) rotateX(0) rotateY(180deg);transform:perspective(100px) rotateX(0) rotateY(180deg)}100%{-webkit-transform:perspective(100px) rotateX(0) rotateY(360deg);transform:perspective(100px) rotateX(0) rotateY(360deg)}}.overlay{position:fixed;top:0;left:0;width:100%;height:100%}.overlay>div:not(.loading-text){top:50%;left:50%;margin:0;position:absolute;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.loading-text{position:absolute;top:60%;left:50%;-webkit-transform:translate(-50%,-60%);transform:translate(-50%,-60%)}\"]\n }]\n }], function () { return [{ type: NgxSpinnerService }, { type: ɵngcc0.ChangeDetectorRef }]; }, { bdColor: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], color: [{\n type: Input\n }], type: [{\n type: Input\n }], size: [{\n type: Input\n }], fullScreen: [{\n type: Input\n }], name: [{\n type: Input\n }], template: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxSpinnerModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [NgxSpinnerComponent],\n exports: [NgxSpinnerComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxSpinnerModule, { declarations: function () { return [NgxSpinnerComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgxSpinnerComponent]; } }); })();\n\n/*\n * Public API Surface of ngx-spinner\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxSpinnerComponent, NgxSpinnerModule, NgxSpinnerService };\n\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/** @type {?} */\nconst untilDestroyed = (componentInstance, destroyMethodName = 'ngOnDestroy') => (source) => {\n /** @type {?} */\n const originalDestroy = componentInstance[destroyMethodName];\n if (isFunction(originalDestroy) === false) {\n throw new Error(`${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`);\n }\n if (!componentInstance['__takeUntilDestroy']) {\n componentInstance['__takeUntilDestroy'] = new Subject();\n componentInstance[destroyMethodName] = function () {\n isFunction(originalDestroy) && originalDestroy.apply(this, arguments);\n componentInstance['__takeUntilDestroy'].next(true);\n componentInstance['__takeUntilDestroy'].complete();\n };\n }\n return source.pipe(takeUntil(componentInstance['__takeUntilDestroy']));\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { untilDestroyed };\n\n","import { Directive, ElementRef, NgModule, InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, ComponentFactoryResolver, ApplicationRef, SecurityContext, INJECTOR, NgZone, Injector, Component, HostBinding, HostListener } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { Subject } from 'rxjs';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DOCUMENT, CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/platform-browser';\nimport * as ɵngcc2 from '@angular/common';\n\nconst _c0 = [\"toast-component\", \"\"];\nfunction Toast_button_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function Toast_button_0_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.remove(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 6);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction Toast_div_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"[\", ctx_r7.duplicatesCount + 1, \"]\");\n} }\nfunction Toast_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, Toast_div_1_ng_container_2_Template, 2, 1, \"ng-container\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r1.options.titleClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.title, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.duplicatesCount);\n} }\nfunction Toast_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r2.options.messageClass);\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.message, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction Toast_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.options.messageClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r3.message);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.message, \" \");\n} }\nfunction Toast_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelement(1, \"div\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r4.width + \"%\");\n} }\nfunction ToastNoAnimation_button_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function ToastNoAnimation_button_0_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.remove(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 6);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction ToastNoAnimation_div_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"[\", ctx_r7.duplicatesCount + 1, \"]\");\n} }\nfunction ToastNoAnimation_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, ToastNoAnimation_div_1_ng_container_2_Template, 2, 1, \"ng-container\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r1.options.titleClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.title, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.duplicatesCount);\n} }\nfunction ToastNoAnimation_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r2.options.messageClass);\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.message, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction ToastNoAnimation_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.options.messageClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r3.message);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.message, \" \");\n} }\nfunction ToastNoAnimation_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelement(1, \"div\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r4.width + \"%\");\n} }\nclass ToastContainerDirective {\n constructor(el) {\n this.el = el;\n }\n getContainerElement() {\n return this.el.nativeElement;\n }\n}\nToastContainerDirective.ɵfac = function ToastContainerDirective_Factory(t) { return new (t || ToastContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nToastContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ToastContainerDirective, selectors: [[\"\", \"toastContainer\", \"\"]], exportAs: [\"toastContainer\"] });\nToastContainerDirective.ctorParameters = () => [\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[toastContainer]',\n exportAs: 'toastContainer'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, null); })();\nclass ToastContainerModule {\n}\nToastContainerModule.ɵfac = function ToastContainerModule_Factory(t) { return new (t || ToastContainerModule)(); };\nToastContainerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastContainerModule });\nToastContainerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastContainerModule, [{\n type: NgModule,\n args: [{\n declarations: [ToastContainerDirective],\n exports: [ToastContainerDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastContainerModule, { declarations: [ToastContainerDirective], exports: [ToastContainerDirective] }); })();\n\n/**\n * Everything a toast needs to launch\n */\nclass ToastPackage {\n constructor(toastId, config, message, title, toastType, toastRef) {\n this.toastId = toastId;\n this.config = config;\n this.message = message;\n this.title = title;\n this.toastType = toastType;\n this.toastRef = toastRef;\n this._onTap = new Subject();\n this._onAction = new Subject();\n this.toastRef.afterClosed().subscribe(() => {\n this._onAction.complete();\n this._onTap.complete();\n });\n }\n /** Fired on click */\n triggerTap() {\n this._onTap.next();\n if (this.config.tapToDismiss) {\n this._onTap.complete();\n }\n }\n onTap() {\n return this._onTap.asObservable();\n }\n /** available for use in custom toast */\n triggerAction(action) {\n this._onAction.next(action);\n }\n onAction() {\n return this._onAction.asObservable();\n }\n}\nconst DefaultNoComponentGlobalConfig = {\n maxOpened: 0,\n autoDismiss: false,\n newestOnTop: true,\n preventDuplicates: false,\n countDuplicates: false,\n resetTimeoutOnDuplicate: false,\n includeTitleDuplicates: false,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning',\n },\n // Individual\n closeButton: false,\n disableTimeOut: false,\n timeOut: 5000,\n extendedTimeOut: 1000,\n enableHtml: false,\n progressBar: false,\n toastClass: 'ngx-toastr',\n positionClass: 'toast-top-right',\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n easing: 'ease-in',\n easeTime: 300,\n tapToDismiss: true,\n onActivateTick: false,\n progressAnimation: 'decreasing',\n};\nconst TOAST_CONFIG = new InjectionToken('ToastConfig');\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal {\n constructor(component, injector) {\n this.component = component;\n this.injector = injector;\n }\n /** Attach this portal to a host. */\n attach(host, newestOnTop) {\n this._attachedHost = host;\n return host.attach(this, newestOnTop);\n }\n /** Detach this portal from its host */\n detach() {\n const host = this._attachedHost;\n if (host) {\n this._attachedHost = undefined;\n return host.detach();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nclass BasePortalHost {\n attach(portal, newestOnTop) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal, newestOnTop);\n }\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost();\n }\n this._attachedPortal = undefined;\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = undefined;\n }\n }\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n}\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nclass DomPortalHost extends BasePortalHost {\n constructor(_hostDomElement, _componentFactoryResolver, _appRef) {\n super();\n this._hostDomElement = _hostDomElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n */\n attachComponentPortal(portal, newestOnTop) {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the ChangeDetector for that component to the application (which\n // happens automatically when using a ViewContainer).\n componentRef = componentFactory.create(portal.injector);\n // When creating a component outside of a ViewContainer, we need to manually register\n // its ChangeDetector with the application. This API is unfortunately not yet published\n // in Angular core. The change detector must also be deregistered when the component\n // is destroyed to prevent memory leaks.\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n if (newestOnTop) {\n this._hostDomElement.insertBefore(this._getComponentRootNode(componentRef), this._hostDomElement.firstChild);\n }\n else {\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n }\n return componentRef;\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n\n/** Container inside which all toasts will render. */\nclass OverlayContainer {\n constructor(_document) {\n this._document = _document;\n }\n ngOnDestroy() {\n if (this._containerElement && this._containerElement.parentNode) {\n this._containerElement.parentNode.removeChild(this._containerElement);\n }\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const container = this._document.createElement('div');\n container.classList.add('overlay-container');\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = function OverlayContainer_Factory(t) { return new (t || OverlayContainer)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nOverlayContainer.ɵprov = ɵɵdefineInjectable({ factory: function OverlayContainer_Factory() { return new OverlayContainer(ɵɵinject(DOCUMENT)); }, token: OverlayContainer, providedIn: \"root\" });\nOverlayContainer.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OverlayContainer, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalHost) {\n this._portalHost = _portalHost;\n }\n attach(portal, newestOnTop = true) {\n return this._portalHost.attach(portal, newestOnTop);\n }\n /**\n * Detaches an overlay from a portal.\n * @returns Resolves when the overlay has been detached.\n */\n detach() {\n return this._portalHost.detach();\n }\n}\n\n/* tslint:disable:no-non-null-assertion */\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(_overlayContainer, _componentFactoryResolver, _appRef, _document) {\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._document = _document;\n // Namespace panes by overlay container\n this._paneElements = new Map();\n }\n /**\n * Creates an overlay.\n * @returns A reference to the created overlay.\n */\n create(positionClass, overlayContainer) {\n // get existing pane if possible\n return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n }\n getPaneElement(positionClass = '', overlayContainer) {\n if (!this._paneElements.get(overlayContainer)) {\n this._paneElements.set(overlayContainer, {});\n }\n if (!this._paneElements.get(overlayContainer)[positionClass]) {\n this._paneElements.get(overlayContainer)[positionClass] = this._createPaneElement(positionClass, overlayContainer);\n }\n return this._paneElements.get(overlayContainer)[positionClass];\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(positionClass, overlayContainer) {\n const pane = this._document.createElement('div');\n pane.id = 'toast-container';\n pane.classList.add(positionClass);\n pane.classList.add('toast-container');\n if (!overlayContainer) {\n this._overlayContainer.getContainerElement().appendChild(pane);\n }\n else {\n overlayContainer.getContainerElement().appendChild(pane);\n }\n return pane;\n }\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal host.\n * @returns A portal host for the given DOM element.\n */\n _createPortalHost(pane) {\n return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef);\n }\n /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param pane DOM element for the overlay\n */\n _createOverlayRef(pane) {\n return new OverlayRef(this._createPortalHost(pane));\n }\n}\nOverlay.ɵfac = function Overlay_Factory(t) { return new (t || Overlay)(ɵngcc0.ɵɵinject(OverlayContainer), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(DOCUMENT)); };\nOverlay.ɵprov = ɵɵdefineInjectable({ factory: function Overlay_Factory() { return new Overlay(ɵɵinject(OverlayContainer), ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(DOCUMENT)); }, token: Overlay, providedIn: \"root\" });\nOverlay.ctorParameters = () => [\n { type: OverlayContainer },\n { type: ComponentFactoryResolver },\n { type: ApplicationRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Overlay, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: OverlayContainer }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ApplicationRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nclass ToastRef {\n constructor(_overlayRef) {\n this._overlayRef = _overlayRef;\n /** Count of duplicates of this toast */\n this.duplicatesCount = 0;\n /** Subject for notifying the user that the toast has finished closing. */\n this._afterClosed = new Subject();\n /** triggered when toast is activated */\n this._activate = new Subject();\n /** notifies the toast that it should close before the timeout */\n this._manualClose = new Subject();\n /** notifies the toast that it should reset the timeouts */\n this._resetTimeout = new Subject();\n /** notifies the toast that it should count a duplicate toast */\n this._countDuplicate = new Subject();\n }\n manualClose() {\n this._manualClose.next();\n this._manualClose.complete();\n }\n manualClosed() {\n return this._manualClose.asObservable();\n }\n timeoutReset() {\n return this._resetTimeout.asObservable();\n }\n countDuplicate() {\n return this._countDuplicate.asObservable();\n }\n /**\n * Close the toast.\n */\n close() {\n this._overlayRef.detach();\n this._afterClosed.next();\n this._manualClose.next();\n this._afterClosed.complete();\n this._manualClose.complete();\n this._activate.complete();\n this._resetTimeout.complete();\n this._countDuplicate.complete();\n }\n /** Gets an observable that is notified when the toast is finished closing. */\n afterClosed() {\n return this._afterClosed.asObservable();\n }\n isInactive() {\n return this._activate.isStopped;\n }\n activate() {\n this._activate.next();\n this._activate.complete();\n }\n /** Gets an observable that is notified when the toast has started opening. */\n afterActivate() {\n return this._activate.asObservable();\n }\n /** Reset the toast timouts and count duplicates */\n onDuplicate(resetTimeout, countDuplicate) {\n if (resetTimeout) {\n this._resetTimeout.next();\n }\n if (countDuplicate) {\n this._countDuplicate.next(++this.duplicatesCount);\n }\n }\n}\n/** Custom injector type specifically for instantiating components with a toast. */\nclass ToastInjector {\n constructor(_toastPackage, _parentInjector) {\n this._toastPackage = _toastPackage;\n this._parentInjector = _parentInjector;\n }\n get(token, notFoundValue, flags) {\n if (token === ToastPackage) {\n return this._toastPackage;\n }\n return this._parentInjector.get(token, notFoundValue, flags);\n }\n}\n\nclass ToastrService {\n constructor(token, overlay, _injector, sanitizer, ngZone) {\n this.overlay = overlay;\n this._injector = _injector;\n this.sanitizer = sanitizer;\n this.ngZone = ngZone;\n this.currentlyActive = 0;\n this.toasts = [];\n this.index = 0;\n this.toastrConfig = Object.assign(Object.assign({}, token.default), token.config);\n if (token.config.iconClasses) {\n this.toastrConfig.iconClasses = Object.assign(Object.assign({}, token.default.iconClasses), token.config.iconClasses);\n }\n }\n /** show toast */\n show(message, title, override = {}, type = '') {\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show successful toast */\n success(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.success || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show error toast */\n error(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.error || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show info toast */\n info(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.info || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show warning toast */\n warning(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.warning || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /**\n * Remove all or a single toast by id\n */\n clear(toastId) {\n // Call every toastRef manualClose function\n for (const toast of this.toasts) {\n if (toastId !== undefined) {\n if (toast.toastId === toastId) {\n toast.toastRef.manualClose();\n return;\n }\n }\n else {\n toast.toastRef.manualClose();\n }\n }\n }\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId) {\n const found = this._findToast(toastId);\n if (!found) {\n return false;\n }\n found.activeToast.toastRef.close();\n this.toasts.splice(found.index, 1);\n this.currentlyActive = this.currentlyActive - 1;\n if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n return false;\n }\n if (this.currentlyActive < this.toastrConfig.maxOpened && this.toasts[this.currentlyActive]) {\n const p = this.toasts[this.currentlyActive].toastRef;\n if (!p.isInactive()) {\n this.currentlyActive = this.currentlyActive + 1;\n p.activate();\n }\n }\n return true;\n }\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(title = '', message = '', resetOnDuplicate, countDuplicates) {\n const { includeTitleDuplicates } = this.toastrConfig;\n for (const toast of this.toasts) {\n const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n if ((!includeTitleDuplicates || hasDuplicateTitle) && toast.message === message) {\n toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n return toast;\n }\n }\n return null;\n }\n /** create a clone of global config and apply individual settings */\n applyConfig(override = {}) {\n return Object.assign(Object.assign({}, this.toastrConfig), override);\n }\n /**\n * Find toast object by id\n */\n _findToast(toastId) {\n for (let i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].toastId === toastId) {\n return { index: i, activeToast: this.toasts[i] };\n }\n }\n return null;\n }\n /**\n * Determines the need to run inside angular's zone then builds the toast\n */\n _preBuildNotification(toastType, message, title, config) {\n if (config.onActivateTick) {\n return this.ngZone.run(() => this._buildNotification(toastType, message, title, config));\n }\n return this._buildNotification(toastType, message, title, config);\n }\n /**\n * Creates and attaches toast data to component\n * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n */\n _buildNotification(toastType, message, title, config) {\n if (!config.toastComponent) {\n throw new Error('toastComponent required');\n }\n // max opened and auto dismiss = true\n // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n // a timeout at all\n const duplicate = this.findDuplicate(title, message, this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0, this.toastrConfig.countDuplicates);\n if (((this.toastrConfig.includeTitleDuplicates && title) || message) &&\n this.toastrConfig.preventDuplicates &&\n duplicate !== null) {\n return duplicate;\n }\n this.previousToastMessage = message;\n let keepInactive = false;\n if (this.toastrConfig.maxOpened && this.currentlyActive >= this.toastrConfig.maxOpened) {\n keepInactive = true;\n if (this.toastrConfig.autoDismiss) {\n this.clear(this.toasts[0].toastId);\n }\n }\n const overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n this.index = this.index + 1;\n let sanitizedMessage = message;\n if (message && config.enableHtml) {\n sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n }\n const toastRef = new ToastRef(overlayRef);\n const toastPackage = new ToastPackage(this.index, config, sanitizedMessage, title, toastType, toastRef);\n const toastInjector = new ToastInjector(toastPackage, this._injector);\n const component = new ComponentPortal(config.toastComponent, toastInjector);\n const portal = overlayRef.attach(component, this.toastrConfig.newestOnTop);\n toastRef.componentInstance = portal.instance;\n const ins = {\n toastId: this.index,\n title: title || '',\n message: message || '',\n toastRef,\n onShown: toastRef.afterActivate(),\n onHidden: toastRef.afterClosed(),\n onTap: toastPackage.onTap(),\n onAction: toastPackage.onAction(),\n portal,\n };\n if (!keepInactive) {\n this.currentlyActive = this.currentlyActive + 1;\n setTimeout(() => {\n ins.toastRef.activate();\n });\n }\n this.toasts.push(ins);\n return ins;\n }\n}\nToastrService.ɵfac = function ToastrService_Factory(t) { return new (t || ToastrService)(ɵngcc0.ɵɵinject(TOAST_CONFIG), ɵngcc0.ɵɵinject(Overlay), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nToastrService.ɵprov = ɵɵdefineInjectable({ factory: function ToastrService_Factory() { return new ToastrService(ɵɵinject(TOAST_CONFIG), ɵɵinject(Overlay), ɵɵinject(INJECTOR), ɵɵinject(DomSanitizer), ɵɵinject(NgZone)); }, token: ToastrService, providedIn: \"root\" });\nToastrService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [TOAST_CONFIG,] }] },\n { type: Overlay },\n { type: Injector },\n { type: DomSanitizer },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastrService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [TOAST_CONFIG]\n }] }, { type: Overlay }, { type: ɵngcc0.Injector }, { type: ɵngcc1.DomSanitizer }, { type: ɵngcc0.NgZone }]; }, null); })();\n\nclass Toast {\n constructor(toastrService, toastPackage, ngZone) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.ngZone = ngZone;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime,\n easing: 'ease-in'\n }\n };\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state.value === 'inactive') {\n return 'none';\n }\n return;\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = Object.assign(Object.assign({}, this.state), { value: 'active' });\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.outsideTimeout(() => this.remove(), this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = Object.assign(Object.assign({}, this.state), { value: 'active' });\n this.outsideTimeout(() => this.remove(), this.originalTimeout);\n this.options.timeOut = this.originalTimeout;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = Object.assign(Object.assign({}, this.state), { value: 'removed' });\n this.outsideTimeout(() => this.toastrService.remove(this.toastPackage.toastId), +this.toastPackage.config.easeTime);\n }\n tapToast() {\n if (this.state.value === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state.value === 'removed') {\n return;\n }\n this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n outsideTimeout(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.timeout = setTimeout(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.timeout = setTimeout(() => func(), timeout);\n }\n }\n outsideInterval(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.intervalId = setInterval(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.intervalId = setInterval(() => func(), timeout);\n }\n }\n runInsideAngular(func) {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n }\n else {\n func();\n }\n }\n}\nToast.ɵfac = function Toast_Factory(t) { return new (t || Toast)(ɵngcc0.ɵɵdirectiveInject(ToastrService), ɵngcc0.ɵɵdirectiveInject(ToastPackage), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nToast.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: Toast, selectors: [[\"\", \"toast-component\", \"\"]], hostVars: 5, hostBindings: function Toast_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function Toast_click_HostBindingHandler() { return ctx.tapToast(); })(\"mouseenter\", function Toast_mouseenter_HostBindingHandler() { return ctx.stickAround(); })(\"mouseleave\", function Toast_mouseleave_HostBindingHandler() { return ctx.delayedHideToast(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵsyntheticHostProperty(\"@flyInOut\", ctx.state);\n ɵngcc0.ɵɵclassMap(ctx.toastClasses);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n } }, attrs: _c0, decls: 5, vars: 5, consts: [[\"class\", \"toast-close-button\", \"aria-label\", \"Close\", 3, \"click\", 4, \"ngIf\"], [3, \"class\", 4, \"ngIf\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\", 3, \"class\", \"innerHTML\", 4, \"ngIf\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\", 3, \"class\", 4, \"ngIf\"], [4, \"ngIf\"], [\"aria-label\", \"Close\", 1, \"toast-close-button\", 3, \"click\"], [\"aria-hidden\", \"true\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\", 3, \"innerHTML\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\"], [1, \"toast-progress\"]], template: function Toast_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, Toast_button_0_Template, 3, 0, \"button\", 0);\n ɵngcc0.ɵɵtemplate(1, Toast_div_1_Template, 3, 5, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, Toast_div_2_Template, 1, 3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, Toast_div_3_Template, 2, 4, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, Toast_div_4_Template, 2, 2, \"div\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.closeButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && !ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.progressBar);\n } }, directives: [ɵngcc2.NgIf], encapsulation: 2, data: { animation: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ] } });\nToast.ctorParameters = () => [\n { type: ToastrService },\n { type: ToastPackage },\n { type: NgZone }\n];\nToast.propDecorators = {\n toastClasses: [{ type: HostBinding, args: ['class',] }],\n state: [{ type: HostBinding, args: ['@flyInOut',] }],\n displayStyle: [{ type: HostBinding, args: ['style.display',] }],\n tapToast: [{ type: HostListener, args: ['click',] }],\n stickAround: [{ type: HostListener, args: ['mouseenter',] }],\n delayedHideToast: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Toast, [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n \n
    \n {{ title }} [{{ duplicatesCount + 1 }}]\n
    \n
    \n
    \n
    \n {{ message }}\n
    \n
    \n
    \n
    \n `,\n animations: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ],\n preserveWhitespaces: false\n }]\n }], function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: ɵngcc0.NgZone }]; }, { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], state: [{\n type: HostBinding,\n args: ['@flyInOut']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] }); })();\n\nconst DefaultGlobalConfig = Object.assign(Object.assign({}, DefaultNoComponentGlobalConfig), { toastComponent: Toast });\nclass ToastrModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastrModule.ɵfac = function ToastrModule_Factory(t) { return new (t || ToastrModule)(); };\nToastrModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastrModule });\nToastrModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastrModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [Toast],\n exports: [Toast],\n entryComponents: [Toast]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastrModule, { declarations: function () { return [Toast]; }, imports: function () { return [CommonModule]; }, exports: function () { return [Toast]; } }); })();\nclass ToastrComponentlessModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoComponentGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastrComponentlessModule.ɵfac = function ToastrComponentlessModule_Factory(t) { return new (t || ToastrComponentlessModule)(); };\nToastrComponentlessModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastrComponentlessModule });\nToastrComponentlessModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastrComponentlessModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastrComponentlessModule, { imports: function () { return [CommonModule]; } }); })();\n\nclass ToastNoAnimation {\n constructor(toastrService, toastPackage, appRef) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.appRef = appRef;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = 'inactive';\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state === 'inactive') {\n return 'none';\n }\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = 'active';\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n if (this.options.onActivateTick) {\n this.appRef.tick();\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = 'active';\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(() => this.remove(), this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = 'removed';\n this.timeout = setTimeout(() => this.toastrService.remove(this.toastPackage.toastId));\n }\n tapToast() {\n if (this.state === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state === 'removed') {\n return;\n }\n this.timeout = setTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n}\nToastNoAnimation.ɵfac = function ToastNoAnimation_Factory(t) { return new (t || ToastNoAnimation)(ɵngcc0.ɵɵdirectiveInject(ToastrService), ɵngcc0.ɵɵdirectiveInject(ToastPackage), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nToastNoAnimation.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToastNoAnimation, selectors: [[\"\", \"toast-component\", \"\"]], hostVars: 4, hostBindings: function ToastNoAnimation_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function ToastNoAnimation_click_HostBindingHandler() { return ctx.tapToast(); })(\"mouseenter\", function ToastNoAnimation_mouseenter_HostBindingHandler() { return ctx.stickAround(); })(\"mouseleave\", function ToastNoAnimation_mouseleave_HostBindingHandler() { return ctx.delayedHideToast(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.toastClasses);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n } }, attrs: _c0, decls: 5, vars: 5, consts: [[\"class\", \"toast-close-button\", \"aria-label\", \"Close\", 3, \"click\", 4, \"ngIf\"], [3, \"class\", 4, \"ngIf\"], [\"role\", \"alert\", \"aria-live\", \"polite\", 3, \"class\", \"innerHTML\", 4, \"ngIf\"], [\"role\", \"alert\", \"aria-live\", \"polite\", 3, \"class\", 4, \"ngIf\"], [4, \"ngIf\"], [\"aria-label\", \"Close\", 1, \"toast-close-button\", 3, \"click\"], [\"aria-hidden\", \"true\"], [\"role\", \"alert\", \"aria-live\", \"polite\", 3, \"innerHTML\"], [\"role\", \"alert\", \"aria-live\", \"polite\"], [1, \"toast-progress\"]], template: function ToastNoAnimation_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToastNoAnimation_button_0_Template, 3, 0, \"button\", 0);\n ɵngcc0.ɵɵtemplate(1, ToastNoAnimation_div_1_Template, 3, 5, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, ToastNoAnimation_div_2_Template, 1, 3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, ToastNoAnimation_div_3_Template, 2, 4, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, ToastNoAnimation_div_4_Template, 2, 2, \"div\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.closeButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && !ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.progressBar);\n } }, directives: [ɵngcc2.NgIf], encapsulation: 2 });\nToastNoAnimation.ctorParameters = () => [\n { type: ToastrService },\n { type: ToastPackage },\n { type: ApplicationRef }\n];\nToastNoAnimation.propDecorators = {\n toastClasses: [{ type: HostBinding, args: ['class',] }],\n displayStyle: [{ type: HostBinding, args: ['style.display',] }],\n tapToast: [{ type: HostListener, args: ['click',] }],\n stickAround: [{ type: HostListener, args: ['mouseenter',] }],\n delayedHideToast: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastNoAnimation, [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n \n
    \n {{ title }} [{{ duplicatesCount + 1 }}]\n
    \n
    \n
    \n
    \n {{ message }}\n
    \n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: ɵngcc0.ApplicationRef }]; }, { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] }); })();\nconst DefaultNoAnimationsGlobalConfig = Object.assign(Object.assign({}, DefaultNoComponentGlobalConfig), { toastComponent: ToastNoAnimation });\nclass ToastNoAnimationModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastNoAnimationModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoAnimationsGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastNoAnimationModule.ɵfac = function ToastNoAnimationModule_Factory(t) { return new (t || ToastNoAnimationModule)(); };\nToastNoAnimationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastNoAnimationModule });\nToastNoAnimationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastNoAnimationModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [ToastNoAnimation],\n exports: [ToastNoAnimation],\n entryComponents: [ToastNoAnimation]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastNoAnimationModule, { declarations: function () { return [ToastNoAnimation]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ToastNoAnimation]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, ComponentPortal, DefaultGlobalConfig, DefaultNoAnimationsGlobalConfig, DefaultNoComponentGlobalConfig, Overlay, OverlayContainer, OverlayRef, TOAST_CONFIG, Toast, ToastContainerDirective, ToastContainerModule, ToastInjector, ToastNoAnimation, ToastNoAnimationModule, ToastPackage, ToastRef, ToastrComponentlessModule, ToastrModule, ToastrService };\n\n","/*!\n * perfect-scrollbar v1.5.0\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nfunction processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nfunction updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.ceil(rect.width);\n i.containerHeight = Math.ceil(rect.height);\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nfunction clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n\nfunction dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n}\n\nfunction keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n\nfunction wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for `. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild === null || focusableChild === void 0 ? void 0 : focusableChild.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n var _a;\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !((_a = target.closest) === null || _a === void 0 ? void 0 : _a.call(target, 'div.cdk-overlay-pane'))) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n}\nConfigurableFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n // zero or `event.buttons` is zero, depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox.\n // Note that there's an edge case where the user could click the 0x0 spot of the\n // screen themselves, but that is unlikely to contain interactive elements.\n return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n var _a, _b;\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if ((_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.ignoreKeys) === null || _b === void 0 ? void 0 : _b.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = Object.assign(Object.assign({}, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS), options);\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n}\nInputModalityDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nInputModalityDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n this._currentResolve();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n var _a, _b;\n clearTimeout(this._previousTimeout);\n (_a = this._liveElement) === null || _a === void 0 ? void 0 : _a.remove();\n this._liveElement = null;\n (_b = this._currentResolve) === null || _b === void 0 ? void 0 : _b.call(this);\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n}\nLiveAnnouncer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLiveAnnouncer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }];\n } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n}\nCdkAriaLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAriaLive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n const handler = event.type === 'focus' ? this._onFocus : this._onBlur;\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n handler.call(this, event, element);\n }\n };\n this._document = document;\n this._detectionMode = (options === null || options === void 0 ? void 0 : options.detectionMode) || 0 /* IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n return of(null);\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
    \n //
    \n //
    \n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === 1 /* EVENTUAL */ ||\n !!(focusEventTarget === null || focusEventTarget === void 0 ? void 0 : focusEventTarget.contains(this._inputModalityDetector._mostRecentTarget)));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo.subject, null);\n }\n _emitOrigin(subject, origin) {\n this._ngZone.run(() => subject.next(origin));\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo.subject, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n}\nFocusMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }];\n } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this.cdkFocusChange = new EventEmitter();\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => this.cdkFocusChange.emit(origin));\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n}\nCdkMonitorFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkMonitorFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n case 'rgb(0,0,0)':\n return 2 /* WHITE_ON_BLACK */;\n case 'rgb(255,255,255)':\n return 1 /* BLACK_ON_WHITE */;\n }\n return 0 /* NONE */;\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n // IE11 doesn't support `classList` operations with multiple arguments\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === 2 /* WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n}\nHighContrastModeDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nHighContrastModeDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n}\nA11yModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule });\nA11yModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] });\nA11yModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, imports: [[ObserversModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Input, EventEmitter, Optional, Inject, SkipSelf, Output, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\nimport * as i1 from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion. */\nlet nextId$1 = 0;\n/**\n * Injection token that can be used to reference instances of `CdkAccordion`. It serves\n * as alternative token to the actual `CdkAccordion` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_ACCORDION = new InjectionToken('CdkAccordion');\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nclass CdkAccordion {\n constructor() {\n /** Emits when the state of the accordion changes */\n this._stateChanges = new Subject();\n /** Stream that emits true/false when openAll/closeAll is triggered. */\n this._openCloseAllActions = new Subject();\n /** A readonly id value to use for unique selection coordination. */\n this.id = `cdk-accordion-${nextId$1++}`;\n this._multi = false;\n }\n /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n get multi() {\n return this._multi;\n }\n set multi(multi) {\n this._multi = coerceBooleanProperty(multi);\n }\n /** Opens all enabled accordion items in an accordion where multi is enabled. */\n openAll() {\n if (this._multi) {\n this._openCloseAllActions.next(true);\n }\n }\n /** Closes all enabled accordion items in an accordion where multi is enabled. */\n closeAll() {\n this._openCloseAllActions.next(false);\n }\n ngOnChanges(changes) {\n this._stateChanges.next(changes);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n this._openCloseAllActions.complete();\n }\n}\nCdkAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordion.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAccordion, selector: \"cdk-accordion, [cdkAccordion]\", inputs: { multi: \"multi\" }, providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }], exportAs: [\"cdkAccordion\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordion, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion, [cdkAccordion]',\n exportAs: 'cdkAccordion',\n providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }],\n }]\n }], propDecorators: { multi: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion item. */\nlet nextId = 0;\n/**\n * An basic directive expected to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nclass CdkAccordionItem {\n constructor(accordion, _changeDetectorRef, _expansionDispatcher) {\n this.accordion = accordion;\n this._changeDetectorRef = _changeDetectorRef;\n this._expansionDispatcher = _expansionDispatcher;\n /** Subscription to openAll/closeAll events. */\n this._openCloseAllSubscription = Subscription.EMPTY;\n /** Event emitted every time the AccordionItem is closed. */\n this.closed = new EventEmitter();\n /** Event emitted every time the AccordionItem is opened. */\n this.opened = new EventEmitter();\n /** Event emitted when the AccordionItem is destroyed. */\n this.destroyed = new EventEmitter();\n /**\n * Emits whenever the expanded state of the accordion changes.\n * Primarily used to facilitate two-way binding.\n * @docs-private\n */\n this.expandedChange = new EventEmitter();\n /** The unique AccordionItem id. */\n this.id = `cdk-accordion-child-${nextId++}`;\n this._expanded = false;\n this._disabled = false;\n /** Unregister function for _expansionDispatcher. */\n this._removeUniqueSelectionListener = () => { };\n this._removeUniqueSelectionListener = _expansionDispatcher.listen((id, accordionId) => {\n if (this.accordion &&\n !this.accordion.multi &&\n this.accordion.id === accordionId &&\n this.id !== id) {\n this.expanded = false;\n }\n });\n // When an accordion item is hosted in an accordion, subscribe to open/close events.\n if (this.accordion) {\n this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();\n }\n }\n /** Whether the AccordionItem is expanded. */\n get expanded() {\n return this._expanded;\n }\n set expanded(expanded) {\n expanded = coerceBooleanProperty(expanded);\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n this.expandedChange.emit(expanded);\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n const accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n }\n else {\n this.closed.emit();\n }\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the AccordionItem is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n this._disabled = coerceBooleanProperty(disabled);\n }\n /** Emits an event for the accordion item being destroyed. */\n ngOnDestroy() {\n this.opened.complete();\n this.closed.complete();\n this.destroyed.emit();\n this.destroyed.complete();\n this._removeUniqueSelectionListener();\n this._openCloseAllSubscription.unsubscribe();\n }\n /** Toggles the expanded state of the accordion item. */\n toggle() {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n }\n }\n /** Sets the expanded state of the accordion item to false. */\n close() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n /** Sets the expanded state of the accordion item to true. */\n open() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n _subscribeToOpenCloseAllActions() {\n return this.accordion._openCloseAllActions.subscribe(expanded => {\n // Only change expanded state if item is enabled\n if (!this.disabled) {\n this.expanded = expanded;\n }\n });\n }\n}\nCdkAccordionItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionItem, deps: [{ token: CDK_ACCORDION, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i1.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordionItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAccordionItem, selector: \"cdk-accordion-item, [cdkAccordionItem]\", inputs: { expanded: \"expanded\", disabled: \"disabled\" }, outputs: { closed: \"closed\", opened: \"opened\", destroyed: \"destroyed\", expandedChange: \"expandedChange\" }, providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ], exportAs: [\"cdkAccordionItem\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionItem, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion-item, [cdkAccordionItem]',\n exportAs: 'cdkAccordionItem',\n providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ],\n }]\n }], ctorParameters: function () {\n return [{ type: CdkAccordion, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_ACCORDION]\n }, {\n type: SkipSelf\n }] }, { type: i0.ChangeDetectorRef }, { type: i1.UniqueSelectionDispatcher }];\n }, propDecorators: { closed: [{\n type: Output\n }], opened: [{\n type: Output\n }], destroyed: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkAccordionModule {\n}\nCdkAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule, declarations: [CdkAccordion, CdkAccordionItem], exports: [CdkAccordion, CdkAccordionItem] });\nCdkAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkAccordion, CdkAccordionItem],\n declarations: [CdkAccordion, CdkAccordionItem],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkAccordion, CdkAccordionItem, CdkAccordionModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n/** Resolves a string value to a specific direction. */\nfunction _resolveDirectionality(rawValue) {\n const value = (rawValue === null || rawValue === void 0 ? void 0 : rawValue.toLowerCase()) || '';\n if (value === 'auto' && typeof navigator !== 'undefined' && (navigator === null || navigator === void 0 ? void 0 : navigator.language)) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDirectionality.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Directionality, deps: [{ token: DIR_DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nDirectionality.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Directionality, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Directionality, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const previousValue = this._dir;\n // Note: `_resolveDirectionality` resolves the language based on the browser's language,\n // whereas the browser does it based on the content of the element. Since doing so based\n // on the content can be expensive, for now we're doing the simpler matching.\n this._dir = _resolveDirectionality(value);\n this._rawDir = value;\n if (previousValue !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: Dir, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Dir, decorators: [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir',\n }]\n }], propDecorators: { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BidiModule {\n}\nBidiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBidiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule, declarations: [Dir], exports: [Dir] });\nBidiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n","import { Version } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Current version of the Angular Component Development Kit. */\nconst VERSION = new Version('13.3.9');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport { VERSION };\n","import { ElementRef } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource.\n return value && typeof value.connect === 'function';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* INSERTED */;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* REMOVED */;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* INSERTED */ : 0 /* REPLACED */;\n }\n else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* REMOVED */;\n }\n else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /**\n * Selects a value or an array of values.\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Deselects a value or an array of values.\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Toggles a value between selected and deselected.\n */\n toggle(value) {\n this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n */\n clear() {\n this._unmarkAll();\n this._emitChangeEvent();\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(value);\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n this._selection.add(value);\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n}\nUniqueSelectionDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nUniqueSelectionDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n","import * as i0 from '@angular/core';\nimport { NgModule, Injectable } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LayoutModule {\n}\nLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule });\nLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform) {\n this._platform = _platform;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\nMediaMatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nMediaMatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n}\nBreakpointObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nBreakpointObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MediaMatcher }, { type: i0.NgZone }]; } });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\nMutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** Keeps track of the existing MutationObservers so they can be reused. */\n this._observedElements = new Map();\n }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\nContentObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });\nContentObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ContentObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ContentObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n constructor(_contentObserver, _elementRef, _ngZone) {\n this._contentObserver = _contentObserver;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Event emitted for each change in the element's content. */\n this.event = new EventEmitter();\n this._disabled = false;\n this._currentSubscription = null;\n }\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n // Consider brining it back inside the zone next time we're making breaking changes.\n // Bringing it back inside can cause things like infinite change detection loops and changed\n // after checked errors if people's code isn't handling it properly.\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n });\n }\n _unsubscribe() {\n var _a;\n (_a = this._currentSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n}\nCdkObserveContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkObserveContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\"], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkObserveContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n }]\n }], ctorParameters: function () { return [{ type: ContentObserver }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { event: [{\n type: Output,\n args: ['cdkObserveContent']\n }], disabled: [{\n type: Input,\n args: ['cdkObserveContentDisabled']\n }], debounce: [{\n type: Input\n }] } });\nclass ObserversModule {\n}\nObserversModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nObserversModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, declarations: [CdkObserveContent], exports: [CdkObserveContent] });\nObserversModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkObserveContent],\n declarations: [CdkObserveContent],\n providers: [MutationObserverFactory],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n","import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, ElementRef, Optional, ApplicationRef, InjectionToken, Directive, EventEmitter, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _isTestEnvironment, _getEventTarget } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0);\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n}\nScrollStrategyOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollStrategyOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = (event) => this._backdropClick.next(event);\n this._backdropTransitionendHandler = (event) => {\n this._disposeBackdrop(event.target);\n };\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n var _a;\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n (_a = this._host) === null || _a === void 0 ? void 0 : _a.remove();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = Object.assign(Object.assign({}, this._config), sizeConfig);\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = Object.assign(Object.assign({}, this._config), { direction: dir });\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n var _a;\n (_a = this._containerElement) === null || _a === void 0 ? void 0 : _a.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef &&\n overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y,\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculcations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stetches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin,\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width,\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height),\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._leftOffset = '';\n this._rightOffset = '';\n this._alignItems = '';\n this._justifyContent = '';\n this._width = '';\n this._height = '';\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._rightOffset = '';\n this._leftOffset = value;\n this._justifyContent = 'flex-start';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._leftOffset = '';\n this._rightOffset = value;\n this._justifyContent = 'flex-end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._justifyContent = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = this._rightOffset;\n if (shouldBeFlushHorizontally) {\n parentStyles.justifyContent = 'flex-start';\n }\n else if (this._justifyContent === 'center') {\n parentStyles.justifyContent = 'center';\n }\n else if (this._overlayRef.getConfig().direction === 'rtl') {\n // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n // don't want that because our positioning is explicitly `left` and `right`, hence\n // why we do another inversion to ensure that the overlay stays in the same position.\n // TODO: reconsider this if we add `start` and `end` methods.\n if (this._justifyContent === 'flex-start') {\n parentStyles.justifyContent = 'flex-end';\n }\n else if (this._justifyContent === 'flex-end') {\n parentStyles.justifyContent = 'flex-start';\n }\n }\n else {\n parentStyles.justifyContent = this._justifyContent;\n }\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent =\n parentStyles.alignItems =\n styles.marginTop =\n styles.marginBottom =\n styles.marginLeft =\n styles.marginRight =\n styles.position =\n '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n}\nOverlayPositionBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayPositionBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: OverlayContainer }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n}\nBaseOverlayDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBaseOverlayDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._ngZone = _ngZone;\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n }\n else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n }\n else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n}\nOverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget\n : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) ||\n overlayRef.overlayElement.contains(origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n }\n else {\n outsidePointerEvents.next(event);\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n }\n else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n}\nOverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }];\n } });\n\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(\n /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Overlay });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }];\n } });\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\nCdkOverlayOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkOverlayOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._hasBackdrop = false;\n this._lockPosition = false;\n this._growAfterOpen = false;\n this._flexibleDimensions = false;\n this._push = false;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether or not the overlay should attach a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /** Whether or not the overlay should be locked when scrolling. */\n get lockPosition() {\n return this._lockPosition;\n }\n set lockPosition(value) {\n this._lockPosition = coerceBooleanProperty(value);\n }\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n get flexibleDimensions() {\n return this._flexibleDimensions;\n }\n set flexibleDimensions(value) {\n this._flexibleDimensions = coerceBooleanProperty(value);\n }\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n get growAfterOpen() {\n return this._growAfterOpen;\n }\n set growAfterOpen(value) {\n this._growAfterOpen = coerceBooleanProperty(value);\n }\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n get push() {\n return this._push;\n }\n set push(value) {\n this._push = coerceBooleanProperty(value);\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = (this._position =\n this.positionStrategy || this._createPositionStrategy());\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getFlexibleConnectedPositionStrategyOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n }\n else {\n return this.origin;\n }\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n}\nCdkConnectedOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkConnectedOverlay.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n }]\n }], ctorParameters: function () {\n return [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }] }, { type: i5.Directionality, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }], hasBackdrop: [{\n type: Input,\n args: ['cdkConnectedOverlayHasBackdrop']\n }], lockPosition: [{\n type: Input,\n args: ['cdkConnectedOverlayLockPosition']\n }], flexibleDimensions: [{\n type: Input,\n args: ['cdkConnectedOverlayFlexibleDimensions']\n }], growAfterOpen: [{\n type: Input,\n args: ['cdkConnectedOverlayGrowAfterOpen']\n }], push: [{\n type: Input,\n args: ['cdkConnectedOverlayPush']\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass OverlayModule {\n}\nOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, declarations: [CdkConnectedOverlay, CdkOverlayOrigin], imports: [BidiModule, PortalModule, ScrollingModule], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });\nOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return (_document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null);\n }\n}\nFullscreenOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nFullscreenOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch (_a) {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass PlatformModule {\n}\nPlatformModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPlatformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule });\nPlatformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","import * as i0 from '@angular/core';\nimport { ElementRef, Injector, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(template, viewContainerRef, context) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n /**\n * @param outletElement Element into which the content is projected.\n * @param _componentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {\n throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');\n }\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\nCdkPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkPortal, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTemplatePortalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: TemplatePortalDirective, selector: \"[cdk-portal], [portal]\", providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ],\n }]\n }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
    `\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n ? nativeElement\n : nativeElement.parentNode);\n }\n}\nCdkPortalOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortalOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { attached: [{\n type: Output\n }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPortalHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: PortalHostDirective, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ],\n }]\n }] });\nclass PortalModule {\n}\nPortalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPortalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule, declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] });\nPortalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n","import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior } from '@angular/cdk/platform';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n}\nCdkFixedSizeVirtualScroll.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkFixedSizeVirtualScroll.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ],\n }]\n }], propDecorators: { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0\n ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while ((element = element.parentElement));\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n}\nScrollDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* INVERTED */) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == 1 /* NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n}\nCdkScrollable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkScrollable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollable, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }];\n } });\n\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => (this._viewportSize = null));\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top ||\n document.body.scrollTop ||\n window.scrollY ||\n documentElement.scrollTop ||\n 0;\n const left = -documentRect.left ||\n document.body.scrollLeft ||\n window.scrollX ||\n documentElement.scrollLeft ||\n 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser\n ? { width: window.innerWidth, height: window.innerHeight }\n : { width: 0, height: 0 };\n }\n}\nViewportRuler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nViewportRuler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ViewportRuler, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ViewportRuler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkScrollable {\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n this._appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n }\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(value) {\n this._appendOnly = coerceBooleanProperty(value);\n }\n ngOnInit() {\n super.ngOnInit();\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n // in appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the viewport (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n return from\n ? super.measureScrollOffset(from)\n : super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n const viewportEl = this.elementRef.nativeElement;\n this._viewportSize =\n this.orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n}\nCdkVirtualScrollViewport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }], target: i0.ɵɵFactoryTarget.Component });\nCdkVirtualScrollViewport.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n {\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport,\n },\n ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport,\n },\n ], template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }];\n }, propDecorators: { orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], scrolledIndexChange: [{\n type: Output\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn\n ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode\n ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false,\n },\n index,\n };\n }\n}\nCdkVirtualForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: i0.NgZone }];\n }, propDecorators: { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkScrollableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule, declarations: [CdkScrollable], exports: [CdkScrollable] });\nCdkScrollableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n declarations: [CdkScrollable],\n }]\n }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport], imports: [BidiModule, CdkScrollableModule], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport] });\nScrollingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, imports: [[BidiModule, CdkScrollableModule], BidiModule, CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, CdkScrollableModule],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ],\n declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, EventEmitter, forwardRef, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Optional, ContentChild, ViewChild, Input, Output, QueryList, ContentChildren, NgModule } from '@angular/core';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { Subject, of } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkStepHeader {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n /** Focuses the step header. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\nCdkStepHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepHeader, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepHeader, selector: \"[cdkStepHeader]\", host: { attributes: { \"role\": \"tab\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepHeader, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepHeader]',\n host: {\n 'role': 'tab',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkStepLabel {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkStepLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepLabel, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepLabel, selector: \"[cdkStepLabel]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepLabel, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepLabel]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each stepper component. */\nlet nextId = 0;\n/** Change event emitted on selection changes. */\nclass StepperSelectionEvent {\n}\n/** Enum to represent the different states of the steps. */\nconst STEP_STATE = {\n NUMBER: 'number',\n EDIT: 'edit',\n DONE: 'done',\n ERROR: 'error',\n};\n/** InjectionToken that can be used to specify the global stepper options. */\nconst STEPPER_GLOBAL_OPTIONS = new InjectionToken('STEPPER_GLOBAL_OPTIONS');\nclass CdkStep {\n constructor(_stepper, stepperOptions) {\n this._stepper = _stepper;\n /** Whether user has attempted to move away from the step. */\n this.interacted = false;\n /** Emits when the user has attempted to move away from the step. */\n this.interactedStream = new EventEmitter();\n this._editable = true;\n this._optional = false;\n this._completedOverride = null;\n this._customError = null;\n this._stepperOptions = stepperOptions ? stepperOptions : {};\n this._displayDefaultIndicatorType = this._stepperOptions.displayDefaultIndicatorType !== false;\n }\n /** Whether the user can return to this step once it has been marked as completed. */\n get editable() {\n return this._editable;\n }\n set editable(value) {\n this._editable = coerceBooleanProperty(value);\n }\n /** Whether the completion of step is optional. */\n get optional() {\n return this._optional;\n }\n set optional(value) {\n this._optional = coerceBooleanProperty(value);\n }\n /** Whether step is marked as completed. */\n get completed() {\n return this._completedOverride == null ? this._getDefaultCompleted() : this._completedOverride;\n }\n set completed(value) {\n this._completedOverride = coerceBooleanProperty(value);\n }\n _getDefaultCompleted() {\n return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;\n }\n /** Whether step has an error. */\n get hasError() {\n return this._customError == null ? this._getDefaultError() : this._customError;\n }\n set hasError(value) {\n this._customError = coerceBooleanProperty(value);\n }\n _getDefaultError() {\n return this.stepControl && this.stepControl.invalid && this.interacted;\n }\n /** Selects this step component. */\n select() {\n this._stepper.selected = this;\n }\n /** Resets the step to its initial state. Note that this includes resetting form data. */\n reset() {\n this.interacted = false;\n if (this._completedOverride != null) {\n this._completedOverride = false;\n }\n if (this._customError != null) {\n this._customError = false;\n }\n if (this.stepControl) {\n this.stepControl.reset();\n }\n }\n ngOnChanges() {\n // Since basically all inputs of the MatStep get proxied through the view down to the\n // underlying MatStepHeader, we have to make sure that change detection runs correctly.\n this._stepper._stateChanged();\n }\n _markAsInteracted() {\n if (!this.interacted) {\n this.interacted = true;\n this.interactedStream.emit(this);\n }\n }\n /** Determines whether the error state can be shown. */\n _showError() {\n var _a;\n // We want to show the error state either if the user opted into/out of it using the\n // global options, or if they've explicitly set it through the `hasError` input.\n return (_a = this._stepperOptions.showError) !== null && _a !== void 0 ? _a : this._customError != null;\n }\n}\nCdkStep.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStep, deps: [{ token: forwardRef(() => CdkStepper) }, { token: STEPPER_GLOBAL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkStep.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStep, selector: \"cdk-step\", inputs: { stepControl: \"stepControl\", label: \"label\", errorMessage: \"errorMessage\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], state: \"state\", editable: \"editable\", optional: \"optional\", completed: \"completed\", hasError: \"hasError\" }, outputs: { interactedStream: \"interacted\" }, queries: [{ propertyName: \"stepLabel\", first: true, predicate: CdkStepLabel, descendants: true }], viewQueries: [{ propertyName: \"content\", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: [\"cdkStep\"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStep, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-step',\n exportAs: 'cdkStep',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }], ctorParameters: function () {\n return [{ type: CdkStepper, decorators: [{\n type: Inject,\n args: [forwardRef(() => CdkStepper)]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [STEPPER_GLOBAL_OPTIONS]\n }] }];\n }, propDecorators: { stepLabel: [{\n type: ContentChild,\n args: [CdkStepLabel]\n }], content: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], stepControl: [{\n type: Input\n }], interactedStream: [{\n type: Output,\n args: ['interacted']\n }], label: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], state: [{\n type: Input\n }], editable: [{\n type: Input\n }], optional: [{\n type: Input\n }], completed: [{\n type: Input\n }], hasError: [{\n type: Input\n }] } });\nclass CdkStepper {\n constructor(_dir, _changeDetectorRef, _elementRef, \n /**\n * @deprecated No longer in use, to be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n this.steps = new QueryList();\n /** List of step headers sorted based on their DOM order. */\n this._sortedHeaders = new QueryList();\n this._linear = false;\n this._selectedIndex = 0;\n /** Event emitted when the selected step has changed. */\n this.selectionChange = new EventEmitter();\n /**\n * @deprecated To be turned into a private property. Use `orientation` instead.\n * @breaking-change 13.0.0\n */\n this._orientation = 'horizontal';\n this._groupId = nextId++;\n }\n /** Whether the validity of previous steps should be checked or not. */\n get linear() {\n return this._linear;\n }\n set linear(value) {\n this._linear = coerceBooleanProperty(value);\n }\n /** The index of the selected step. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(index) {\n var _a;\n const newIndex = coerceNumberProperty(index);\n if (this.steps && this._steps) {\n // Ensure that the index can't be out of bounds.\n if (!this._isValidIndex(newIndex) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.');\n }\n (_a = this.selected) === null || _a === void 0 ? void 0 : _a._markAsInteracted();\n if (this._selectedIndex !== newIndex &&\n !this._anyControlsInvalidOrPending(newIndex) &&\n (newIndex >= this._selectedIndex || this.steps.toArray()[newIndex].editable)) {\n this._updateSelectedItemIndex(newIndex);\n }\n }\n else {\n this._selectedIndex = newIndex;\n }\n }\n /** The step that is selected. */\n get selected() {\n return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;\n }\n set selected(step) {\n this.selectedIndex = step && this.steps ? this.steps.toArray().indexOf(step) : -1;\n }\n /** Orientation of the stepper. */\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n // This is a protected method so that `MatSteppter` can hook into it.\n this._orientation = value;\n if (this._keyManager) {\n this._keyManager.withVerticalOrientation(value === 'vertical');\n }\n }\n ngAfterContentInit() {\n this._steps.changes\n .pipe(startWith(this._steps), takeUntil(this._destroyed))\n .subscribe((steps) => {\n this.steps.reset(steps.filter(step => step._stepper === this));\n this.steps.notifyOnChanges();\n });\n }\n ngAfterViewInit() {\n // If the step headers are defined outside of the `ngFor` that renders the steps, like in the\n // Material stepper, they won't appear in the `QueryList` in the same order as they're\n // rendered in the DOM which will lead to incorrect keyboard navigation. We need to sort\n // them manually to ensure that they're correct. Alternatively, we can change the Material\n // template to inline the headers in the `ngFor`, but that'll result in a lot of\n // code duplciation. See #23539.\n this._stepHeader.changes\n .pipe(startWith(this._stepHeader), takeUntil(this._destroyed))\n .subscribe((headers) => {\n this._sortedHeaders.reset(headers.toArray().sort((a, b) => {\n const documentPosition = a._elementRef.nativeElement.compareDocumentPosition(b._elementRef.nativeElement);\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n }));\n this._sortedHeaders.notifyOnChanges();\n });\n // Note that while the step headers are content children by default, any components that\n // extend this one might have them as view children. We initialize the keyboard handling in\n // AfterViewInit so we're guaranteed for both view and content children to be defined.\n this._keyManager = new FocusKeyManager(this._sortedHeaders)\n .withWrap()\n .withHomeAndEnd()\n .withVerticalOrientation(this._orientation === 'vertical');\n (this._dir ? this._dir.change : of())\n .pipe(startWith(this._layoutDirection()), takeUntil(this._destroyed))\n .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n this._keyManager.updateActiveItem(this._selectedIndex);\n // No need to `takeUntil` here, because we're the ones destroying `steps`.\n this.steps.changes.subscribe(() => {\n if (!this.selected) {\n this._selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n });\n // The logic which asserts that the selected index is within bounds doesn't run before the\n // steps are initialized, because we don't how many steps there are yet so we may have an\n // invalid index on init. If that's the case, auto-correct to the default so we don't throw.\n if (!this._isValidIndex(this._selectedIndex)) {\n this._selectedIndex = 0;\n }\n }\n ngOnDestroy() {\n this.steps.destroy();\n this._sortedHeaders.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Selects and focuses the next step in list. */\n next() {\n this.selectedIndex = Math.min(this._selectedIndex + 1, this.steps.length - 1);\n }\n /** Selects and focuses the previous step in list. */\n previous() {\n this.selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n /** Resets the stepper to its initial state. Note that this includes clearing form data. */\n reset() {\n this._updateSelectedItemIndex(0);\n this.steps.forEach(step => step.reset());\n this._stateChanged();\n }\n /** Returns a unique id for each step label element. */\n _getStepLabelId(i) {\n return `cdk-step-label-${this._groupId}-${i}`;\n }\n /** Returns unique id for each step content element. */\n _getStepContentId(i) {\n return `cdk-step-content-${this._groupId}-${i}`;\n }\n /** Marks the component to be change detected. */\n _stateChanged() {\n this._changeDetectorRef.markForCheck();\n }\n /** Returns position state of the step with the given index. */\n _getAnimationDirection(index) {\n const position = index - this._selectedIndex;\n if (position < 0) {\n return this._layoutDirection() === 'rtl' ? 'next' : 'previous';\n }\n else if (position > 0) {\n return this._layoutDirection() === 'rtl' ? 'previous' : 'next';\n }\n return 'current';\n }\n /** Returns the type of icon to be displayed. */\n _getIndicatorType(index, state = STEP_STATE.NUMBER) {\n const step = this.steps.toArray()[index];\n const isCurrentStep = this._isCurrentStep(index);\n return step._displayDefaultIndicatorType\n ? this._getDefaultIndicatorLogic(step, isCurrentStep)\n : this._getGuidelineLogic(step, isCurrentStep, state);\n }\n _getDefaultIndicatorLogic(step, isCurrentStep) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n }\n else if (!step.completed || isCurrentStep) {\n return STEP_STATE.NUMBER;\n }\n else {\n return step.editable ? STEP_STATE.EDIT : STEP_STATE.DONE;\n }\n }\n _getGuidelineLogic(step, isCurrentStep, state = STEP_STATE.NUMBER) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n }\n else if (step.completed && !isCurrentStep) {\n return STEP_STATE.DONE;\n }\n else if (step.completed && isCurrentStep) {\n return state;\n }\n else if (step.editable && isCurrentStep) {\n return STEP_STATE.EDIT;\n }\n else {\n return state;\n }\n }\n _isCurrentStep(index) {\n return this._selectedIndex === index;\n }\n /** Returns the index of the currently-focused step header. */\n _getFocusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : this._selectedIndex;\n }\n _updateSelectedItemIndex(newIndex) {\n const stepsArray = this.steps.toArray();\n this.selectionChange.emit({\n selectedIndex: newIndex,\n previouslySelectedIndex: this._selectedIndex,\n selectedStep: stepsArray[newIndex],\n previouslySelectedStep: stepsArray[this._selectedIndex],\n });\n // If focus is inside the stepper, move it to the next header, otherwise it may become\n // lost when the active step content is hidden. We can't be more granular with the check\n // (e.g. checking whether focus is inside the active step), because we don't have a\n // reference to the elements that are rendering out the content.\n this._containsFocus()\n ? this._keyManager.setActiveItem(newIndex)\n : this._keyManager.updateActiveItem(newIndex);\n this._selectedIndex = newIndex;\n this._stateChanged();\n }\n _onKeydown(event) {\n const hasModifier = hasModifierKey(event);\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n if (manager.activeItemIndex != null &&\n !hasModifier &&\n (keyCode === SPACE || keyCode === ENTER)) {\n this.selectedIndex = manager.activeItemIndex;\n event.preventDefault();\n }\n else {\n manager.onKeydown(event);\n }\n }\n _anyControlsInvalidOrPending(index) {\n if (this._linear && index >= 0) {\n return this.steps\n .toArray()\n .slice(0, index)\n .some(step => {\n const control = step.stepControl;\n const isIncomplete = control\n ? control.invalid || control.pending || !step.interacted\n : !step.completed;\n return isIncomplete && !step.optional && !step._completedOverride;\n });\n }\n return false;\n }\n _layoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Checks whether the stepper contains the focused element. */\n _containsFocus() {\n const stepperElement = this._elementRef.nativeElement;\n const focusedElement = _getFocusedElementPierceShadowDom();\n return stepperElement === focusedElement || stepperElement.contains(focusedElement);\n }\n /** Checks whether the passed-in index is a valid step index. */\n _isValidIndex(index) {\n return index > -1 && (!this.steps || index < this.steps.length);\n }\n}\nCdkStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepper, deps: [{ token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepper, selector: \"[cdkStepper]\", inputs: { linear: \"linear\", selectedIndex: \"selectedIndex\", selected: \"selected\", orientation: \"orientation\" }, outputs: { selectionChange: \"selectionChange\" }, queries: [{ propertyName: \"_steps\", predicate: CdkStep, descendants: true }, { propertyName: \"_stepHeader\", predicate: CdkStepHeader, descendants: true }], exportAs: [\"cdkStepper\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepper, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepper]',\n exportAs: 'cdkStepper',\n }]\n }], ctorParameters: function () {\n return [{ type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { _steps: [{\n type: ContentChildren,\n args: [CdkStep, { descendants: true }]\n }], _stepHeader: [{\n type: ContentChildren,\n args: [CdkStepHeader, { descendants: true }]\n }], linear: [{\n type: Input\n }], selectedIndex: [{\n type: Input\n }], selected: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], orientation: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Button that moves to the next step in a stepper workflow. */\nclass CdkStepperNext {\n constructor(_stepper) {\n this._stepper = _stepper;\n /** Type of the next button. Defaults to \"submit\" if not specified. */\n this.type = 'submit';\n }\n}\nCdkStepperNext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperNext, deps: [{ token: CdkStepper }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepperNext.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepperNext, selector: \"button[cdkStepperNext]\", inputs: { type: \"type\" }, host: { listeners: { \"click\": \"_stepper.next()\" }, properties: { \"type\": \"type\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperNext, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[cdkStepperNext]',\n host: {\n '[type]': 'type',\n '(click)': '_stepper.next()',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkStepper }]; }, propDecorators: { type: [{\n type: Input\n }] } });\n/** Button that moves to the previous step in a stepper workflow. */\nclass CdkStepperPrevious {\n constructor(_stepper) {\n this._stepper = _stepper;\n /** Type of the previous button. Defaults to \"button\" if not specified. */\n this.type = 'button';\n }\n}\nCdkStepperPrevious.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperPrevious, deps: [{ token: CdkStepper }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepperPrevious.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepperPrevious, selector: \"button[cdkStepperPrevious]\", inputs: { type: \"type\" }, host: { listeners: { \"click\": \"_stepper.previous()\" }, properties: { \"type\": \"type\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperPrevious, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[cdkStepperPrevious]',\n host: {\n '[type]': 'type',\n '(click)': '_stepper.previous()',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkStepper }]; }, propDecorators: { type: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkStepperModule {\n}\nCdkStepperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkStepperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, declarations: [CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious], imports: [BidiModule], exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious] });\nCdkStepperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, imports: [[BidiModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule],\n exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious],\n declarations: [\n CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkStep, CdkStepHeader, CdkStepLabel, CdkStepper, CdkStepperModule, CdkStepperNext, CdkStepperPrevious, STEPPER_GLOBAL_OPTIONS, STEP_STATE, StepperSelectionEvent };\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, isDataSource, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nexport { DataSource } from '@angular/cdk/collections';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, Input, ContentChild, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, EmbeddedViewRef, EventEmitter, NgZone, Attribute, SkipSelf, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { Subject, from, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/bidi';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n this._hasStickyChanged = false;\n }\n /** Whether sticky positioning should be applied. */\n get sticky() {\n return this._sticky;\n }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass CdkCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkCellDef, selector: \"[cdkCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass CdkHeaderCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkHeaderCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass CdkFooterCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterCellDef, selector: \"[cdkFooterCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkFooterCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n// Boilerplate for applying mixins to CdkColumnDef.\n/** @docs-private */\nclass CdkColumnDefBase {\n}\nconst _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nclass CdkColumnDef extends _CdkColumnDefBase {\n constructor(_table) {\n super();\n this._table = _table;\n this._stickyEnd = false;\n }\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(v) {\n const prevValue = this._stickyEnd;\n this._stickyEnd = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._stickyEnd;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateColumnCssClassName();\n }\n }\n}\nCdkColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkColumnDef, deps: [{ token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: { sticky: \"sticky\", name: [\"cdkColumnDef\", \"name\"], stickyEnd: \"stickyEnd\" }, providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }], queries: [{ propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true }, { propertyName: \"footerCell\", first: true, predicate: CdkFooterCellDef, descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkColumnDef]',\n inputs: ['sticky'],\n providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }],\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n }, propDecorators: { name: [{\n type: Input,\n args: ['cdkColumnDef']\n }], stickyEnd: [{\n type: Input,\n args: ['stickyEnd']\n }], cell: [{\n type: ContentChild,\n args: [CdkCellDef]\n }], headerCell: [{\n type: ContentChild,\n args: [CdkHeaderCellDef]\n }], footerCell: [{\n type: ContentChild,\n args: [CdkFooterCellDef]\n }] } });\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);\n }\n}\n/** Header cell template container that adds the right classes and role. */\nclass CdkHeaderCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n}\nCdkHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"cdk-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-header-cell, th[cdk-header-cell]',\n host: {\n 'class': 'cdk-header-cell',\n 'role': 'columnheader',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Footer cell template container that adds the right classes and role. */\nclass CdkFooterCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n var _a;\n super(columnDef, elementRef);\n if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterCell, selector: \"cdk-footer-cell, td[cdk-footer-cell]\", host: { classAttribute: \"cdk-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n host: {\n 'class': 'cdk-footer-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Cell template container that adds the right classes and role. */\nclass CdkCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n var _a;\n super(columnDef, elementRef);\n if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\", host: { classAttribute: \"cdk-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-cell, td[cdk-cell]',\n host: {\n 'class': 'cdk-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @docs-private\n */\nclass _Schedule {\n constructor() {\n this.tasks = [];\n this.endTasks = [];\n }\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nclass _CoalescedStyleScheduler {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n this._currentSchedule = null;\n this._destroyed = new Subject();\n }\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n /** Prevent any further tasks from running. */\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._getScheduleObservable()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n });\n }\n _getScheduleObservable() {\n // Use onStable when in the context of an ongoing change detection cycle so that we\n // do not accidentally trigger additional cycles.\n return this._ngZone.isStable\n ? from(Promise.resolve(undefined))\n : this._ngZone.onStable.pipe(take(1));\n }\n}\n_CoalescedStyleScheduler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _CoalescedStyleScheduler, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\n_CoalescedStyleScheduler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _CoalescedStyleScheduler });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _CoalescedStyleScheduler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = ``;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nclass BaseRowDef {\n constructor(\n /** @docs-private */ template, _differs) {\n this.template = template;\n this._differs = _differs;\n }\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = (changes['columns'] && changes['columns'].currentValue) || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n }\n else {\n return column.cell.template;\n }\n }\n}\nBaseRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nBaseRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: BaseRowDef, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseRowDef, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }]; } });\n// Boilerplate for applying mixins to CdkHeaderRowDef.\n/** @docs-private */\nclass CdkHeaderRowDefBase extends BaseRowDef {\n}\nconst _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass CdkHeaderRowDef extends _CdkHeaderRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderRowDef, selector: \"[cdkHeaderRowDef]\", inputs: { columns: [\"cdkHeaderRowDef\", \"columns\"], sticky: [\"cdkHeaderRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderRowDef]',\n inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n// Boilerplate for applying mixins to CdkFooterRowDef.\n/** @docs-private */\nclass CdkFooterRowDefBase extends BaseRowDef {\n}\nconst _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass CdkFooterRowDef extends _CdkFooterRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterRowDef, selector: \"[cdkFooterRowDef]\", inputs: { columns: [\"cdkFooterRowDef\", \"columns\"], sticky: [\"cdkFooterRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkFooterRowDef]',\n inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass CdkRowDef extends BaseRowDef {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n}\nCdkRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkRowDef, selector: \"[cdkRowDef]\", inputs: { columns: [\"cdkRowDefColumns\", \"columns\"], when: [\"cdkRowDefWhen\", \"when\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkRowDef]',\n inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nclass CdkCellOutlet {\n constructor(_viewContainer) {\n this._viewContainer = _viewContainer;\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n}\n/**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\nCdkCellOutlet.mostRecentCellOutlet = null;\nCdkCellOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass CdkHeaderRow {\n}\nCdkHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderRow, selector: \"cdk-header-row, tr[cdk-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-header-row\" }, ngImport: i0, template: \"\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-header-row, tr[cdk-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass CdkFooterRow {\n}\nCdkFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterRow, selector: \"cdk-footer-row, tr[cdk-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-footer-row\" }, ngImport: i0, template: \"\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-footer-row, tr[cdk-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass CdkRow {\n}\nCdkRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkRow, selector: \"cdk-row, tr[cdk-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-row\" }, ngImport: i0, template: \"\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-row, tr[cdk-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass CdkNoDataRow {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._contentClassName = 'cdk-no-data-row';\n }\n}\nCdkNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkNoDataRow, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkNoDataRow, selector: \"ng-template[cdkNoDataRow]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkNoDataRow]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `
    ` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._cachedCellWidths = [];\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`,\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row);\n for (let i = 0; i < row.children.length; i++) {\n elementsToClear.push(row.children[i]);\n }\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {\n if (!rows.length ||\n !this._isBrowser ||\n !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({ sizes: [] });\n this._positionListener.stickyEndColumnsUpdated({ sizes: [] });\n }\n return;\n }\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1\n ? []\n : cellWidths\n .slice(0, lastStickyStart + 1)\n .map((width, index) => (stickyStartStates[index] ? width : null)),\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1\n ? []\n : cellWidths\n .slice(firstStickyEnd)\n .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))\n .reverse(),\n });\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n stickyOffsets[rowIndex] = stickyOffset;\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable\n ? Array.from(row.children)\n : [row];\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n const borderedRowIndex = states.lastIndexOf(true);\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n var _a, _b;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n (_a = this._positionListener) === null || _a === void 0 ? void 0 : _a.stickyHeaderRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n else {\n (_b = this._positionListener) === null || _b === void 0 ? void 0 : _b.stickyFooterRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n const tfoot = tableElement.querySelector('tfoot');\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n }\n else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n });\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n }\n else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1,\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n let cell = firstRowCells[i];\n cellWidths.push(cell.getBoundingClientRect().width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to find an unexisting column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` +\n `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' +\n 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = new InjectionToken('CDK_SPL');\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass CdkRecycleRows {\n}\nCdkRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkRecycleRows, selector: \"cdk-table[recycleRows], table[cdk-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nclass DataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: DataRowOutlet, selector: \"[rowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[rowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nclass HeaderRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nHeaderRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HeaderRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HeaderRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[headerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nclass FooterRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nFooterRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FooterRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nFooterRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FooterRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[footerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nclass NoDataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nNoDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoDataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNoDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoDataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[noDataRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n \n \n \n \n \n \n`;\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * @docs-private\n */\nclass RowViewRef extends EmbeddedViewRef {\n}\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nclass CdkTable {\n constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform, _viewRepeater, _coalescedStyleScheduler, _viewportRuler, \n /**\n * @deprecated `_stickyPositioningListener` parameter to become required.\n * @breaking-change 13.0.0\n */\n _stickyPositioningListener, \n /**\n * @deprecated `_ngZone` parameter to become required.\n * @breaking-change 14.0.0\n */\n _ngZone) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._platform = _platform;\n this._viewRepeater = _viewRepeater;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._viewportRuler = _viewportRuler;\n this._stickyPositioningListener = _stickyPositioningListener;\n this._ngZone = _ngZone;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n this._columnDefsByName = new Map();\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n this._customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n this._customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n this._customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n this._customFooterRowDefs = new Set();\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n this._stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n this._forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef` object. With the two keys, the cache points to a `RenderRow` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n this._cachedRenderRowsMap = new Map();\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overriden by\n * table subclasses.\n */\n this.stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add positon: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n this.needsPositionStickyOnElement = true;\n /** Whether the no data row is currently showing anything. */\n this._isShowingNoDataRow = false;\n this._multiTemplateDataRows = false;\n this._fixedLayout = false;\n /**\n * Emits when the table completes rendering a set of data rows based on the latest data from the\n * data source, even if the set of rows is empty.\n */\n this.contentChanged = new EventEmitter();\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n if (!role) {\n this._elementRef.nativeElement.setAttribute('role', 'table');\n }\n this._document = _document;\n this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n }\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(v) {\n this._multiTemplateDataRows = coerceBooleanProperty(v);\n // In Ivy if this value is set via a static attribute (e.g.
    ),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(v) {\n this._fixedLayout = coerceBooleanProperty(v);\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n ngOnInit() {\n this._setupStickyStyler();\n if (this._isNativeHtmlTable) {\n this._applyNativeTableSections();\n }\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n ngAfterContentChecked() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length &&\n !this._footerRowDefs.length &&\n !this._rowDefs.length &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n ngOnDestroy() {\n [\n this._rowOutlet.viewContainer,\n this._headerRowOutlet.viewContainer,\n this._footerRowOutlet.viewContainer,\n this._cachedRenderRowsMap,\n this._customColumnDefs,\n this._customRowDefs,\n this._customHeaderRowDefs,\n this._customFooterRowDefs,\n this._columnDefsByName,\n ].forEach(def => {\n def.clear();\n });\n this._headerRowDefs = [];\n this._footerRowDefs = [];\n this._defaultRowDef = null;\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n this.contentChanged.next();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), record => record.item.data, (change) => {\n if (change.operation === 1 /* INSERTED */ && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange((record) => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n // Allow the new row data to render before measuring it.\n // @breaking-change 14.0.0 Remove undefined check once _ngZone is required.\n if (this._ngZone && NgZone.isInAngularZone()) {\n this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {\n this.updateStickyColumnStyles();\n });\n }\n else {\n this.updateStickyColumnStyles();\n }\n this.contentChanged.next();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const thead = tableElement.querySelector('thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n }\n else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n }\n else {\n return { data, rowDef, dataIndex };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows &&\n defaultRowDefs.length > 1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => acc || !!def.getColumnsDiff();\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n this._rowOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n }\n else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n }\n else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n }\n else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n return {\n templateRef: rowDef.template,\n context,\n index,\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n }\n else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */\n _applyNativeTableSections() {\n const documentFragment = this._document.createDocumentFragment();\n const sections = [\n { tag: 'thead', outlets: [this._headerRowOutlet] },\n { tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet] },\n { tag: 'tfoot', outlets: [this._footerRowOutlet] },\n ];\n for (const section of sections) {\n const element = this._document.createElement(section.tag);\n element.setAttribute('role', 'rowgroup');\n for (const outlet of section.outlets) {\n element.appendChild(outlet.elementRef.nativeElement);\n }\n documentFragment.appendChild(element);\n }\n // Use a DocumentFragment so we don't hit the DOM on each iteration.\n this._elementRef.nativeElement.appendChild(documentFragment);\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener);\n (this._dir ? this._dir.change : of())\n .pipe(takeUntil(this._onDestroy))\n .subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (!noDataRow) {\n return;\n }\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow === this._isShowingNoDataRow) {\n return;\n }\n const container = this._noDataRowOutlet.viewContainer;\n if (shouldShow) {\n const view = container.createEmbeddedView(noDataRow.templateRef);\n const rootNode = view.rootNodes[0];\n // Only add the attributes if we have a single root node since it's hard\n // to figure out which one to add it to when there are multiple.\n if (view.rootNodes.length === 1 && (rootNode === null || rootNode === void 0 ? void 0 : rootNode.nodeType) === this._document.ELEMENT_NODE) {\n rootNode.setAttribute('role', 'row');\n rootNode.classList.add(noDataRow._contentClassName);\n }\n }\n else {\n container.clear();\n }\n this._isShowingNoDataRow = shouldShow;\n }\n}\nCdkTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTable, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: 'role', attribute: true }, { token: i1.Directionality, optional: true }, { token: DOCUMENT }, { token: i2.Platform }, { token: _VIEW_REPEATER_STRATEGY }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i3.ViewportRuler }, { token: STICKY_POSITIONING_LISTENER, optional: true, skipSelf: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTable, selector: \"cdk-table, table[cdk-table]\", inputs: { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: \"multiTemplateDataRows\", fixedLayout: \"fixedLayout\" }, outputs: { contentChanged: \"contentChanged\" }, host: { properties: { \"class.cdk-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"cdk-table\" }, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], queries: [{ propertyName: \"_noDataRow\", first: true, predicate: CdkNoDataRow, descendants: true }, { propertyName: \"_contentColumnDefs\", predicate: CdkColumnDef, descendants: true }, { propertyName: \"_contentRowDefs\", predicate: CdkRowDef, descendants: true }, { propertyName: \"_contentHeaderRowDefs\", predicate: CdkHeaderRowDef, descendants: true }, { propertyName: \"_contentFooterRowDefs\", predicate: CdkFooterRowDef, descendants: true }], viewQueries: [{ propertyName: \"_rowOutlet\", first: true, predicate: DataRowOutlet, descendants: true, static: true }, { propertyName: \"_headerRowOutlet\", first: true, predicate: HeaderRowOutlet, descendants: true, static: true }, { propertyName: \"_footerRowOutlet\", first: true, predicate: FooterRowOutlet, descendants: true, static: true }, { propertyName: \"_noDataRowOutlet\", first: true, predicate: NoDataRowOutlet, descendants: true, static: true }], exportAs: [\"cdkTable\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n\", isInline: true, styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"], directives: [{ type: HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { type: DataRowOutlet, selector: \"[rowOutlet]\" }, { type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { type: FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTable, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-table, table[cdk-table]', exportAs: 'cdkTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'cdk-table',\n '[class.cdk-table-fixed-layout]': 'fixedLayout',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: _CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [STICKY_POSITIONING_LISTENER]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { trackBy: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], multiTemplateDataRows: [{\n type: Input\n }], fixedLayout: [{\n type: Input\n }], contentChanged: [{\n type: Output\n }], _rowOutlet: [{\n type: ViewChild,\n args: [DataRowOutlet, { static: true }]\n }], _headerRowOutlet: [{\n type: ViewChild,\n args: [HeaderRowOutlet, { static: true }]\n }], _footerRowOutlet: [{\n type: ViewChild,\n args: [FooterRowOutlet, { static: true }]\n }], _noDataRowOutlet: [{\n type: ViewChild,\n args: [NoDataRowOutlet, { static: true }]\n }], _contentColumnDefs: [{\n type: ContentChildren,\n args: [CdkColumnDef, { descendants: true }]\n }], _contentRowDefs: [{\n type: ContentChildren,\n args: [CdkRowDef, { descendants: true }]\n }], _contentHeaderRowDefs: [{\n type: ContentChildren,\n args: [CdkHeaderRowDef, {\n descendants: true,\n }]\n }], _contentFooterRowDefs: [{\n type: ContentChildren,\n args: [CdkFooterRowDef, {\n descendants: true,\n }]\n }], _noDataRow: [{\n type: ContentChild,\n args: [CdkNoDataRow]\n }] } });\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
    `).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass CdkTextColumn {\n constructor(\n // `CdkTextColumn` is always requiring a table, but we just assert it manually\n // for better error reporting.\n // tslint:disable-next-line: lightweight-tokens\n _table, _options) {\n this._table = _table;\n this._options = _options;\n /** Alignment of the cell values. */\n this.justify = 'start';\n this._options = _options || {};\n }\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n}\nCdkTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextColumn, deps: [{ token: CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTextColumn, selector: \"cdk-text-column\", inputs: { name: \"name\", headerText: \"headerText\", dataAccessor: \"dataAccessor\", justify: \"justify\" }, viewQueries: [{ propertyName: \"columnDef\", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: [\"sticky\", \"cdkColumnDef\", \"stickyEnd\"] }, { type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\" }, { type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\" }, { type: CdkCellDef, selector: \"[cdkCellDef]\" }, { type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n }]\n }], ctorParameters: function () {\n return [{ type: CdkTable, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TEXT_COLUMN_OPTIONS]\n }] }];\n }, propDecorators: { name: [{\n type: Input\n }], headerText: [{\n type: Input\n }], dataAccessor: [{\n type: Input\n }], justify: [{\n type: Input\n }], columnDef: [{\n type: ViewChild,\n args: [CdkColumnDef, { static: true }]\n }], cell: [{\n type: ViewChild,\n args: [CdkCellDef, { static: true }]\n }], headerCell: [{\n type: ViewChild,\n args: [CdkHeaderCellDef, { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EXPORTED_DECLARATIONS = [\n CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet,\n];\nclass CdkTableModule {\n}\nCdkTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, declarations: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet], imports: [ScrollingModule], exports: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet] });\nCdkTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, imports: [[ScrollingModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n imports: [ScrollingModule],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRecycleRows, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, NoDataRowOutlet, STICKY_DIRECTIONS, STICKY_POSITIONING_LISTENER, StickyStyler, TEXT_COLUMN_OPTIONS, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, _Schedule, mixinHasStickyInput };\n","import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n constructor(_platform, _ngZone) {\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._monitoredElements = new Map();\n }\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n return info.subject;\n }\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n }\n else if (event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n }\n });\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n return result;\n }\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n}\nAutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n constructor(_elementRef, _autofillMonitor) {\n this._elementRef = _elementRef;\n this._autofillMonitor = _autofillMonitor;\n /** Emits when the autofill state of the element changes. */\n this.cdkAutofill = new EventEmitter();\n }\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n}\nCdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAutofill, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n constructor(_elementRef, _platform, _ngZone, \n /** @breaking-change 11.0.0 make document required */\n document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._destroyed = new Subject();\n this._enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n this._previousMinRows = -1;\n this._isViewInited = false;\n /** Handles `focus` and `blur` events. */\n this._handleFocusEvent = (event) => {\n this._hasFocus = event.type === 'focus';\n };\n this._document = document;\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Minimum amount of rows in the textarea. */\n get minRows() {\n return this._minRows;\n }\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n get maxRows() {\n return this._maxRows;\n }\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n value = coerceBooleanProperty(value);\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n if (value) {\n this._textareaElement.setAttribute('placeholder', value);\n }\n else {\n this._textareaElement.removeAttribute('placeholder');\n }\n this._cacheTextareaPlaceholderHeight();\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n }\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this._textareaElement.parentNode.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n return scrollHeight;\n }\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n }\n else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n _scrollToCaretPosition(textarea) {\n const { selectionStart, selectionEnd } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n}\nCdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }], maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }], enabled: [{\n type: Input,\n args: ['cdkTextareaAutosize']\n }], placeholder: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass TextFieldModule {\n}\nTextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], exports: [CdkAutofill, CdkTextareaAutosize] });\nTextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkAutofill, CdkTextareaAutosize],\n exports: [CdkAutofill, CdkTextareaAutosize],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n","/**\n * @license Angular v13.3.11\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, NgModuleRef, ComponentFactoryResolver, Host, ɵRuntimeError, Attribute, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: provideLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }] });\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PathLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(platformStrategy, platformLocation) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._platformLocation.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._platformStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._platformStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformStrategy).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }, { token: PlatformLocation }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }, { type: PlatformLocation }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy), ɵɵinject(PlatformLocation));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, \"р.\", 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RUR\": [undefined, \"р.\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\nNgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\n }] });\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgClass, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/structural-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @nodoc\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch (_a) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const viewContainer = this._viewContainer;\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* PARENT_NG_SWITCH_NOT_FOUND */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'` :\n '';\n return new ɵRuntimeError(2100 /* INVALID_PIPE_ARGUMENT */, errorMessage);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n onDestroy(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n onDestroy(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_TIMEZONE`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n var _a;\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, (_a = timezone !== null && timezone !== void 0 ? timezone : this.defaultTimezone) !== null && _a !== void 0 ? _a : undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\n } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }];\n } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CommonModule, declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('13.3.11');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\n // @see https://html.spec.whatwg.org/#get-the-focusable-area\n // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n // @see https://html.spec.whatwg.org/#focusable-area\n elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch (_a) {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch (_a) {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v13.3.11\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => { var _a; return (_a = STANDARD_ENCODING_REPLACEMENTS[t]) !== null && _a !== void 0 ? _a : s; });\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n var _a;\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = (_a = update.context) !== null && _a !== void 0 ? _a : this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending
    \n {{headerText}}\n \n {{dataAccessor(data, name)}}\n \n {{headerText}}\n \n {{dataAccessor(data, name)}}\n